Skip to content

architecture CDC

qbsb147 edited this page Mar 21, 2026 · 1 revision

🔄 CDC (Change Data Capture)

📝 개요

CDC(Change Data Capture)는 데이터베이스에서 발생한 변경 사항(INSERT, UPDATE, DELETE)을 감지하고 추출하는 기술입니다.

💡 핵심:

“데이터 변경을 이벤트로 만들어 외부 시스템에 전달”

🔹 왜 필요한가

기존 방식:

  • 일정 주기로 DB를 조회 (Polling / Pull 방식)
  • 변경된 데이터를 비교 후 처리

👉 문제:

  • ❌ 불필요한 조회 반복 (비용 증가)
  • ❌ 실시간성 부족
  • ❌ 변경 누락 가능성 존재

🔹 CDC의 방식 (Push 기반)

CDC는 DB의 변경을 감지하면
👉 즉시 이벤트를 외부로 전달하는 Push 방식으로 동작합니다.

📌 Pull vs Push 비교

구분 Pull 방식 (Polling) Push 방식 (CDC)
동작 주기적으로 조회 변경 시 즉시 전달
실시간성 ❌ 낮음 ✅ 높음
비용 ❌ 지속적인 조회 비용 ✅ 변경 시에만 처리
정확성 ❌ 누락 가능성 있음 ✅ 변경 기반이라 정확

💡 정리:

CDC는 “변경이 발생했을 때만 동작”하기 때문에 더 효율적이고 정확함

🔹 동작 방식

일반적인 방식 (로그 기반)

  • DB의 **로그(Binlog, WAL 등)**를 읽어서 변경 감지

💡 예:

  • MySQL → Binlog
  • PostgreSQL → WAL

👉 DB에 직접 부하를 주지 않고 변경 사항 추출 가능

🔹 전체 흐름

  1. DB에서 데이터 변경 발생
  2. CDC가 로그를 읽어서 변경 감지
  3. 변경 내용을 이벤트로 변환
  4. 메시지 브로커(Kafka 등)로 전달
  5. Consumer가 이벤트를 처리

🔹 시퀀스 다이어그램

sequenceDiagram
    participant DB
    participant CDC
    participant Broker
    participant Consumer

    DB->>CDC: change log 발생
    CDC->>Broker: 즉시 publish(event)
    Broker->>Consumer: deliver(event)
Loading

🔹 특징

⚡ Push 기반 실시간 처리

  • 변경이 발생한 순간 이벤트 전달
  • Polling 없이 즉각 반영

💰 비용 효율성

  • 불필요한 조회 제거
  • 변경이 있을 때만 처리

🔗 낮은 결합도

  • 애플리케이션 수정 없이 데이터 전달 가능

📡 EDA와의 자연스러운 연결

  • CDC → 이벤트 생성
  • Broker(Kafka 등) → 이벤트 전달

👉 이벤트 기반 아키텍처의 시작점 역할

🔹 장점

  • 🚀 실시간 데이터 동기화
  • 💸 불필요한 Polling 비용 제거
  • 🔄 데이터 변경 자동 추적
  • 🔗 시스템 간 의존성 감소

🔹 단점

  • 🧠 구조 이해 난이도 증가
  • 🐞 장애 시 복구 전략 필요
  • 📊 이벤트 순서 및 중복 처리 고려 필요

🔹 한 줄 정리

“DB 변경을 감지해, Push 방식으로 이벤트를 전달하는 기술”

📡 이벤트 스트리밍

⚙️ 개발 환경 구축

Websocket

Kafka

Redis

Debezium

🧩 기능 구현

이벤트리스너(Spring)

Pub/Sub 기반 메세지 처리(Redis)

이벤트 스트리밍 처리(Kafka)

CDC(Debezium)

🧠 개념

🎯 설계 패턴

🏗️ 아키텍처

📚 기술 스택

Clone this wiki locally