백엔드
광고 성과 데이터 StarRocks 도입기
두줄요약
MySQL 기반 광고 성과 집계의 확장성과 안정성 문제를 해결하기 위해 StarRocks를 도입했습니다.\n외부 원천, MV 설계, 아키텍처 전환으로 부하 분리와 복구 편의성을 확보했습니다.
문제 상황
- MySQL 기반 광고 성과 집계 시스템의 확장성 한계와 DB 쓰기 부하 증가
- 간헐적 집계 누락과 장애 시 원천 수정이 성과 데이터에 자동 반영되지 않는 복구 어려움
원인 분석
- 캠페인 단위 중심 구조라 더 작은 집계 단위 추가 시 배치, 컨슈머, 테이블을 매번 새로 구현해야 하는 비효율
- 증분 업데이트와 커서 기반 조회로 인해 누락·불일치·보정 데이터 생성 문제가 발생
해결 방법
- OLAP DB로 StarRocks 도입, 원천은 Iceberg/Glue 외부에 두고 성과 데이터는 external table과 MV로 서빙
- shared-data에서 shared-nothing으로 전환하고, 파티셔닝·버켓팅·colocate join·nested MV로 조회와 갱신 최적화
성능/운영 포인트
- MySQL 쓰기 부하와 성과 조회 부담 분리로 평균활성세션, 커밋 레이턴시, 커넥션 대기 시간 개선
- 파티션 단위 incremental refresh로 누락 차단, 장애 시 원천 수정만으로 빠른 복구 가능
