본문으로 이동
고객은 절대 기다려주지 않는다: 빠른 데이터 서빙으로 고객 만족도를 수직 상승 시키는 법
문서

고객은 절대 기다려주지 않는다: 빠른 데이터 서빙으로 고객 만족도를 수직 상승 시키는 법

이세찬 · 토스 · 토스 기술 블로그

원본 보기

소개

토스페이먼츠 데이터 엔지니어링 팀이 50억 건의 데이터를 1초 이내로 조회하는 시스템을 구축한 이야기를 들려드려요.

AI 핵심 요약

거래 데이터가 늘고 MSA 환경에서 도메인 간 조회·검색·집계 요구가 복잡해지자, 토스페이먼츠는 원장 DB에 부담을 주지 않으면서 빠른 데이터 서빙 구조를 설계했습니다. 먼저 Kafka 메시지 발행과 Druid를 도입해 실시간 집계와 조회를 처리하고, Rollup으로 수십억 건을 스캔하던 쿼리의 응답 시간을 수십 초에서 0.5~1초 수준으로 줄였습니다. 이후 Druid의 멱등성 처리와 조인 제약을 보완하기 위해 CDC·Flink 기반으로 StarRocks를 도입하고, Colocation Group과 Prefix Index로 대규모 조인과 데이터 스캔을 최적화했습니다. 검색은 Elasticsearch, 시계열 집계는 Druid, 통합 원장과 조인은 StarRocks에 맡긴 경험을 통해 만능 엔진을 찾기보다 적게 읽고 각 엔진의 강점을 조합하는 것이 핵심이라고 설명합니다.

  • 검색과 분석·조인을 한 엔진에 몰아넣기보다 Elasticsearch, Druid, StarRocks의 강점을 나눠 활용하세요.
  • Rollup은 반복 집계의 비용을 적재 시점에 부담해 조회 때 읽는 데이터량을 줄이는 방법입니다.
  • StarRocks의 Colocation Group은 조인 키와 버킷 구성을 맞춰 데이터 셔플을 줄이지만, 확장 시 제약을 고려해야 합니다.
  • 자주 쓰는 필터를 Sort Key 앞쪽에 배치하면 Prefix Index로 불필요한 데이터 블록을 건너뛸 수 있습니다.
  • 대량 적재 전에는 세그먼트와 Zookeeper 로그 증가, 파편화, 중복 이벤트 재처리 같은 운영 위험도 점검해야 합니다.