피드로 돌아가기
컬리 기술블로그Backend
원문 읽기
컬리의 BigQuery 도입기 - 2부
컬리가 기존 Data Warehouse를 BigQuery로 이전하여 데이터 적재 시간을 30분에서 13초로 단축하고 비용을 대폭 절감
AI 요약
Context
기존 Data Warehouse는 UPSERT 방식으로 데이터를 적재하는 4단계 스크립트 프로세스로 인해 30분 이상의 지연 시간이 발생했다. 또한 Delete 작업이 반영되지 않아 원본 테이블과 데이터 정합성이 맞지 않는 경우가 발생했고, 서버 규모에 따른 고정 비용 구조로 인해 비용 효율성이 낮았다.
Technical Solution
- 정형 데이터 파이프라인 구축: RDBMS(Oracle, Aurora DB)의 CDC 로그를 AWS DMS Service로 Kafka Topic으로 전송하고, BigQuery Streaming API를 통해 CDC 로그 테이블에 저장한 후 Merge Procedure로 Final 테이블 동기화
- 비정형 데이터 파이프라인 구축: DocumentDB의 Change Stream을 AWS DMS Service로 Kafka Topic으로 전송하고, JSON Format Processing을 통해 필수 칼럼을 추출한 후 동일한 Merge Procedure로 Final 테이블 동기화
- Merge 문 기반 데이터 적재: Insert, Update, Delete 작업을 단일 Merge 문으로 처리하여 스크립트 기반 UPSERT 방식 제거
- 프로젝트 분리 구조: 데이터 파이프라인용 프로젝트와 데이터 조회용 프로젝트를 분리하여 독립적인 리소스 할당
- 비용 최적화 전략: 스캔 용량이 크고 사용자가 많은 프로젝트는 슬롯 예약 구매, 스캔 용량이 적은 프로젝트는 일일 데이터 스캔 용량 제한으로 관리
Impact
- 데이터 적재 시간 30분 이상에서 13초로 단축
- 프로젝트 분리를 통한 쿼리 응답 시간 대폭 감소
- 파티션 필수 사용 옵션 설정으로 스캔 용량 감소
- 기존 Data Warehouse 대비 전체 비용 대폭 감소
Key Takeaway
CDC 기반 이벤트 스트리밍 아키텍처와 Merge 문을 활용한 선언적 데이터 동기화는 기존 배치 기반 UPSERT 방식의 지연 시간과 정합성 문제를 근본적으로 해결할 수 있다. 또한 프로젝트 분리와 슬롯 기반 비용 관리는 데이터 파이프라인과 조회 작업의 리소스 경합을 제거하고 전체 TCO를 최적화하는 효과적인 전략이다.
실천 포인트
기존 배치 기반 데이터 웨어하우스를 운영하는 조직에서 CDC 로그 + 이벤트 스트리밍 + Merge 문 패턴을 도입하면 데이터 적재 지연 시간을 획기적으로 단축하고 원본 DB와의 실시간 정합성을 보장할 수 있다. 특히 비정형 데이터의 경우 JSON 타입을 지원하는 데이터 웨어하우스를 선택하면 스키마 변환 로직의 복잡성을 대폭 줄일 수 있다.