이벤트 방식으로 바꾸는 프로젝트

jinwook han·2021년 1월 24일
0

사용한 기술: spring webflux, elasticsearch

12월 ~ 1월 중순까지 추천 계산을 이벤트 방식으로 바꾸는 프로젝트를 회사에서 진행했다.

기존에는 추천 로직이 여러 팀에 분산되어 있는 상황이었다.

이 상황은 두 가지 단점이 있었다.
1. 동일한 추천 로직이 여러 시스템에 중복되어 있다. 한 팀이 단독으로 추천 로직을 변경할 수 없다.
2. 데이터 관점에서도 팀이 독립적으로 추천 로직을 계산할 수 없다. 추천할 때마다 외부 데이터를 조회해야 한다.

그래서 해결 방법으로,
1. 한 팀이 주관해서 추천 로직을 담당한다.
2. 추천 로직의 결과를 다른 팀에게 뿌린다.
위 방법들로 개선하기로 하였다.

내가 속한 팀은, 추천 로직을 담당하지 않고 추천 로직의 결과를 수신하기만 하면 된다.
그래서 기존 추천 로직을 제거하고 추천 결과를 이벤트로 받을 수 있게끔 코드를 추가하는 작업을 진행했다.

기존 계산 로직을 제거하고 이벤트 방식으로 계산 결과 데이터만 받는다

추천 로직 제거

추천 로직을 제거했다.

elasticsearch에 추천 결과 필드 추가

이제 추천 로직은 서버가 직접 계산하지 않고, 추천 결과를 이벤트로 받아서 elasticsearch에 저장하는 것이다.
추천 결과라는 새로운 필드를 두었다.

추천 결과 임포팅

elasticsearch에 추천 결과를 하루에 한 번 임포팅하도록 배치 코드를 추가했다.

추천 결과 이벤트 수신

추천 결과를 이벤트로 받아서 elasticsearch에 업데이트할 수 있도록 코드를 추가했다.

추가로 한 일

위 일에 추가하여, 추가 사업적인 요구사항을 구현했다.
추천 로직은 한 팀에서 독점적으로 맡지만,
추천 결과의 보정 작업은 이벤트 수신하는 팀들의 몫이었다.

보정 관련 사업적 요구사항은 매우 변화가 컸다.

더 잘하려면

  • 프로젝트 작업을 더 늦게 시작해도 좋았을 것 같다. 초반에 사업적인 요구사항이 많이 바뀌어서, 작업을 시작할 때 혼란스러웠다.

0개의 댓글