콘텐츠로 이동
Study NoteDatabricks

4. Source에서 Gold table까지

운영 DB를 분석 engine처럼 계속 읽지 말고 한 번 증분 수집한 뒤 S3의 table을 여러 소비자가 재사용하게 만든다

이 장에서 처음 나오는 말4개
CDCChange Data Capture
source에서 insert·update·delete 변화만 잡아 full copy 없이 downstream에 전달하는 방식이다.
BronzeBronze layer
source 형태와 수집 시각을 최대한 보존한 재처리 가능한 원본 계층이다.
SilverSilver layer
중복·오류를 정리하고 공통 key·schema·품질 규칙을 적용한 계층이다.
GoldGold layer
매출·고객·운영 KPI처럼 특정 업무 질문에 맞춰 제공하는 소비 계층이다.
온프렘 DB·사내 파일·AWS 소스가 JDBC·CDC·파일 수집을 거쳐 Bronze에 들어오고 Silver·Gold로 이어지며, job orchestration이 각 단계를 감싸는 흐름

이 장의 질문은 “CX/DX로 source에 연결한 다음 무엇을 해야 하는가”다. 연결 자체보다 재실행, 중복, schema 변화, source 부하를 처리하는 pipeline contract가 중요하다.

Source시작하기 좋은 방식반드시 정할 것
작은 온프렘 RDBMS tableclassic job의 JDBC + watermark 증분 readindex, read replica, 추출 시간대, delete 처리
변화량이 큰 운영 DBlog 기반 CDC → S3/Kinesis → Bronzeinitial load, ordering, schema change, lag
사내 file droptransfer 영역의 S3 landing → incremental file ingestion완료 marker, 중복 file, quarantine
RDS·DynamoDB 등 AWS sourceAWS native export/DMS 또는 connectorsource 부하, IAM, region, incremental key
application eventKafka/Kinesis stream → streaming tableevent time, late data, retention, replay

Databricks가 source DB에 직접 JDBC로 연결할 수 있다는 사실과 그것이 운영에 좋은 ingestion 방식이라는 판단은 다르다. 초기 PoC에는 직접 read가 빠르지만, production에서는 source owner가 허용한 replica, incremental window와 concurrency를 contract로 둔다.

Bronze에서 원본을 버리지 않는다

섹션 제목: “Bronze에서 원본을 버리지 않는다”

Bronze는 지저분한 데이터를 방치하는 곳이 아니라 실패를 고쳐 다시 처리할 수 있는 증거다. source primary key, ingestion timestamp, source file·offset, operation type을 남긴다. 잘못된 record는 조용히 drop하지 않고 quarantine table과 품질 지표로 보낸다.

Silver에서는 다음을 결정한다.

  • business key와 중복 제거 기준
  • timezone·단위·code 표준화
  • 개인정보 masking·tokenization 적용 시점
  • delete와 late-arriving update 처리
  • schema evolution을 자동 허용할 범위와 중단할 범위
  • quality failure가 pipeline을 막는지 별도 격리되는지

Gold는 source table을 그대로 복사한 것이 아니라 소비자의 질문과 SLA를 가진 product다. owner, refresh time, quality threshold, semantic definition과 downstream consumer를 함께 관리한다.

수집 job이 감지·읽기·검증을 거쳐 커밋·발행으로 끝나거나, 품질 실패로 격리되고 재시도가 소진되면 알림으로 끝나는 상태 전이

checkpoint와 Delta transaction을 사용해 같은 input을 다시 받아도 결과가 중복되지 않도록 설계한다. job 성공 여부만 보지 말고 input count, rejected count, freshness, CDC lag와 target count를 관측한다.