백엔드
고객 타게팅을 좀 더 정교하게, ClickHouse 도입기
두줄요약
고객 타게팅 정교화를 위해 대용량 커머스 데이터를 처리할 OLAP로 ClickHouse를 도입했습니다. 다만 JOIN, Point Query, 업데이트성 데이터 제약은 Hot/Cold 분리와 보조 저장소로 보완했습니다.
문제 상황
- 고객 행동·커머스 데이터 기반 정교한 타게팅 필요성
- 쿠폰, 장바구니, 주문 같은 대용량 데이터에서 RDBMS 한계와 JOIN·인덱싱 부담
- Write Heavy, Spiky 트래픽, 준 실시간·최종 일관성 중심 워크로드
원인 분석
- 주문·쿠폰·장바구니 데이터가 수억~수십억 건 규모로 누적
- 여러 저장소에 분산된 데이터로 복잡한 세그먼트 조건 처리 어려움
- Point Query와 대규모 JOIN이 동시에 필요한 구조
해결 방법
- OLAP 시스템인 ClickHouse 도입으로 분석형 쿼리와 대용량 처리 분리
- ClickHouse Cloud와 MergeTree 계열 구조로 빠른 도입과 운영 단순화 선택
- Hot/Cold 분리와 Key-Value Store 병행으로 업데이트성 데이터와 멤버십 체크 보완
주의할 점
- ReplacingMergeTree의 중복 제거가 Merge 시점에 이뤄져 FINAL 사용 시 성능 저하 가능
- 큰 테이블 간 distributed JOIN과 복잡한 multi-way JOIN에는 제약
- Granule 기반 저장 구조로 Point Query 효율이 낮아 보조 저장소 필요
