본문으로 이동
토스증권 Apache Kafka 데이터센터 이중화 구성 #1
문서

토스증권 Apache Kafka 데이터센터 이중화 구성 #1

강병수 · 토스 · 토스 기술 블로그

원본 보기

소개

토스증권은 데이터센터 장애 상황에도 유저에게 정상적으로 서비스를 제공하기 위해 대부분의 시스템을 이중화했습니다. Kafka 이중화 구성에 대한 개요를 소개드려요.

AI 핵심 요약

데이터센터 장애에도 서비스를 유지하려면 Active-Active로 운영되는 서비스 서버뿐 아니라 MSA의 메시지 브로커인 Kafka도 이중화해야 했다. 토스증권은 Active-Active와 Stretched Cluster를 가용성, 성능, 운영 부담 기준으로 비교했고, 네트워크 단절 시 Split-brain과 요청 지연을 피하기 위해 독립된 두 Kafka 클러스터를 쓰는 Active-Active를 선택했다. 서비스 개발자의 추가 부담을 줄이도록 양쪽 클러스터의 토픽명을 같게 하고, Producer는 Split DNS로 지역 클러스터에 연결하며 Consumer는 GSLB로 한쪽 클러스터에서만 소비하게 구성했다. 이 구조의 운영 과제인 양방향 데이터 미러링과 Consumer Group Offset 동기화는 팀이 직접 개발했으며, 후속 글에서 구현을 다룬다.

  • Active-Active는 클러스터 간 데이터 미러링과 Consumer Group Offset 동기화가 핵심 운영 과제다.
  • Stretched Cluster는 운영이 단순하지만 데이터센터 간 네트워크 지연과 단절 시 Split-brain 위험을 검토해야 한다.
  • 토픽명을 양쪽 클러스터에서 동일하게 유지하면 서비스 개발자가 배포 데이터센터를 의식하지 않고 Kafka를 사용할 수 있다.
  • Producer는 Split DNS로 지역 클러스터에 쓰고, Consumer는 GSLB로 Active 클러스터 하나에서만 읽도록 분리할 수 있다.
  • 독립된 Kafka 클러스터 간에는 Offset 값이 다르므로 장애 전환을 위해 Offset Sync가 필요하다.