#Backend

고객 타게팅을 좀 더 정교하게, ClickHouse 도입기

고객 타게팅을 좀 더 정교하게, ClickHouse 도입기
01

Summary

20억 건의 데이터도 거뜬하게! 채널톡의 ClickHouse 도입으로 완성한 초개인화 마케팅

RDBMS의 한계를 넘어 OLAP 시스템으로 실시간 타게팅의 정점에 도달하는 여정

채널톡이 폭발적으로 늘어나는 고객 행동 데이터를 정교한 마케팅으로 연결하기 위해 선택한 ClickHouse 도입기입니다. 단순한 기술 도입을 넘어 ReplacingMergeTree의 한계와 JOIN 성능 문제를 하이브리드 아키텍처로 돌파하며 얻은 시니어 엔지니어의 생생한 기술적 통찰을 담고 있습니다.

  • 0120억 건 이상의 쿠폰 데이터를 실시간으로 조회하기 위한 OLAP 전환 전략
  • 02ReplacingMergeTree의 한계를 극복하는 Hot/Cold 데이터 분리 설계
  • 03수백만 건 규모의 필터링된 데이터셋을 위한 Parallel Hash Join 최적화
  • 04포인트 쿼리 약점을 보완하는 ClickHouse + KV Store 하이브리드 아키텍처
  • 05데이터 가용성과 성능 사이에서 최적의 균형점을 찾는 아키텍처 의사결정 과정

RECOMMENDATION

대규모 쓰기 트래픽과 복잡한 분석 쿼리를 동시에 해결해야 하는 데이터 엔지니어에게 추천하며, 특히 실시간 세그먼테이션 기능이 필요한 B2B SaaS 또는 커머스 서비스 설계 시 실질적인 가이드를 제공합니다.

The Problem

채널톡의 기존 RDBMS(PostgreSQL) 및 NoSQL(DynamoDB) 환경은 20억 건이 넘는 쿠폰 데이터와 장바구니 등 복잡한 커머스 행동 데이터를 실시간으로 JOIN하고 타게팅 쿼리를 수행하기에는 I/O 병목 및 꼬리 지연(Tail Latency) 문제가 발생하여 확장성에 한계가 있었습니다. 특히 100:1에 달하는 쓰기 집중형 워크로드와 블랙 프라이데이와 같은 스파이키(Spiky)한 트래픽 환경에서 정교한 세그먼테이션을 구현해야 하는 과제가 존재했습니다.

The Solution

대규모 데이터 분석에 특화된 OLAP 시스템인 ClickHouse를 도입하였으며, 관리 효율성을 위해 ClickHouse Cloud를 활용했습니다. 데이터 업데이트의 한계를 극복하기 위해 Hot/Cold 데이터를 분리하여 관리하고, ClickHouse의 약점인 포인트 쿼리 성능을 보완하기 위해 Key-Value Store를 병행 운영하는 하이브리드 아키텍처를 설계하여 데이터 정합성과 쿼리 성능을 동시에 확보했습니다.

The Result

수억 건 이상의 팩트 테이블(Fact Table)을 대상으로 수백 밀리초 수준의 지연 시간 내에 정교한 고객 타게팅이 가능해졌으며, Parallel Hash Join 등을 통해 수백만 건 이하의 필터링된 데이터셋 연산을 안정적으로 처리하게 되었습니다. 또한 OLAP 도입 과정에서 얻은 기술적 이해도를 바탕으로 향후 StarRocks 도입 등 더 복잡한 분석 요구사항을 해결할 수 있는 기반을 마련했습니다.

Trade-off

ClickHouse의 단순한 구조를 유지하기 위해 전체 시스템 아키텍처에 Key-Value Store를 추가하는 등 하이브리드 구성을 선택함으로써 데이터 동기화 과정에서의 엔지니어링 비용과 시스템 복잡도가 상승하는 결과가 초래되었습니다. 또한 대규모 JOIN 연산 시 시스템 자원 소모가 크며, 포인트 쿼리 처리를 위해 추가적인 레이어가 필요하다는 구조적 제약이 존재합니다.

03

Key Concepts

Concept · 01

ReplacingMergeTree

ClickHouse에서 데이터 업데이트를 지원하기 위한 엔진으로, 중복된 데이터를 백그라운드 머지 시점에 제거하는 방식입니다.

  • 쓰기 시점에는 중복을 허용하고 머지 시점에 최종 데이터를 남겨 Append Only 성능을 극대화합니다.
  • 실시간 쿼리 시 FINAL 키워드를 통한 중복 제거가 성능에 부담을 줄 수 있음을 본문에서 지적했습니다.
Concept · 02

Columnar Storage

데이터를 행(Row) 단위가 아닌 열(Column) 단위로 저장하여 분석에 필요한 특정 컬럼만 빠르게 읽어오는 방식입니다.

  • 대규모 집계 연산 및 필터링에서 RDBMS보다 압도적인 I/O 효율성을 제공합니다.
  • 채널톡의 수억 건 규모 고객 세그먼테이션 쿼리를 가능하게 만든 핵심 구조입니다.
Concept · 03

Granule

ClickHouse가 데이터를 인덱싱하고 저장하는 최소 단위로, 수천 개의 아이템을 하나의 블록으로 관리합니다.

  • 대량의 데이터를 스캔하는 데는 효율적이지만 단일 행을 찾는 포인트 쿼리에는 비효율적일 수 있습니다.
  • 본문에서는 이러한 제약을 극복하기 위해 Key-Value Store를 보조 저장소로 활용했습니다.