
백엔드
금융서비스 MSA 전환기- 서버 간 비동기 메시지 기반 통신 처리(3편)
두줄요약
대량 트래픽과 긴 지연 API를 처리하기 위해 Kafka, Redis, SSE 기반 비동기 메시지 통신 구조로 전환했습니다.\n동기 의존성을 줄이고 Scale Out 환경에서도 Refresh 결과를 안정적으로 전달하는 설계를 적용했습니다.
핵심 내용
- 금융서비스 MSA 전환 과정에서 대량 트래픽과 긴 API 지연을 처리하기 위해 서버 간 비동기 메시지 기반 통신으로 전환한 사례
- EDA 기반으로 Kafka, Redis, SSE를 조합해 요청 접수, 비동기 처리, 결과 전달, Scale Out 대응을 설계
- Kafka는 서버 간 비동기 Produce/Consume, Redis는 Pub/Sub과 분산 락, SSE는 클라이언트로의 단방향 실시간 응답에 활용
- 동기 통신 의존성을 줄이고, 캐시 응답과 실제 Refresh 응답을 분리해 화면 렌더링 처리 구조를 개선
구조와 흐름
- Client가 SSE 연결로 Refresh 요청을 보내고 자산관리 서버가 중복 호출을 Redis로 확인한 뒤 요청 정보와 Emitter를 저장
- 자산관리 서버가 Kafka로 마이데이터관리 서버에 요청을 전달하고, Worker가 외부 금융사와 통신해 결과를 반환
- 응답은 Kafka로 다시 소비되며 DB와 Redis에 저장되고, Redis Pub/Sub으로 모든 POD에 브로드캐스트해 해당 SSE 연결로 전달
선택 이유
- CircuitBreaker만으로는 내부 서비스 간 긴 지연과 Thread 안정성 문제를 해결하기 어려워 비동기 통신 필요성 대두
- 마이데이터 정보 Refresh 특성상 단방향 이벤트 전달에 적합한 SSE를 선택
- 서버 Scale Out 환경에서 특정 POD의 Emitter 위치를 알 수 없기 때문에 Redis Pub/Sub을 사용
