forked from MinePing/Final
-
Notifications
You must be signed in to change notification settings - Fork 0
architecture CDC
qbsb147 edited this page Mar 21, 2026
·
1 revision
CDC(Change Data Capture)는 데이터베이스에서 발생한 변경 사항(INSERT, UPDATE, DELETE)을 감지하고 추출하는 기술입니다.
💡 핵심:
“데이터 변경을 이벤트로 만들어 외부 시스템에 전달”
기존 방식:
- 일정 주기로 DB를 조회 (Polling / Pull 방식)
- 변경된 데이터를 비교 후 처리
👉 문제:
- ❌ 불필요한 조회 반복 (비용 증가)
- ❌ 실시간성 부족
- ❌ 변경 누락 가능성 존재
CDC는 DB의 변경을 감지하면
👉 즉시 이벤트를 외부로 전달하는 Push 방식으로 동작합니다.
| 구분 | Pull 방식 (Polling) | Push 방식 (CDC) |
|---|---|---|
| 동작 | 주기적으로 조회 | 변경 시 즉시 전달 |
| 실시간성 | ❌ 낮음 | ✅ 높음 |
| 비용 | ❌ 지속적인 조회 비용 | ✅ 변경 시에만 처리 |
| 정확성 | ❌ 누락 가능성 있음 | ✅ 변경 기반이라 정확 |
💡 정리:
CDC는 “변경이 발생했을 때만 동작”하기 때문에 더 효율적이고 정확함
- DB의 **로그(Binlog, WAL 등)**를 읽어서 변경 감지
💡 예:
- MySQL → Binlog
- PostgreSQL → WAL
👉 DB에 직접 부하를 주지 않고 변경 사항 추출 가능
- DB에서 데이터 변경 발생
- CDC가 로그를 읽어서 변경 감지
- 변경 내용을 이벤트로 변환
- 메시지 브로커(Kafka 등)로 전달
- Consumer가 이벤트를 처리
sequenceDiagram
participant DB
participant CDC
participant Broker
participant Consumer
DB->>CDC: change log 발생
CDC->>Broker: 즉시 publish(event)
Broker->>Consumer: deliver(event)
- 변경이 발생한 순간 이벤트 전달
- Polling 없이 즉각 반영
- 불필요한 조회 제거
- 변경이 있을 때만 처리
- 애플리케이션 수정 없이 데이터 전달 가능
- CDC → 이벤트 생성
- Broker(Kafka 등) → 이벤트 전달
👉 이벤트 기반 아키텍처의 시작점 역할
- 🚀 실시간 데이터 동기화
- 💸 불필요한 Polling 비용 제거
- 🔄 데이터 변경 자동 추적
- 🔗 시스템 간 의존성 감소
- 🧠 구조 이해 난이도 증가
- 🐞 장애 시 복구 전략 필요
- 📊 이벤트 순서 및 중복 처리 고려 필요
“DB 변경을 감지해, Push 방식으로 이벤트를 전달하는 기술”