퀸잇이 대규모 트래픽 속에서 DB 부하를 차단하고 S3 비용을 95%나 절감한 StarRocks 아키텍처 튜닝 여정
이 글은 퀸잇의 광고 성과 데이터 시스템이 겪은 확장성 한계를 극복하기 위해 OLAP DB인 StarRocks를 도입한 과정을 소개합니다. 데이터 유실과 비용 폭증 등의 실전 문제를 external table 전략, shared-nothing 구조 전환, 정교한 Materialized View 설계를 통해 해결한 시니어 엔지니어들의 생생한 노하우를 담고 있습니다.
대규모 실시간 집계 연산이 필요하거나 RDBMS 기반 배치로 인해 시스템 부하 및 정합성 이슈를 겪고 있는 백엔드 및 데이터 엔지니어에게 분산 OLAP 설계 지침서로 적극 추천합니다.
기존 퀸잇의 광고 성과 제공 시스템은 MySQL 배치 집계 및 Kafka consumer 구조로 동작하여 트래픽 증가 시 확장성이 부족했고, 지속적인 DB 쓰기 부하 증가, 간헐적인 집계 누락 및 장애 복구의 어려움을 겪고 있었습니다.
대용량 데이터 집계와 분석에 특화된 OLAP DB인 StarRocks를 도입하고 원천 데이터를 S3와 AWS Glue 기반의 external table로 조회하게 설계했으며, 비용 효율을 위해 클러스터 아키텍처를 shared-nothing으로 구성하고 파티셔닝/버켓팅 기반의 Materialized View를 구축했습니다.
광고 서버의 DB 부하가 크게 감소하고 집계 누락이 차단되었으며 장애 복구가 매우 쉬워졌습니다. 특히 shared-data에서 shared-nothing 아키텍처로 전환하여 빈번한 S3 API 호출을 줄임으로써 S3 관련 비용을 기존 대비 약 95% 절감했습니다.
Trade-off
원천 데이터를 엔진 내부에 적재하지 않고 외부에 두는 external table 전략을 취했기 때문에 내부 로컬 스토리지를 조회하는 방식에 비해 원격 조회 성능 면에서 불리할 수 있으며, shared-nothing 전환으로 인해 로컬 디스크 및 인프라를 직접 관리해야 하는 운영 부담이 따릅니다.
대규모 데이터 분석 및 실시간 조회를 처리하기 위해 설계된 고성능 분산 OLAP 데이터베이스로, 강력한 비용 기반 옵티마이저(CBO)와 뛰어난 조인 연산 성능을 제공합니다.
데이터를 데이터베이스 내부 스토리지에 직접 적재하지 않고, S3나 Glue와 같은 외부 데이터 레이크의 메타데이터를 활용하여 실시간으로 원격 조회하는 방식입니다.
분산 데이터베이스 환경에서 조인 키가 동일한 테이블의 데이터 블록(태블릿)들을 물리적으로 동일한 노드에 강제 배치하여, 네트워크 전송 비용 없이 노드 내부에서 고속 조인을 수행하는 기술입니다.