Kafka를 사용한 이유
이번 프로젝트는 competition-service와 asset-service가 나누어진 구조였다.
competition-service는 대회 관련 기능을 담당하고, asset-service는 계좌와 보유 주식 관련 기능을 담당한다.
문제는 대회에서 사용자가 참가했을 때 asset-service에서도 그 사실을 알아야 한다는 점이었다.
사용자가 대회에 참가하면 해당 사용자에게 대회용 계좌를 만들어줘야 하기 때문이다.
이때 competition-service가 asset-service를 직접 호출할 수도 있지만, 그렇게 하면 두 서비스가 강하게 연결된다.
그래서 Kafka를 사용해 이벤트를 주고받는 방식으로 처리했다.
Kafka 이벤트 방식
전체 흐름은 다음과 같다.
competition-service에서 대회 참가 이벤트가 발생한다.
이 이벤트가 Kafka Topic으로 발행된다.
asset-service는 해당 Topic을 구독하고 있다가 이벤트를 수신한다.
이벤트를 받은 asset-service는 사용자에게 대회용 계좌를 생성한다.
즉, competition-service는 “대회 참가가 발생했다”는 사실만 알리고, asset-service는 그 이벤트를 받아 필요한 작업을 처리한다.
Topic 설정
Kafka에서는 메시지를 구분하기 위해 Topic을 사용한다.
이번 프로젝트에서는 Topic 이름을 application.yml에서 관리했다.
예를 들어 대회 참가 이벤트는 competition.registered Topic을 사용하고, asset-service에서 계산한 총 자산 정보는 asset.total-calculated Topic을 사용했다.
Topic 이름을 코드에 직접 작성하지 않고 설정 파일에서 관리하면, 나중에 Topic 이름이 바뀌어도 수정하기 쉽다.
'Project' 카테고리의 다른 글
| 대회 종료 시 최종 자산 정산 고도화 (0) | 2026.05.08 |
|---|---|
| Kafka 역직렬화 에러 해결하기 (0) | 2026.05.04 |
| 모의 주식 대회 프로젝트에서 잘못된 상태 판단 로직을 수정한 과정 (0) | 2026.04.29 |
| 주식 대회 정산 시 가격 조회 캐싱이 필요한가? (0) | 2026.04.28 |
| 테이블 필요성에 대한 설계 고민과 소통 (0) | 2026.04.20 |