토스증권 Apache Kafka 데이터센터 이중화 구성 #2: 데이터 미러링
송지수 · 토스 · 토스 기술 블로그
소개
토스증권은 현재 Active-Active 구성으로 Kafka를 운영하고 있는데요. 오늘은 Active-Active를 유지하기 위해 필요한 양방향 데이터 미러링에 대해 소개하려고 합니다.
AI 핵심 요약
토스증권은 데이터센터 간 Active-Active Kafka를 운영하면서, MirrorMaker2가 복제 토픽에 클러스터 접두사를 붙이는 점 때문에 사용자에게 동일한 토픽명을 제공하기 어려웠습니다. 이를 해결하기 위해 Kafka Connect Sink Connector 기반의 자체 미러링 도구를 만들고, 메시지 헤더의 원천 데이터센터 정보로 재복제 루프를 막았으며 DLQ와 재처리 시스템으로 실패 메시지를 관리했습니다. 수천 개 잡의 관측성을 위해 커스텀 메트릭 리포터로 지표를 Kafka에 전송하고 ClickHouse에 장기 저장했으며, 대규모 단일 Connect 클러스터는 여러 클러스터로 분리해 Task 배분과 운영 안정성을 개선했습니다. 그 결과 1,000개가 넘는 토픽의 미러링을 안정적으로 운영하고, 장기 추이 분석과 이상 징후 확인이 가능한 구조를 갖췄습니다.
- 동일한 토픽명으로 양방향 복제할 때는 메시지 헤더에 원천 데이터센터 정보를 기록해 재복제 루프를 차단할 수 있습니다.
- Kafka Connect의 DLQ에 실패 메시지와 토픽·파티션·오프셋·예외 정보를 보관하고, 별도 재처리 경로를 마련하면 복구 가능성을 높일 수 있습니다.
- Prometheus의 보존 기간과 PromQL 제약이 분석에 맞지 않는다면, 커스텀 메트릭 리포터로 Kafka에 메트릭을 모은 뒤 ClickHouse에서 장기 분석하는 방식을 고려할 수 있습니다.
- 토픽별 Connector를 운영하더라도 단일 Connect 클러스터에 작업이 과도하게 몰리면, 여러 클러스터로 나누고 Task를 조정해 운영 부담을 분산할 수 있습니다.
비슷한 학습 자료
토스ㅣSLASH 23 - Kafka 이중화로 다양한 장애 상황 완벽 대처하기
SLASH · YouTube
토스증권의 수 천개 실시간 데이터 파이프라인 운영방법 #2: MSA 환경 Observability 높이기
· 토스 기술 블로그
토스증권 Apache Kafka 데이터센터 이중화 구성 #3: Offset Sync
김용우 · 토스 기술 블로그
토스증권 Apache Kafka 데이터센터 이중화 구성 #1
강병수 · 토스 기술 블로그
입수는 Datalake로! (feat. Iceberg)
조승완 · 토스 기술 블로그
ksqlDB를 활용한 증권사의 실시간 데이터 처리하기
강병수 · 토스 기술 블로그