
컬리의 BigQuery 도입기 - 2부
두줄요약
BigQuery 기반 CDC 파이프라인으로 정형·비정형 데이터를 Final 테이블에 동기화했습니다.\nMerge와 리소스 분리로 적재 시간·조회 응답 시간·비용을 개선했습니다.
구조와 흐름
- RDBMS의 CDC 로그를 AWS DMS로 Kafka Topic에 전송하고 BigQuery Streaming API로 일자 파티션 CDC 로그 테이블 적재
- Cloud Composer(Airflow)의 BigQuery Job Operator로 Merge Procedure를 주기 실행해 원본 DB와 동일한 Final 테이블 구성
- DocumentDB Change Stream은 JSON Format Processing으로 병합 필수 칼럼을 추출하고 원본 Document는 JSON 타입 data 칼럼에 보관
선택 이유
- 저렴한 스토리지 비용과 높은 확장성을 활용한 데이터 레이크하우스 구축
- JSON 타입 지원을 통한 스키마가 고정되지 않은 로그와 Document 데이터 보관
성능/운영 포인트
- Merge 문으로 Insert·Update·Delete를 반영해 기존 UPSERT 방식의 삭제 미반영 문제 해소
- 30분 이상 소요되던 Task를 13초로 단축하고 데이터 연동 지연 감소
- 파이프라인·조회 프로젝트 분리, 파티션 조회 강제, 슬롯 예약 및 일일 스캔 한도로 응답 시간과 비용 개선
적용해볼 점
- CDC 로그에 Primary Key, 생성일자, DML operation, CDC 발생 시각을 포함한 Final 테이블 동기화
- 스캔량과 사용자 수에 따른 BigQuery 슬롯 예약 및 쿼리 스캔량 제한
