이 요약은 AI가 원문을 분석해 생성했습니다. 정확한 내용은 원문 기준으로 확인하세요.
핵심 요약
기존 Trino 기반 조회 시스템의 한계를 극복하기 위해 StarRocks의 Materialized View 기능을 도입하여 쿼리 응답 속도를 1초 미만으로 단축하고 데이터 최신성을 확보했다.
배경
네이버 커머스 서비스에서 발생하는 방대한 거래 데이터를 실시간으로 집계하고 다양한 조건으로 빠르게 조회해야 하는 요구사항이 발생했다.
대상 독자
데이터 엔지니어, 데이터 아키텍트, BI 개발자
의미 / 영향
데이터 레이크(Iceberg)의 유연성과 OLAP 엔진(StarRocks)의 고성능 조회 능력을 결합하여 실시간 비즈니스 인텔리전스 환경을 구축했다. 이는 대규모 이커머스 플랫폼에서 데이터 최신성과 사용자 경험(응답 속도)을 동시에 만족시키는 표준 아키텍처로 활용될 수 있다.
챕터별 상세
02:20
문제 정의 및 요구사항
네이버 커머스 거래 데이터를 기반으로 디바이스, 카테고리, 판매자 등 15개 차원과 거래액, 주문건수 등 13개 측정값을 실시간으로 집계해야 하는 요구사항이 정의되었다. 사용자는 다양한 필터 조합으로 동적 분석을 수행하며, 최대 7주간의 과거 지표와 실시간 지표를 비교 조회한다. 데이터의 최신성(Freshness) 보장과 대량의 Join 연산을 포함한 쿼리의 빠른 응답 속도가 핵심 과제였다.
- •15개 차원과 13개 측정값에 대한 실시간 집계 필요
- •다양한 Dimension/Filter 조합에 대한 빠른 응답 요구
- •실시간 데이터와 최대 7주간의 과거 데이터 비교 분석 지원
06:01
기술적 도전 과제
준실시간 집계 환경에서 패턴별 재집계 요구가 늘어남에 따라 응답 지연이 발생했다. 특히 스냅샷 및 마스터 테이블과의 대용량 Join 연산은 높은 비용을 초래했다. 마스터 데이터 변경 시 과거 2개월치 집계 데이터를 단시간에 재반영해야 하는 변경 전파 문제와 무수한 조회 패턴에 대응하는 범용 최적화의 어려움이 존재했다.
- •패턴별 재집계 요구 증가로 인한 쿼리 응답 지연 발생
- •대용량 마스터 테이블 Join으로 인한 고비용 연산 구조
- •마스터 데이터 변경 시 과거 집계 데이터의 실시간 재반영 필요
07:03
OLAP 엔진 리서치 및 StarRocks 선정
ClickHouse, StarRocks, Druid 등 다양한 OLAP 엔진을 검토한 결과 StarRocks가 Apache Iceberg 쿼리 가속에 탁월한 성능을 보임을 확인했다. StarRocks는 C++ 기반 벡터화 엔진과 인메모리 아키텍처를 갖추고 있으며, 특히 Materialized View를 통한 쿼리 최적화 기능을 제공한다. 과거 리서치에서 발견된 대용량 데이터 처리 및 스토리지 관리 이슈를 해결할 수 있는 대안으로 StarRocks를 최종 선정했다.
- •ClickHouse, StarRocks, Druid 등 주요 OLAP 엔진 성능 비교
- •StarRocks의 C++ 기반 벡터화 엔진 및 메타데이터 캐싱 기능 활용
- •Iceberg 테이블 포맷과 StarRocks 쿼리 엔진의 시너지 확인
15:00
전체 아키텍처 설계
Kafka를 통해 수집된 스트리밍 데이터는 Spark Structured Streaming을 거쳐 Iceberg 테이블에 저장된다. StarRocks는 Iceberg의 External Catalog를 통해 데이터를 직접 바라보며, 그 위에 Materialized View를 생성하여 집계 성능을 극대화한다. 최종적으로 Tableau 대시보드와 연결되어 사용자에게 1초 미만의 응답 속도로 리포트를 제공하는 End-to-End 구조를 완성했다.
- •Kafka-Spark-Iceberg-StarRocks로 이어지는 실시간 파이프라인 구축
- •처리(Spark)와 조회(StarRocks) 레이어의 명확한 분리
- •Iceberg 테이블 포맷을 활용한 유연한 확장성 확보
19:18
스트리밍 파이프라인 및 Iceberg 구성
Spark Structured Streaming을 활용해 2분 주기 트리거와 10분 단위 윈도잉을 적용했다. 마스터 데이터와의 Join 성능을 위해 멀티 데이터프레임 캐시 전략을 사용하며, Iceberg 테이블은 10분 주기 파티션으로 데이터를 저장한다. Iceberg의 스냅샷 관리 기능을 통해 데이터 안정성을 확보하고 스키마 진화에 유연하게 대응하도록 설계했다.
- •10분 단위 윈도잉 및 파티셔닝으로 데이터 라이트 최적화
- •Static Join 성능 향상을 위한 멀티 데이터프레임 캐시 적용
- •Iceberg의 타임 트래블 및 롤백 기능을 통한 운영 안정성 확보
23:30
StarRocks Materialized View 구현 상세
StarRocks의 Materialized View는 반복적인 집계 쿼리를 물리적으로 저장하여 성능을 개선한다. 2분 주기의 비동기(Async) 리프레시 설정을 통해 최신성을 유지하며, 파티션 보존 정책을 설정해 최근 2개월 데이터만 관리한다. 마스터 데이터 변경 시 별도의 마이그레이션 없이 MV 리프레시 과정에서 변경 사항이 자동으로 반영되도록 쿼리를 구성했다.
- •2분 주기 비동기 리프레시로 실시간 데이터 최신성 유지
- •파티션 보존 정책(Retention) 설정을 통한 스토리지 효율화
- •마스터 데이터 변경 시 MV 리프레시를 통한 자동 변경 전파
27:20
성능 비교 및 결과
기존 Trino 기반 조회와 비교했을 때 StarRocks Materialized View 도입 후 성능이 비약적으로 향상되었다. 판매자별 조회 기준 Trino에서 1분 이상 소요되던 쿼리가 StarRocks MV에서는 0.5초 이내로 단축되었다. 대시보드 쿼리의 99%가 1초 미만의 응답 속도를 기록했으며, 다양한 필터 조합에도 일관된 성능을 보장함을 확인했다.
- •판매자별 조회 성능 1분에서 0.5초로 약 120배 향상
- •대시보드 쿼리의 99%가 1초 미만 응답 속도 달성
- •다양한 필터 및 차원 조합에 대한 일관된 성능 확보
sql
CREATE MATERIALIZED VIEW kr_summary_bi_order_stat_all_view
PARTITION BY (p_ymd)
DISTRIBUTED BY RANDOM
REFRESH ASYNC START('2025-07-01 00:00:00') EVERY(INTERVAL 2 MINUTE)
PROPERTIES (
'replicated_storage' = 'true',
'replication_num' = '3',
'partition_retention_condition' = 'p_ymd >= CURRENT_DATE() - INTERVAL 2 MONTH',
'storage_medium' = 'HDD'
)
AS
SELECT
t1.p_ymd,
t1.catg_id,
SUM(t1.order_amt) AS total_amt,
COUNT(t1.order_no) AS order_cnt
FROM iceberg_catalog.hms_kr.summary_bi_order_statistics AS t1
LEFT JOIN iceberg_catalog.hms_kr.dw__zz.sdm__meta_shp_category_mtr_mst AS t2
ON t1.catg_id = t2.catg_id
GROUP BY t1.p_ymd, t1.catg_id;StarRocks에서 Iceberg 테이블을 기반으로 비동기 리프레시 방식의 Materialized View를 생성하는 DDL 예시
실무 Takeaway
- StarRocks의 Materialized View를 활용하면 복잡한 Join과 집계가 포함된 쿼리를 미리 계산하여 1초 미만의 응답 속도를 보장할 수 있다.
- Iceberg의 External Catalog 기능을 StarRocks와 연동하면 별도의 데이터 복제 없이도 데이터 레이크의 데이터를 효율적으로 조회할 수 있다.
- Spark Structured Streaming에서 10분 단위 윈도잉과 파티셔닝을 적용하여 데이터 라이트 횟수를 최적화하고 Iceberg의 스캔 성능을 높였다.
- 마스터 데이터 변경 시 Materialized View의 리프레시 메커니즘을 활용하면 과거 집계 데이터에 대한 재작업 비용을 크게 줄일 수 있다.
언급된 리소스
AI 분석 전체 내용 보기
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
원문 발행 2025. 12. 01.수집 2026. 02. 21.출처 타입 YOUTUBE
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.