본문 바로가기
카테고리 없음

Debezium CDC Polling Embedded

by sujupark54 2026. 2. 19.

언제 발생할지 모르는 데이터 변경을 안정적으로 처리하는 것은 많은 시스템에서 반복적으로 마주치는 문제다. 데이터가 몇 초 간격으로 발생할 수도 있고, 반대로 몇 시간 혹은 몇 달 동안 전혀 발생하지 않을 수도 있다. 이처럼 발생 주기가 불규칙한 데이터를 처리할 때 단순한 주기 기반 접근 방식은 여러 한계를 드러낸다.

대표적인 해결책으로는 주기적으로 데이터를 조회하는 Polling 방식과 데이터베이스의 변경 자체를 이벤트로 추적하는 CDC(Change Data Capture)가 있다. 두 방식은 구현 난이도와 운영 비용, 정확성 측면에서 분명한 차이를 가진다. 특히 실시간성, 데이터 유실 방지, 부하 관리가 중요한 환경에서는 CDC 기반 접근이 더 적합한 선택이 될 수 있다.


CDC와 Polling 방식 비교

Polling 방식은 일정 주기마다 SELECT 쿼리를 실행해 새로 추가되거나 변경된 데이터를 조회하는 방식이다. 구현이 단순하고 별도의 인프라가 필요 없다는 장점이 있다. 하지만 데이터가 발생하지 않는 시간에도 지속적으로 쿼리를 실행해야 하므로 불필요한 부하가 누적된다.

또한 Polling은 트랜잭션 경계를 정확히 보장하기 어렵다. 타임스탬프나 증가 ID를 기준으로 조회할 경우 중복 처리나 누락이 발생할 가능성이 존재한다. DELETE 이벤트 역시 별도의 소프트 삭제 컬럼이 없다면 감지하기 어렵다.

CDC 방식은 데이터베이스가 내부적으로 사용하는 트랜잭션 로그(binlog, WAL 등)를 기반으로 동작한다. 테이블을 직접 스캔하거나 쿼리를 실행하지 않고, 변경 사항만 스트리밍 방식으로 전달한다. 이로 인해 CPU, 락, 쿼리 부하가 매우 낮다.

또한 CDC는 트랜잭션 순서를 그대로 보존하며, INSERT, UPDATE, DELETE 이벤트를 모두 감지할 수 있다. 오프셋 기반으로 처리 위치를 관리하므로 애플리케이션 재시작 시에도 이전 위치부터 안전하게 재처리가 가능하다. 불규칙적인 데이터 발생 패턴을 가진 시스템일수록 Polling보다 CDC가 더 효율적인 이유다.


Debezium CDC 개념과 특징

Debezium은 대표적인 오픈소스 CDC 플랫폼이다. MySQL, PostgreSQL, MariaDB 등 다양한 데이터베이스를 지원하며, 데이터 변경을 실시간 이벤트 스트림으로 변환해 전달한다. 로그 기반 캡처 방식을 사용하므로 운영 중인 테이블에 트리거나 추가 쿼리를 요구하지 않는다.

Debezium은 초기 스냅샷 기능을 제공한다. 커넥터가 처음 실행될 때 현재 테이블 상태를 한 번 읽은 뒤 그 이후 변경 사항을 실시간으로 스트리밍한다. 이를 통해 과거 데이터와 신규 데이터를 자연스럽게 이어서 처리할 수 있다.

또한 Debezium은 스키마 변경(DDL) 이벤트를 전파하며, SMT(Single Message Transform)를 통해 필터링, 마스킹, 필드 변환 같은 작업을 수행할 수 있다. 민감한 데이터를 이벤트 단계에서 제거하거나, 필요한 구조로 재구성할 수 있다는 점은 실무에서 큰 장점으로 작용한다.

오프셋과 스키마 히스토리를 기반으로 정확한 재처리와 장애 복구를 지원한다는 점 역시 Debezium이 Polling 방식보다 신뢰성이 높은 이유다.


Debezium Embedded 모드 활용

Debezium은 기본적으로 Kafka Connect 위에서 실행되지만, Embedded 모드를 사용하면 Kafka 인프라 없이 애플리케이션 내부에서 실행할 수 있다. 이는 비교적 작은 규모의 시스템이나 Kafka 운영이 부담스러운 환경에서 특히 유용하다.

Embedded 모드에서는 애플리케이션 프로세스 안에서 DebeziumEngine을 실행한다. 데이터베이스 변경이 발생할 때마다 콜백 형태로 ChangeEvent를 전달받아 처리한다. 오프셋과 스키마 히스토리는 파일이나 데이터베이스에 저장할 수 있으며, 애플리케이션 재시작 시에도 이전 처리 위치부터 이어서 동작한다.

단일 스레드로 엔진을 실행하면 이벤트 순서가 보장되고, CDC 처리 지연이 애플리케이션의 다른 로직에 영향을 주지 않는다. 시작과 종료 시점을 명확히 제어하면 오프셋 커밋 누락이나 커넥션 누수도 방지할 수 있다.

불규칙적인 데이터 발생, 실시간 반응 요구, 데이터 정합성이 중요한 환경이라면 Debezium Embedded CDC는 Polling 대비 훨씬 안정적인 선택이 될 수 있다. 단, 트랜잭션 로그 설정과 권한 구성은 필수이므로 운영 환경에 맞게 신중하게 적용해야 한다.


정리하면, 소규모·저빈도 환경에서는 Polling이 간단한 해법이 될 수 있지만, 데이터 발생 주기가 불규칙하거나 정확한 추적과 실시간 처리가 필요한 경우 CDC 기반 접근이 더 적합하다. Debezium은 이러한 요구를 충족하는 검증된 오픈소스 도구 중 하나다.