핵심 요약
dbt-core 1.10에서 Iceberg 1차 지원. 사내 dbt 프로젝트 1개(모델 420개)를 Snowflake-only에서 Snowflake + Iceberg 하이브리드로 전환. compute 비용 월 $8.2K → $3.9K, 쿼리 호환 95%, 마이그레이션 ~3개월.
1. dbt + Iceberg 핵심
-- models/staging/orders.sql
{{ config(
materialized='table',
file_format='iceberg',
location_root='s3://datalake/staging/',
catalog='polaris',
table_properties={ 'write.format.default': 'parquet' }
) }}
SELECT * FROM {{ source('raw', 'orders') }}
materialized 옵션에 iceberg 추가. catalog 지정 시 Polaris·Tabular·Glue 자동 등록.
2. 워크로드 분리 전략
| 계층 | 위치 | 이유 |
|---|---|---|
| Bronze(raw) | Iceberg | 저장 비용 압도 |
| Silver(staging) | Iceberg | dbt 변환 자유 |
| Gold(mart, BI) | Snowflake native | 쿼리 성능 + BI 호환 |
3. 비용 효과
- Snowflake storage: $14K → $2.4K (Bronze/Silver 이전)
- Snowflake compute: $24K → $14K (변환은 Iceberg + Spark)
- S3 + Iceberg metadata: +$3.8K
- 순 절감: 월 $25K → $20K (-20%) 단순 비용. 단 PoC·ad-hoc 분석 자유도 증가가 더 큰 가치
4. 다중 엔진 — Iceberg의 진가
같은 Iceberg 테이블을 Snowflake·Trino·Spark·DuckDB·Polars로 동시 읽기. ad-hoc 분석은 DuckDB(로컬), 큰 배치는 Spark(EMR), BI는 Snowflake. 데이터 복제 0.
5. 함정
- Snowflake → Iceberg COPY 인서트 비용 — 마이그레이션 1회성 $3K 발생
- Time travel 정책 — Snowflake 90일 default, Iceberg는 snapshot 무한, 정기 expire snapshot 필요
- dbt incremental — Iceberg의 upsert 미지원 일부 패턴, merge 직접 작성
- Catalog 권한 — Polaris의 RBAC와 Snowflake의 grant 통합 안 됨, 두 곳 동기화

댓글 0