티스토리 뷰

ADP

CDC(Change Data Capture) 완벽 정리

박완희버서커 2025. 8. 7. 13:29
반응형
CDC(Change Data Capture) 완벽 정리

CDC(Change Data Capture) 완벽 정리



1. CDC란 무엇인가?

CDC(Change Data Capture)는 데이터베이스에서 일어나는 데이터 변경 사항을 실시간 또는 근접 실시간으로 감지하고 추출하여, 이를 다른 시스템에 전달하거나 별도로 저장하는 기술입니다.

더 쉽게 말하면, 데이터가 새로 추가되거나 변경되거나 삭제될 때, 변경된 부분만 따로 찾아서 필요한 시스템에 빠르게 알려주는 역할을 합니다.

이때 '변경'이란 다음과 같은 것을 포함합니다.

  • 데이터가 새로 추가되는 경우(INSERT)
  • 기존 데이터가 수정되는 경우(UPDATE)
  • 데이터가 삭제되는 경우(DELETE)

CDC는 전체 데이터를 매번 다시 복사하는 방식과는 전혀 다릅니다. 전체가 아닌 변경된 부분만을 골라서 전달하는 것이 핵심입니다.



2. CDC는 왜 등장하게 되었나?

데이터 관리의 변화

과거에는 기업들이 사용하는 시스템이 많지 않았습니다. 데이터가 바뀌면 하나의 데이터베이스 안에서 처리되고 끝났습니다.

하지만 현재의 기업 환경은 완전히 다릅니다. CRM, ERP, 회계, 물류, 고객 지원, 데이터 분석 시스템까지, 수십 개의 서로 다른 시스템들이 동시에 사용됩니다.

문제는 이런 시스템들이 각각 따로 운영된다는 것입니다. 고객이 CRM에서 주소를 변경했는데, ERP나 배송 시스템에서는 이 주소 변경을 즉시 알 수 없는 상황이 자주 발생합니다.

이 경우 고객의 주소 변경이 반영되지 않아 배송 오류가 발생하고, 이는 고객 불만과 추가 비용으로 이어집니다.

기존 방식의 한계

초기에는 이 문제를 해결하기 위해 주기적으로 전체 데이터를 복제했습니다. 매일 또는 매시간 데이터 전체를 다른 시스템으로 복사했습니다.

하지만 이 방식은 비효율적입니다. 왜냐하면 데이터의 대부분은 그대로 유지되고 극히 일부만 변경되는데, 전체를 복사하면 시간, 비용, 자원이 많이 들기 때문입니다. 또한 매번 전체 데이터를 복사하다 보면 최신 데이터를 실시간으로 반영할 수 없습니다.

결국 실시간성이 떨어져 의사결정에도 지장이 생기고, 시스템 자원도 낭비하게 됩니다.

이런 배경으로 전체 데이터가 아닌 변경된 데이터만 선택적으로 전달하는 CDC 기술이 탄생하게 되었습니다.



3. CDC가 실제로 쓰이는 상황

CDC는 크게 4가지 용도로 사용됩니다.

첫째, 시스템 간 실시간 동기화가 필요한 경우입니다.

예를 들어, 쇼핑몰에서 고객이 배송 주소를 변경할 때, 이 변경 사항이 즉시 ERP 시스템에도 반영되어야 배송 오류를 방지할 수 있습니다. CDC를 통해 주소 변경이 즉시 다른 시스템으로 전달됩니다.

둘째, 데이터 웨어하우스(DW)에 최신 데이터를 유지하는 데 쓰입니다.

DW는 분석 및 보고를 위한 별도의 데이터 저장소입니다. CDC는 DW에 최신 변경 사항을 실시간으로 전달하여 분석 리포트가 항상 최신 정보를 기반으로 만들어지도록 합니다.

셋째, 실시간 데이터 분석 시스템 구축 시 필요합니다.

실시간 판매 현황, 사용자 행동 추적 등을 위해서는 변경된 데이터를 즉시 분석 시스템에 전달해야 합니다. CDC가 이를 가능하게 합니다.

넷째, 데이터 변경 이력을 보관하는 용도로 쓰입니다.

특정 데이터가 언제 어떤 식으로 바뀌었는지 추적하고 기록할 수 있어 감사 및 복구에 활용됩니다.



4. CDC의 종류와 작동 방식 (자세히)

CDC 방식은 데이터를 어떻게 변경되었는지 감지하느냐에 따라 나눌 수 있습니다. 대표적인 5가지 방식을 아주 자세히 살펴보겠습니다.



① 트리거 기반 CDC (Trigger-based CDC)

이 방식은 데이터베이스의 자체 기능인 트리거(Trigger)를 사용합니다. 트리거는 INSERT, UPDATE, DELETE 같은 변경이 테이블에서 발생했을 때 미리 정의된 동작을 자동으로 수행합니다.

예를 들어, 고객 주소가 변경되면 트리거가 즉시 실행되어 변경된 정보를 기록 테이블에 추가하거나 다른 시스템으로 보냅니다.

이 방식의 장점은 별도의 도구 없이 DB 자체만으로도 즉각적인 반응이 가능하다는 점입니다. 변경과 동시에 처리되기 때문에 실시간성이 뛰어납니다.

반면 단점은 데이터베이스 성능 저하의 가능성입니다. 변경이 많으면 트리거가 계속 실행되어 DB 성능을 떨어뜨릴 수 있으며, 트리거 로직이 복잡해지면 관리하기도 어렵습니다.



② 이벤트 기반 CDC (Event-based CDC)

이 방식은 데이터베이스가 아닌 애플리케이션 코드 수준에서 데이터를 변경할 때 이벤트를 직접 발생시키는 방식입니다.

예를 들어 주문이 생성될 때 애플리케이션에서 주문이 생성되었다는 이벤트를 Kafka 같은 메시지 시스템으로 전송하여 변경 사항을 전달합니다.

이 방식의 장점은 DB 성능에 영향을 주지 않고, 애플리케이션 레벨에서 유연한 설계가 가능하다는 점입니다. 여러 시스템을 쉽게 연결할 수 있습니다.

하지만 단점도 명확합니다. 각각의 애플리케이션마다 이벤트를 생성하는 코드를 구현해야 하기 때문에 복잡해지고 관리 비용이 증가합니다. 이벤트가 누락되거나 오류가 생기면 데이터가 제대로 동기화되지 않을 수 있습니다.



③ 타임스탬프 기반 CDC (Timestamp-based CDC)

이 방식은 각 데이터 행에 데이터가 변경된 시각을 나타내는 타임스탬프 컬럼을 추가하여 변경을 감지합니다.

예를 들어 고객 정보를 변경하면, 자동으로 updated_at 컬럼에 변경 시간이 기록됩니다. 일정 시간마다 이 컬럼의 값을 확인하여 이전 시간 이후 변경된 행만 추출합니다.

이 방식의 장점은 매우 간단하고 직관적인 구조입니다. 구현과 운영이 쉽습니다.

하지만 단점도 존재합니다. 타임스탬프 컬럼만으로는 삭제된 데이터나 어떤 필드가 변경되었는지 확인할 수 없습니다. 따라서 정확성이 떨어지고, 데이터 변경의 세부 정보는 관리하기 어렵습니다.



④ 상태 플래그 기반 CDC (Status Flag-based CDC)

이 방식은 각 데이터 행에 상태를 나타내는 플래그 컬럼을 추가하여, 데이터가 변경될 때 이 컬럼 값을 수정하는 형태입니다.

예를 들어 데이터가 새로 추가되면 상태 컬럼을 'NEW'로 표시하고, 변경 시 'UPDATED'로 바꿉니다. 외부 시스템에서는 이 상태를 보고 변경된 데이터만 선택적으로 처리합니다.

이 방식의 장점은 상태가 명확히 관리되므로 데이터 처리를 어떤 기준으로 진행할지 명확하게 결정할 수 있습니다.

단점은 상태를 사람이 수동으로 관리하거나 프로그래밍적으로 관리할 때 실수가 발생할 가능성이 있다는 것입니다. 또한 동시 작업이 많을 경우 상태 컬럼 값이 잘못 설정될 수 있습니다.



⑤ 로그 기반 CDC (Log-based CDC)

이 방식은 데이터베이스 내부의 트랜잭션 로그(변경 로그)를 직접 분석하여 변경을 감지합니다.

DBMS는 모든 변경 사항을 트랜잭션 로그에 자동 기록합니다. 로그 기반 CDC는 이 로그를 분석하여 정확히 어떤 데이터가 언제 어떻게 바뀌었는지 찾아냅니다.

이 방식의 장점은 정확성과 성능이 매우 뛰어나다는 점입니다. DB 자체 로그를 사용하므로 변경 사항이 누락되지 않으며, 시스템에 부하도 거의 주지 않습니다.

그러나 단점은 도구 설정이 어렵고, 로그 접근 권한이나 전문 도구가 필요하여 구축 난이도가 높다는 점입니다. 따라서 기술적 복잡성과 비용이 증가할 수 있습니다.



5. 주요 CDC 방식 비교 요약표

방식 실시간성 정확도 구현 난이도 성능 영향 삭제 감지
트리거 기반 높음 높음 중간 높음 가능
이벤트 기반 중간 중간 높음 낮음 불가
타임스탬프 기반 낮음 낮음 낮음 낮음 불가
상태 플래그 기반 낮음 중간 중간 낮음 불가
로그 기반 매우 높음 매우 높음 높음 매우 낮음 가능


6. 결론: CDC 도입을 위한 선택 기준

CDC는 모든 시스템에 필수적인 기술입니다. 하지만 어떤 방식이 가장 적합한지는 시스템의 특성에 따라 다릅니다.

다음 기준을 고려하여 CDC를 선택해야 합니다.

  • 얼마나 실시간이어야 하는가?
  • 삭제된 데이터까지 정확히 감지해야 하는가?
  • 데이터 처리 정확도와 성능 중 어느 쪽이 더 중요한가?
  • 관리 난이도와 비용을 감당할 수 있는가?


반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/09   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함
반응형