LLM WikiAccess-protected knowledge portal

WIKI

StarRocks·Iceberg 서빙: 운영 DB와 분석 질의를 분리하기

왜 Iceberg 하나로 끝나지 않는가 Iceberg·S3 Tables는 큰 데이터를 싸게 보존하고 여러 엔진이 함께 읽기 좋다. 그러나 사용자가 보는 대시보드나 검색 API가 1초 이내 응답을 요구하면 오브젝트 스토리지의 파일을 매번 스캔하는 엔진만으로는 지연을 안정적으로 맞추기 어렵다. 리멤버 공개 자료는 Aurora MySQL의 운영 트랜잭션과 분석 쿼리를 분리하고, S3 Tables에 쌓인 CDC 데이터를 EKS 위 S

경로human/study/content/remember-data-engineering/07-starrocks-iceberg-serving.md
카테고리Study
태그#data #engineering #iceberg #infra #monitoring #mysql #serving #starrocks #study

왜 Iceberg 하나로 끝나지 않는가

Iceberg·S3 Tables는 큰 데이터를 싸게 보존하고 여러 엔진이 함께 읽기 좋다. 그러나 사용자가 보는 대시보드나 검색 API가 1초 이내 응답을 요구하면 오브젝트 스토리지의 파일을 매번 스캔하는 엔진만으로는 지연을 안정적으로 맞추기 어렵다.

리멤버 공개 자료는 Aurora MySQL의 운영 트랜잭션과 분석 쿼리를 분리하고, S3 Tables에 쌓인 CDC 데이터를 EKS 위 StarRocks로 가져와 저지연 질의를 제공한 구조를 설명한다.

OLTPAurora MySQL
→ CDC →
레이크하우스S3 Tables / Iceberg
저지연 OLAPStarRocks on EKS
대시보드·API
운영·보존·서빙의 책임 분리

1. 기존 선택의 한계부터 본다

공개 자료에서 기존 분석은 Presto on EMR과 Athena를 사용했다.

그래서 대형 ad-hoc 스캔과 저지연 반복 질의를 같은 엔진으로 풀지 않는다.

2. StarRocks를 서빙 계층으로 보는 이유

StarRocks는 컬럼 기반 MPP OLAP 데이터베이스다. 여러 노드가 스캔·조인·집계를 나눠 실행하고, 컬럼 지향 저장과 vectorized execution으로 분석 쿼리에 맞춰져 있다.

리멤버 사례에서 중요한 기능은 다음이다.

다만 Iceberg를 직접 읽기StarRocks 내부 테이블로 복제해 서빙하기는 freshness, 지연, 저장 중복이 다른 선택이다.

3. 어떤 데이터를 서빙 계층에 올릴지 정하는 기준

모든 Iceberg 테이블을 StarRocks에 복제하면 두 시스템의 스토리지·스키마·재처리 비용을 모두 감당해야 한다. 아래 조건을 만족하는 워크로드부터 선택한다.

4. 실시간은 하나의 지표가 아니다

end-to-end freshness는 여러 구간의 합이다.

MySQL commit → Debezium 탐지 → Kafka 전달 → Iceberg commit → StarRocks 반영 → 대시보드 조회

전체 지연만 보면 어느 구간이 느린지 모른다. 아래 지표를 분리한다.

파이프라인이 빠라도 잘못된 데이터를 빨리 보여 주면 실패다. 그래서 freshness, latency, correctness를 동시에 본다.

5. 장애 시 어디까지 제공할지 정한다

References