← 학습 카테고리

Learn

SQL

32개 모듈 · 현재 28번째

SQL 모듈 28/32 sql-learn-28

CDC 패턴 — 로그 기반 vs 쿼리 기반 변경 데이터 캡처

40 Data Engineering System Design Interview Questions (2026) — DataVidhya (blog) Q9. What are CDC patterns... (pp.5-6); Q18. Design a CDC pipeline... (p.10-11); 100+ Interview Q59 CDC, FAQ 'What is CDC?' (p.19, 30-31)

이 모듈을 다 읽으면

  • 쿼리 기반 CDC와 로그 기반 CDC의 동작 방식과 트레이드오프를 비교할 수 있다
  • 로그 기반 CDC 파이프라인에서 스키마 진화가 왜 가장 까다로운 실패 지점인지 설명할 수 있다

CDC(Change Data Capture)는 소스 데이터베이스의 행 단위 변경(삽입·수정·삭제)을 추출하는 기법이다. 타임스탬프나 버전 컬럼을 폴링하는 쿼리 기반 CDC는 구현이 간단하지만 삭제를 놓치고 소스에 부하를 준다. 반면 트랜잭션 로그(binlog/WAL)를 직접 읽는 로그 기반 CDC는 모든 변경을 놓치지 않고 포착하며 소스 부하가 거의 없고 지연시간도 짧지만, 스키마 진화 대응이 핵심 과제로 남는다.

쿼리 기반 CDC vs 로그 기반 CDC

CDC(Change Data Capture)는 소스 데이터베이스에서 일어나는 행 단위 변경(삽입, 수정, 삭제)을 추출하는 기법이다. 쿼리 기반 CDC는 타임스탬프나 버전 컬럼을 기준으로 주기적으로 폴링하는 방식으로 구현이 간단하지만, 삭제된 행을 놓치고, 소스 시스템에 추가 부하를 주며, 지연시간이 폴링 주기에 비례해서 늘어난다는 한계가 있다. 로그 기반 CDC는 데이터베이스의 트랜잭션 로그(MySQL binlog, Postgres WAL)를 직접 읽는 방식으로, 삭제를 포함한 모든 변경을 포착하고 소스에 거의 부하를 주지 않으며 초 단위 미만의 지연시간을 낸다. 소스 데이터베이스가 지원하고 삭제 감지나 낮은 지연시간이 필요하다면 로그 기반 CDC를 선택해야 한다.

로그 기반 CDC의 실패 모드는 스키마 진화다 — 소스에 컬럼이 추가되면 스키마 레지스트리 연동과 하위 호환 가능한 Avro/Protobuf 스키마가 없는 한 다운스트림 파이프라인이 깨진다. 실전 CDC 파이프라인에서는 Debezium이 소스의 트랜잭션 로그를 읽어 Kafka 토픽에 변경 이벤트를 발행하고(토픽당 소스 테이블 1개, 행의 기본 키를 Kafka 메시지 키로 사용해 행별 순서를 보장), Flink나 Spark Structured Streaming 잡이 이 토픽을 소비해 MERGE 문으로 웨어하우스에 업서트를 적용한다(Snowflake는 Snowpipe Streaming API, Databricks는 Delta Lake의 MERGE INTO). 모니터링은 복제 지연(Debezium 커넥터 메트릭), 컨슈머 랙(Kafka 컨슈머 그룹 오프셋 차이), 행 수 정합성(매시간 소스/목적지 COUNT 비교) 세 가지를 추적해야 한다.

핵심 포인트

  • 쿼리 기반 CDC(타임스탬프/버전 컬럼 폴링)는 간단하지만 삭제를 놓치고 소스 부하를 늘리며 지연시간이 폴링 주기에 비례한다.
  • 로그 기반 CDC(binlog/WAL 직접 읽기)는 삭제 포함 모든 변경을 포착하고 소스 부하가 거의 없이 초 미만 지연시간을 내지만, 스키마 진화가 스키마 레지스트리·하위호환 Avro/Protobuf 없이는 파이프라인을 깨뜨리는 핵심 실패 지점이다.
  • 실전 CDC 파이프라인은 Debezium→Kafka(테이블당 토픽, PK를 메시지 키로)→Flink/Spark MERGE 흐름을 따르며, 복제 지연/컨슈머 랙/행 수 정합성을 모니터링해야 한다.

CDC가 여는 것 — 폴링 없는 근실시간과 시간여행

CDC는 소스 데이터베이스의 삽입·수정·삭제를 실시간으로 추적해 웨어하우스가 전체 재적재 없이도 동기화 상태를 유지하게 한다. Debezium(오픈소스), AWS DMS, Fivetran, Snowflake Streams 같은 도구가 대표적이며, CDC는 폴링 없이 근실시간 파이프라인을 가능하게 하고 감사(audit)와 시간여행(time-travel) 분석을 위한 소스 이력을 보존한다는 점에서 Zero ETL식 지속 복제나 스트리밍 수집의 기반 기술로도 쓰인다.

핵심 포인트

  • CDC 도구: Debezium(오픈소스), AWS DMS, Fivetran, Snowflake Streams.
  • CDC는 폴링 없는 근실시간 동기화를 가능하게 하고, 소스 이력을 보존해 감사·시간여행 분석의 기반이 된다.