
컬리의 BigQuery 도입기 - 1부
두줄요약
기존 데이터 파이프라인의 지연, 스토리지, 쿼리 경합, 복잡성 문제를 분석했습니다. BigQuery Streaming API와 프로젝트·파티션 분리로 개선 방향을 설계했습니다.
문제 상황
- 기존 Data Warehouse의 최소 20분~최대 1시간 이상 데이터 지연
- 증가하는 데이터에 따른 스토리지 부족과 주기적 데이터 삭제
- 파이프라인과 분석 쿼리의 자원 경쟁으로 인한 응답 지연
구조와 흐름
- Oracle·Aurora DB·DocumentDB의 CDC 로그를 AWS DMS로 Kafka Topic에 전송
- Kafka 데이터를 Amazon S3의 일자 파티션 JSON으로 저장 후 Airflow Pod 스크립트로 Data Warehouse 적재
- 다단계 적재 구조로 장애 발생 구간 추적과 원인 파악의 어려움
해결 방법
- Kafka Topic에서 BigQuery Streaming API로 직접 적재해 S3 읽기 I/O와 적재 단계 축소
- 데이터 파이프라인용 프로젝트와 조회용 프로젝트 분리로 쿼리 자원 경쟁 완화
- 스토리지 사용량 기반 과금에 맞춘 테이블 파티션별 보관 기간 설정
성능/운영 포인트
- 생성일자 기준 파티션으로 데이터 생명주기와 스캔 범위 관리
- Where 절의 파티션 범위 지정 강제로 불필요한 데이터 스캔 방지
- 예약 슬롯 프로젝트와 일일 스캔 용량 제한 프로젝트의 분리 운영
