대규모 CDC Pipeline 운영을 위한 Debezium 개선 여정
김용우 토스 · 토스 기술 블로그
AI 핵심 요약
Debezium 기반 CDC를 여러 서비스와 분석 환경에 제공하면서도 파이프라인 전체의 지연과 처리량을 알기 어려워 운영 상태를 신뢰하기 힘든 문제가 있었습니다. 이를 해결하기 위해 Source의 `source.ts_ms`와 Sink의 저장 시각을 비교하는 end-to-end latency를 SLI로 삼고, 테이블별 Create·Update·Delete 이벤트 처리량 지표를 Debezium에 추가했습니다. 초기 적재에는 Apache Sqoop과 Debezium의 `snapshot.mode: no_data`를 조합하고, 기존 Source Connector에 테이블을 추가하는 snapshot 모드도 개발해 파이프라인 생성·확장 방식을 개선했습니다. 그 결과 파이프라인 추가에 최대 12시간 걸리던 과정을 추가는 1시간, 확장은 5분 안으로 줄였으며, 지표를 바탕으로 병목을 찾고 더 많은 CDC를 운영할 기반을 마련했습니다.
- 단계별 처리시간만으로는 전체 지연을 알기 어려우므로, 이벤트 발생 시각과 Target 저장 시각을 연결해 end-to-end latency를 측정하세요.
- 원천 로그에서 읽은 이벤트 수와 실제 CDC 이벤트로 변환해 발행한 수는 다를 수 있으니 각각 관측해야 합니다.
- 테이블별 Create·Update·Delete 지표는 처리량뿐 아니라 테이블의 변경 패턴과 정합성 점검에도 활용할 수 있습니다.
- 초기 적재는 배치 도구와 스트리밍을 조합하고, 기존 커넥터에 테이블을 추가하는 경로를 마련하면 복구와 확장 부담을 줄일 수 있습니다.
소개
문제 없이 여러 데이터들을 CDC를 통해 제공하던 어느 날, 근본적인 질문이 떠오릅니다. 우리의 CDC는 얼마나 잘 운영되고 있는가? CDC가 잘 운영되고 있다는걸 우리는 어떻게 믿을 수 있을까?
비슷한 학습 자료
컨퍼런스 if kakao
대용량 데이터베이스 동기화를 위한 최적의 CDC 시스템 구축기 / if(kakaoAI)2024
컨퍼런스 if kakao
카카오 내 다양한 서비스의 데이터를 한 곳으로 응집하기 위한 대규모 CDC 파이프라인을 구축한 사례를 소개합니다. Flink와 Kafka Connect를 통해 수십억 건의 데이터를 MySQL과 Iceberg 까지 연동하는 과정에서 맞닥뜨린 어려움과 해결 방안을 공유합니다. #Data #CDC #Debezium #Flink #Iceberg #Spark 카카오 전사 데이터 조직의 데이터 엔지니어 Dawn입니다. 카카오의 방대하고 다양한 데이터를 효율적으로 처리하는 대규모 CDC 파이프라인을 개발하고 있습니다. flink와 kafka를 활용하여 여러 시도를 하고 있는 Louis입니다. 요즘은 flink로 iceberg에 데이터를 적재하는 것에 집중하고 있어요. 발표자료 보기 👉 https://speakerdeck.com/kakao/ifkakao24-77 if(kakaoAI)2024에 대한 자세한 정보는 👉 https://if.kakao.com #카카오 #이프카카오 #개발...
데이터베이스 데브옵스 · 인프라
문서 김동석