토스증권 Apache Kafka 데이터센터 이중화 구성 #3: Offset Sync
김용우 · 토스 · 토스 기술 블로그
소개
토스증권의 Realtime Data Team은 Active-Active 구성에서 Consumer Offset Sync를 어떻게 하고 있을까요?
AI 핵심 요약
토스증권은 Active-Active Kafka 환경에서 데이터센터 전환 시 오프셋 동기화로 인한 데이터 유실을 막고, 계획된 작업에서는 중복도 없애야 했습니다. MM2는 유실 방지를 위해 오프셋을 보수적으로 변환해 중복이 생길 수 있고, Confluent Replicator의 타임스탬프 방식은 Confluent 전용 기능에 의존해 두 방식 모두 요구사항에 맞지 않았습니다. 이에 100:0 토픽에는 `offsetsForTimes` 기반 타임스탬프 검색을 적용하고 순서가 꼬여 생길 수 있는 중복을 메트릭으로 감지하며, 50:50 토픽에는 메시지 헤더의 원본 오프셋을 참조해 대상 클러스터에서 미러된 레코드만 동기화합니다. 계획된 전환 때는 데이터 유입을 대상 클러스터로 몰아 순서 뒤섞임을 없애고, 데이터가 드문 토픽은 대상 오프셋을 최신 상태로 유지해 동기화 지연을 보완합니다.
- MM2는 OffsetSync 기록 간격 때문에 정확한 변환이 어려울 수 있으며, 유실 방지를 위해 오프셋을 보수적으로 계산해 중복을 감수합니다.
- Kafka의 offsetsForTimes는 지정한 시각 이상인 첫 레코드를 찾으므로, 타임스탬프가 순서대로 증가하지 않는 토픽에서는 중복이 생길 수 있습니다.
- 양방향 미러링에서는 메시지 순서가 뒤섞일 수 있으므로, 타임스탬프만으로 오프셋을 옮기면 아직 처리하지 않은 데이터가 건너뛰어질 수 있습니다.
- 계획된 전환에서 중복까지 없애려면 데이터 유입을 대상 클러스터로 몰아 미러링 순서의 뒤섞임을 해소한 뒤 오프셋을 동기화합니다.
비슷한 학습 자료
토스ㅣSLASH 23 - Kafka 이중화로 다양한 장애 상황 완벽 대처하기
SLASH · YouTube
토스증권의 수 천개 실시간 데이터 파이프라인 운영방법 #2: MSA 환경 Observability 높이기
· 토스 기술 블로그
토스증권 Apache Kafka 데이터센터 이중화 구성 #2: 데이터 미러링
송지수 · 토스 기술 블로그
토스증권 Apache Kafka 데이터센터 이중화 구성 #1
강병수 · 토스 기술 블로그
ksqlDB를 활용한 증권사의 실시간 데이터 처리하기
강병수 · 토스 기술 블로그
분산 시스템 환경에서 Kafka Consumer 오프셋 이동하기
이보람 · 컬리 기술 블로그