핵심 요약
올리브영이 Debezium MSK Connect를 활용해 Failover를 구현하고 Heartbeat 기반 모니터링과 오프셋 관리로 서비스 안정성을 높였습니다.
구현 방법
- Debezium MSK Connect를 이용한 Failover 아키텍처 구성 및 데이터 흐름 정의
- Heartbeat 기능 활용: heartbeat.interval.ms, topic.heartbeat.prefix로 연결 상태를 주기적으로 확인하고 Slack 알림 및 온콜 시스템 가동
- 오프셋/상태 토픽 구성: value.converter=org.apache.kafka.connect.json.JsonConverter, key.converter=org.apache.kafka.connect.json.JsonConverter, offset.storage.topic=__amazon_msk_connect_offsets_test-connector, offset.storage.partitions=3, offset.storage.replication.factor=3, status.storage.partitions=3, status.storage.replication.factor=3
- 신규 Connector 생성 및 데이터 보정: 기존 토픽의 데이터 중 필요한 기간만 재발행하여 Failover용 스냅샷 데이터를 구성하고, CDC 이벤트 중 r 상태를 failover-topic으로 재배치한 뒤 f 상태로 변환하는 파이프라인 구축
- Failover 공통 처리(AOP) 구현: Failover 어노테이션 기반으로 서비스 메서드 실행 시 실패 대처 로직을 적용하고, 변경 필드 생성 및 데이터 연계 로직과의 충돌 최소화
- 데이터 연속성 보장 및 재처리 흐름: offset를 기준으로 특정 시점부터 재처리하여 데이터 손실 없이 흐름 유지
주요 결과
- 서비스 장애 시점에서의 자동 전환 및 실시간 상태 모니터링으로 운영 안정성 강화
- Failover 시점의 데이터 정합성 유지 및 연속적 데이터 처리 보장
- 오프셋 및 상태 토픽 구성을 통한 빠른 재가동 및 데이터 손실 최소화
- AOP 기반 Failover 공통화로 서비스 로직과 독립적인 실패 관리 체계 확립



