목록 보기
금융서비스 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을 사용

다음 읽기

#MSA 주제를 이어서 읽기

금융서비스 MSA 전환기- BFF 와 CircuitBreaker 적용(2편)

MSA 환경에서 BFF로 Frontend에 맞는 데이터 제공 구조를 적용했습니다. 또한 CircuitBreaker와 Resilience4J로 외부 장애 전파를 막고 트래픽을 조절했습니다.

핀다
핀다
아키텍처

댓글 0개

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

댓글을 불러오는 중...