변경 데이터 캡처란 무엇인가요?

변경 데이터 캡처(CDC)는 트랜잭션 데이터베이스, 데이터 웨어하우스, SaaS 애플리케이션과 같은 소스 시스템의 데이터에 적용된 변경사항을 추적하고 캡처하는 데 사용되는 프로세스입니다. CDC는 변경사항을 실시간으로 기록하여 시스템을 동기화하고, 분석을 지원하며, AI 모델을 학습시키고, 원활한 데이터 마이그레이션을 지원할 수 있도록 해줍니다.

데이터베이스에서 발생하는 변경사항을 파악하는 것은 데이터 무결성을 유지하고, 워크플로를 최적화하며, 실시간 인사이트를 확보하는 데 필수적입니다. 일반적인 예로 소매업을 들 수 있습니다. 고객이 주문하면 CDC는 거래 데이터베이스에서 해당 판매를 즉시 캡처합니다. Google Cloud의 Datastream과 같은 CDC 서비스는 온프레미스 PostgreSQL 데이터베이스의 변경사항을 BigQuery 데이터 웨어하우스로 복제하여 거의 실시간으로 분석 대시보드를 구동하고 오래 걸리는 야간 일괄 작업에 대한 대기 시간을 없앨 수 있습니다.

BigQuery용 Datastream 소개

핵심 내용

변경 데이터 캡처(CDC)는 삽입, 업데이트, 삭제와 같은 데이터 수정사항을 소스 시스템에서 식별하고 캡처하는 데 사용되는 프로세스로, 보통 거의 실시간으로 이루어집니다. CDC는 다음과 같은 특징으로 알려져 있습니다.

  • 느린 야간 일괄 작업 대체: 전체 데이터 세트를 나중에 추출하는 대신 데이터 변경사항이 발생할 때 캡처할 수 있습니다.
  • 강력한 사용 사례: CDC는 원활한 데이터베이스 마이그레이션, 실시간 분석, AI 학습을 지원합니다.

ETL과 CDC의 차이점은 무엇인가요?

'추출, 변환, 로드'를 의미하는 ETL 프로세스는 소스 시스템에서 원시 데이터를 추출하고, 필요한 구조로 변환한 다음, 일반적으로 데이터 웨어하우스인 대상 시스템에 로드하는 과정을 포함합니다. ETL은 데이터가 정리되어 분석 또는 애플리케이션에서 다운스트림으로 사용할 준비가 되도록 보장하는 데 도움이 됩니다.

기존에는 ETL이 대규모로 예약된 일괄 처리로 실행되었으며, 주로 야간에 실행되었습니다. 즉, 대상 시스템의 데이터는 가장 최근의 일괄 실행만큼만 최신 상태입니다.

주요 차이점은 CDC가 데이터를 추출하는 방식입니다. CDC는 데이터 세트를 일괄 추출하는 대신 변경사항이 발생할 때 이를 캡처하므로 주기적인 일괄 처리에 의존하는 대신 항상 최신 데이터를 쿼리할 수 있습니다. 이를 통해 변화에 더 빠르게 대응하고 더 정확한 인사이트를 얻을 수 있습니다.

SCD와 CDC의 차이점은 무엇인가요?

변경 데이터 캡처는 주로 소스 시스템의 부하를 최소화하기 위해 소스 데이터베이스에서 모든 증분 변경사항을 효율적으로 추출하는 데 중점을 둔 프로세스이며, 거의 실시간으로 이루어지는 경우가 많습니다.

반면, 지연 변경 측정기준(SCD)은 대상 데이터 웨어하우스 또는 분석 시스템에 적용되는 데이터 모델링 기법으로, 고객 기록이나 제품 속성과 같은 측정기준 데이터의 이전 상태를 시간에 따라 저장하고 관리하는 방법에 중점을 둡니다.

CDC는 변경사항의 효율적인 데이터 전송을 위한 도구이지만, 이러한 변경사항은 일반적으로 특정 SCD 전략을 사용하여 대상 시스템 내에서 완전하고 정확한 기록을 유지합니다.

일반적인 CDC 소스 및 대상

변경 데이터 캡처는 최신 데이터 스택 또는 데이터 클라우드를 구성하는 다양한 시스템을 연결하는 강력한 브리지 역할을 할 수 있습니다. CDC 도구는 특정 데이터베이스에 국한되지 않고 다양한 소스와 대상으로 작동하도록 설계되었습니다.

트랜잭션 데이터베이스는 CDC의 가장 일반적인 소스로, 일상적인 비즈니스 운영을 실행하는 시스템에서 모든 삽입, 업데이트, 삭제를 캡처합니다.

CDC 데이터의 기본 대상인 이러한 시스템은 비즈니스 인텔리전스, 분석, AI를 위해 여러 소스의 정보를 통합합니다.

  • 예: BigQuery, Snowflake, Amazon Redshift, Databricks

CDC를 사용하여 중요한 비즈니스 플랫폼(대개 API 또는 웹훅을 통해)에서 변경 데이터를 가져와 조직 전체에서 고객, 판매 또는 지원 데이터를 동기화합니다.

  • 예: Salesforce, SAP, Stripe, HubSpot

스트리밍 및 메시징 플랫폼은 종종 실시간 메시징 버스 역할을 하며 소스에서 변경 이벤트를 수신하여 여러 다운스트림 소비자에게 동시에 배포합니다.

  • 예: Apache Kafka, Pub/Sub, Amazon Kinesis

객체 스토리지는 데이터 레이크를 빌드하기 위한 확장 가능하고 비용 효율적인 기반을 제공하므로 원시 CDC 이벤트 로그의 일반적인 대상입니다.

변경 데이터 캡처의 주요 사용 사례

CDC는 데이터 연속성 보장부터 실시간 분석 및 AI 지원에 이르기까지 광범위한 중요 사용 사례를 실현할 수 있습니다.

  • 복제: 실시간 변경사항을 캡처하여 보조 데이터베이스 또는 백업이 기본 시스템과 일관성을 유지합니다. 이는 재해 복구 및 고가용성 아키텍처에 매우 중요합니다.
  • 마이그레이션: 진행 중인 변경사항을 추적하고 라이브 마이그레이션 중에도 대상 시스템이 소스를 정확하게 반영하도록 보장하여 데이터베이스 마이그레이션을 간소화합니다.
  • 실시간 분석: CDC는 분석 시스템에 실시간 데이터를 제공하여 트렌드와 변화가 발생하는 즉시 이에 대응할 수 있도록 지원하며, 최신 인사이트를 제공합니다.
  • AI 학습을 위한 데이터: CDC는 최신 데이터를 제공하여 AI 및 머신러닝 모델이 정확하고 관련성 있는 정보로 학습되도록 지원하여 예측 및 의사 결정을 개선합니다.
  • 데이터 클라우드 빌드: CDC는 트랜잭션 데이터베이스 및 SaaS 애플리케이션과 같은 다양한 사일로화된 소스에서 중앙 분석 플랫폼으로, 그리고 다시 소스로 실시간 변경사항을 스트리밍하여 통합된 데이터 클라우드를 만드는 데 필수적인 서비스입니다. 이를 통해 데이터 장벽을 허물고 단일 정보 소스를 만들 수 있습니다.

변경 데이터 캡처에 관한 FAQ

CDC는 변경사항이 발생할 때 이를 캡처하고 전파하여 여러 시스템(예: 기본 데이터베이스와 백업, 기본 데이터베이스와 분석 플랫폼)이 항상 동기화되도록 합니다. 이를 통해 데이터 불일치를 없애고 모든 플랫폼에서 데이터 무결성을 유지할 수 있습니다.

변경 데이터 캡처는 다음을 포함한 다양한 접근방식을 사용하여 소스 데이터베이스의 데이터에 대한 변경사항을 식별, 추적, 추출하는 방식으로 작동합니다.

  • 로그 기반 CDC는 데이터베이스의 내부 트랜잭션 로그(모든 변경사항의 기록)를 읽어 이러한 특정 변경사항을 거의 실시간으로 대상 시스템에 스트리밍하여 리소스 부하를 최소화합니다.
  • 트리거 기반 CDC는 수정이 발생할 때마다 변경사항을 별도의 섀도 테이블에 기록하기 위해 테이블에 데이터베이스 트리거를 생성하는 방식입니다. 하지만 이 방식은 소스 데이터베이스의 트랜잭션 처리에 오버헤드를 추가할 수 있습니다.
  • 타임스탬프 기반 CDC는 가장 간단하지만 성능이 가장 낮은 방법으로, 소스 테이블의 타임스탬프 또는 버전 열을 사용하여 변경 시간이 마지막 추출 시간보다 최신인 행을 주기적으로 쿼리합니다.

CDC가 데이터베이스와 작동하는 방식

데이터베이스는 트랜잭션 로그라는 공통의 핵심 구성요소를 공유하기 때문에 변경 데이터 캡처를 위한 가장 일반적이고 신뢰할 수 있는 소스입니다. 이 로그는 모든 변경사항의 불변의 순서화된 레코드이므로 데이터베이스 성능에 영향을 주지 않고 데이터 수정을 정확하고 효율적으로 캡처하기 위한 완벽한 기반이 됩니다. 주요 개념을 자세히 살펴보겠습니다.

데이터베이스 트랜잭션 로그 이해

실제 데이터베이스 테이블에 데이터가 기록되기 전에 변경사항(삽입, 업데이트 또는 삭제)이 먼저 트랜잭션 로그에 기록됩니다. 최신 CDC 도구는 이 로그를 활용하여 비침입적으로 변경사항을 캡처합니다. 이는 데이터베이스 복제 기술의 핵심 부분이며, 개념은 보편적이지만 이 로그의 이름은 인기 있는 데이터베이스마다 다릅니다. 몇 가지 주목할 만한 예시는 다음과 같습니다.

  • PostgreSQL: 미리 쓰기 로그(WAL)
  • Oracle: 재실행 로그
  • SQL Server: 트랜잭션 로그
  • MySQL: 바이너리 로그(Binlog)

초기 로드와 CDC 결합

대규모 기존 데이터베이스의 경우 네트워크 성능 및 기타 제약으로 인해 트랜잭션 로그에서 전체 기록을 읽는 것이 비실용적일 수 있습니다. 일반적인 실제 패턴은 먼저 일괄 로드를 수행한 다음 CDC를 사용하여 동기화하는 것입니다. 이 프로세스에는 다음 과정이 포함됩니다.

  1. 특정 시점에 데이터베이스의 일관된 스냅샷 또는 백업을 만듭니다.
  2. 대규모 스냅샷을 대상 시스템에 로드합니다.
  3. 스냅샷이 촬영된 정확한 로그 위치에서 CDC 스트림을 시작합니다.

이 '스냅샷 및 따라잡기' 방법을 사용하면 대상이 이전 데이터로 완전히 시딩된 다음 모든 후속 실시간 변경사항과 완벽하게 동기화됩니다. Google Cloud의 DatastreamDatabase Migration Service와 같은 관리형 서비스는 이와 같은 방식으로 원활하고 안정적인 백필을 수행합니다.

로그 시퀀스 번호를 사용한 포지셔닝 및 복구

이 프로세스를 안정적으로 관리하기 위해 CDC는 트랜잭션 로그 내의 고유 식별자(일반적으로 로그 시퀀스 번호(LSN)라고 함)에 의존합니다. 이러한 숫자는 변경사항 스트림의 정확한 북마크 역할을 합니다. 이러한 기능은 다음과 같은 경우에 중요합니다.

  • 포지셔닝: 로그에서 스트림을 시작하거나 중지할 정확한 위치를 파악합니다.
  • 복구: CDC 프로세스가 실패하면 마지막으로 성공적으로 처리된 LSN부터 다시 시작할 수 있으므로 데이터 손실이나 중복 없이 모든 변경사항을 정확히 한 번만 캡처할 수 있습니다.

트랜잭션 로그, 초기 스냅샷, 로그 시퀀스 번호라는 이러한 메커니즘은 함께 작동하여 데이터베이스 CDC를 매우 효율적이고 안정적으로 만듭니다.

변경 데이터 캡처의 이점

CDC는 현대적인 데이터 워크플로에서 없어서는 안 될 여러 가지 이점을 제공합니다.

시스템 전반의 데이터 일관성

변경사항이 발생하면 동기화하여 불일치를 줄이고 플랫폼 전반에서 더 정확한 데이터를 보장합니다.

효율적인 데이터 이동

전체 데이터 세트가 아닌 변경사항만 캡처하여 시스템 부하와 네트워크 사용량을 크게 줄입니다.

원활한 통합

사전 빌드된 커넥터 라이브러리를 사용하여 시스템을 연결합니다. 많은 플랫폼에서 파이프라인을 구성하고 스키마 드리프트 감지 및 진송 중인 데이터 변환과 같은 복잡한 백엔드 작업을 자동으로 관리하는 노 코드 인터페이스를 제공하여 데이터가 중단 없이 흐르도록 보장합니다.

운영 복원력

수동 개입 없이 시스템과 백업을 자동으로 정렬하여 재해 복구 및 복제 작업을 지원합니다.

실시간 통계

최신 데이터에 거의 즉시 액세스할 수 있어 더 빠르고 정보에 입각한 의사 결정을 내릴 수 있습니다. 이러한 민첩성은 데이터의 가치가 몇 초 만에 사라지는 금융 거래, 전자상거래, 물류와 같은 빠르게 변화하는 환경에서 중요한 이점을 제공할 수 있습니다.

경쟁 기술 및 대안

CDC와 중복되거나 보완되는 여러 기술이 있으며, 이러한 기술은 데이터 변경사항을 관리하고 실시간 처리를 지원하는 다양한 접근방식을 제공합니다. CDC를 다른 주요 접근방식과 비교해 보겠습니다.

하이브리드 트랜잭션 및 분석 처리(HTAP)

HTAP는 트랜잭션(OLTP) 워크로드와 분석(OLAP) 워크로드를 단일 시스템으로 결합하여 데이터에 대한 즉각적인 분석을 제공합니다. 이러한 특성으로 인해 HTAP는 독립 실행형 환경에서 통합 분석에 적합하지만 조직 전반에 걸쳐 존재하는 다양하고 분산된 데이터 소스와 동기화하는 데 어려움을 겪을 수 있습니다. 반면 CDC는 여러 시스템에서 데이터 일관성을 유지하고 분산 워크플로를 지원하는 데 탁월합니다.

통합 쿼리

페더레이션 쿼리(및 '외부 테이블'이라는 유사한 접근방식)를 사용하면 쿼리가 실행되는 순간 데이터 웨어하우스 또는 쿼리 엔진이 트랜잭션 데이터베이스와 같은 외부 소스 시스템에서 직접 데이터를 읽을 수 있습니다. 이 접근방식은 데이터를 복사하거나 이동할 필요가 없으며 정보가 있는 위치에서 실시간으로 정보에 액세스할 수 있습니다.

이 방법은 복제 파이프라인을 설정하지 않고도 즉시 액세스할 수 있으므로 임시 분석이나 가끔씩 발생하는 쿼리에 적합합니다. 그러나 정기적으로 사용되거나 성능에 민감한 쿼리의 경우 모든 쿼리가 소스 운영 시스템에 직접적인 부하를 가하므로 비효율적일 수 있습니다. 최적화된 분석을 위해 변경사항 스트림을 목적지로 대상으로 푸시하는 CDC와 달리, 페더레이션은 필요에 따라 데이터를 가져오므로 빈번한 워크로드에는 적합하지 않을 수 있습니다.

데이터 스트리밍 플랫폼

Kafka는 처리량이 높은 데이터 스트리밍 및 처리를 위해 설계된 오픈소스 플랫폼입니다. Kafka는 대규모 데이터 흐름을 효율적으로 관리하지만 CDC를 대체하는 것이 아니라 보완합니다. CDC는 정확한 데이터베이스 변경사항을 실시간으로 캡처하는 데 중점을 두는 반면, Kafka는 웹사이트 클릭, IoT 센서 판독, 장바구니에 추가된 항목 등 더 광범위한 이벤트 데이터를 스트리밍합니다. 이러한 기술을 함께 사용하면 실시간 워크플로를 위한 강력한 조합을 만들 수 있습니다.

애플리케이션 수준 통합

CDC는 노 코드 접근방식을 사용하여 데이터를 복제하는 반면, 애플리케이션 레이어에서 연결되는 통합 기술은 로우 코드 접근방식을 사용하여 시스템과 SaaS 플랫폼을 연결합니다. 플랫폼 간에 이동하는 데이터를 변환할 수 있는 기능을 원한다면 Google Cloud의 Application Integration과 같은 애플리케이션 수준의 통합 제품이 더 나은 도구가 될 수 있습니다.

Google Cloud로 비즈니스 문제 해결

신규 고객에게는 Google Cloud에서 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.

Google Cloud에서 CDC 시작하기

Datastream은 Google Cloud의 안정적이고 사용하기 쉬운 서버리스 변경 데이터 캡처(CDC) 및 복제 서비스입니다. 다양한 데이터베이스와 애플리케이션 전반에서 데이터 동기화를 지원하면서 지연 시간을 최소화합니다. 다음은 시작하는 데 도움이 되는 몇 가지 리소스입니다.

다음 단계 수행

$300의 무료 크레딧과 20여 개의 항상 무료 제품으로 Google Cloud에서 빌드하세요.

Google Cloud