대규모 CDC Pipeline 운영을 위한 Debezium 개선 여정
김용우 · 토스 · 토스 기술 블로그
소개
문제 없이 여러 데이터들을 CDC를 통해 제공하던 어느 날, 근본적인 질문이 떠오릅니다. 우리의 CDC는 얼마나 잘 운영되고 있는가? CDC가 잘 운영되고 있다는걸 우리는 어떻게 믿을 수 있을까?
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 시스템 구축기 / if(kakaoAI)2024
if kakao · YouTube
토스증권 Iceberg 적용기 #1: CDC 환경은 왜 제대로 동작하지 않을까?
김용우 · 토스 기술 블로그
토스증권의 수천 개 실시간 데이터 파이프라인 운영방법 #1: Visualize Lineage
강병수 · 토스 기술 블로그
입수는 Datalake로! (feat. Iceberg)
조승완 · 토스 기술 블로그
유연하고 안전하게 배포 Pipeline 운영하기
김동석 · 토스 기술 블로그
Dataflow로 컬리의 준실시간 수요 예측모델 파이프라인 구축하기 - 1편
한수진 · 컬리 기술 블로그