본문으로 이동
대규모 CDC Pipeline 운영을 위한 Debezium 개선 여정
문서

대규모 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 지표는 처리량뿐 아니라 테이블의 변경 패턴과 정합성 점검에도 활용할 수 있습니다.
  • 초기 적재는 배치 도구와 스트리밍을 조합하고, 기존 커넥터에 테이블을 추가하는 경로를 마련하면 복구와 확장 부담을 줄일 수 있습니다.