목록 보기
금융서비스 MSA 전환기- 서버 간 비동기 메시지 기반 통신 처리(3편)
백엔드

금융서비스 MSA 전환기- 서버 간 비동기 메시지 기반 통신 처리(3편)

핀다
핀다
2023년 9월 25일

두줄요약

대량 트래픽과 긴 지연 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을 사용

댓글 0

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...