Debezium을 활용한 CDC Pipeline 구축기 (1) | Debezium과 CDC란 무엇인가?

Yechan Kim·2025년 6월 27일
0
post-thumbnail

CDC(Change Data Capture)란 무엇인가?

CDC는 Change Data Capture의 약자로, 데이터베이스에서 발생하는 변경 사항(삽입, 수정, 삭제 등)을 실시간으로 캡처하여 이벤트 형태로 다른 시스템에 전달하는 기술이다.

CDC는 마이크로서비스 아키텍처나 데이터 동기화, 실시간 분석 시스템 구축 등에 매우 유용하게 활용된다. 예를 들어, 하나의 DB에서 일어나는 변화를 다른 DB나 시스템에 자동으로 반영하고 싶을 때 CDC를 사용하면 된다.


Debezium이란?

Debezium은 Kafka 기반의 CDC 플랫폼이다. 즉, 데이터베이스의 변경 사항을 Kafka를 통해 전파해주는 역할을 하는 오픈소스 도구다.

Debezium은 비동기적이며 실시간으로 데이터 변경을 추적할 수 있도록 도와주며, 다양한 데이터베이스(MySQL, PostgreSQL, MongoDB 등)를 지원한다.


Debezium의 주요 특성

1. 모든 데이터의 변경사항 추적

Debezium은 데이터베이스의 트랜잭션 로그(binlog 등) 를 직접 읽어 변경사항을 감지하기 때문에, 모든 데이터의 변경 이력을 빠짐없이 추적할 수 있다.
(Debezium이 일시적으로 중단되더라도, 로그는 DB에 계속 쌓이므로 복구가 용이하다.)

2. Polling 방식이 아님

Polling 방식은 일정 주기마다 데이터베이스를 조회해 변경사항을 확인하기 때문에, 주기가 짧아질수록 CPU 사용량이 급증한다.

하지만 Debezium은 로그 기반(Log-based) CDC 방식이기 때문에 CPU 사용량 증가 없이도 빠르게 변경사항을 추적할 수 있다.

3. 데이터 모델에 별도 필드 불필요

Polling 방식은 last_updated_at 같은 필드가 필요하지만, Debezium은 이러한 추가 필드 없이도 변경사항을 추적할 수 있다.
(기존 시스템에 부담을 주지 않고 CDC 구축이 가능하다.)

4. 삭제된 데이터도 추적 가능

Polling 방식에서는 삭제된 데이터는 조회할 수 없어 추적이 불가능하다.
하지만 Debezium은 삭제 이벤트 또한 Kafka로 전파할 수 있어 정확한 상태 동기화가 가능하다.


CDC는 언제 사용하는가?

CDC는 보통 다음과 같은 상황에서 활용된다:

  • 마이크로서비스 간 데이터 동기화
  • 이기종 데이터베이스 시스템 간 데이터 복제
  • 백업 시스템 구축
  • 실시간 분석 플랫폼 구축

즉, 하나의 데이터 소스를 기준으로 다양한 목적지에 데이터 동기화를 구현할 때 유용하다.


Debezium은 어떻게 동작하는가?

Debezium의 기본 작동 방식은 다음과 같다:
1. MySQL, PostgreSQL 등 데이터베이스는 내부적으로 변경 사항을 트랜잭션 로그(binlog)에 기록
2. Debezium이 이 로그를 읽고, Kafka에 이벤트 형태로 전송
3. Kafka의 Topic을 통해 다른 시스템이 이 이벤트를 수신
4. 수신한 시스템은 해당 이벤트를 처리하여 데이터를 반영 (예: MongoDB 저장, Elasticsearch 인덱싱 등)

이를 통해 다양한 시스템 간 데이터의 실시간 동기화가 가능해진다.


시스템 아키텍처

이번에 구축하려는 CDC Pipeline 시스템의 아키텍처는 아래와 같다:

구성 요소 설명

  • MySQL (Source DB): 실제 데이터가 변경되는 원본 DB
  • Debezium + Kafka: 변경 로그를 읽고 이벤트로 Kafka에 전달
  • Kafka Connect: Kafka 이벤트를 다양한 Sink(MySQL, MongoDB, Elasticsearch 등)로 전달
  • MySQL (Backup DB): 실시간 백업용
  • MongoDB / Elasticsearch: 분석 및 검색 기능을 위한 저장소

이 구조를 통해 실시간 데이터 백업은 물론, 이기종 데이터 시스템 구축을 하는 것이 목표이다.


마치며

Debezium을 이용한 CDC는 단순한 백업을 넘어, 분산 시스템 설계, 분석 플랫폼 구축, 서드파티 서비스 연동 등 다양한 분야에 활용할 수 있다.

다음 글에서는 실제로 Debezium + Kafka + Kafka Connect를 활용한 CDC 환경을 구축해 보겠다.


참고 자료

0개의 댓글