Snowflake 아키텍처와 Databricks 비교 - 어떤 경우에 무엇을 쓸 것인가
⏱️ 45분
📊 중급
Snowflake 아키텍처와 Databricks 비교 - 어떤 경우에 무엇을 쓸 것인가
“Snowflake와 Databricks는 포지션이 다르다. 1:1 승자 비교보다, 언제 무엇을 쓸지 선택 기준을 갖는 것이 중요하다.”
Snowflake는 클라우드 네이티브 데이터 웨어하우스, Databricks는 레이크하우스 기반 통합 데이터·AI 플랫폼입니다. 둘 다 대용량 데이터를 다루지만, 설계 철학과 강점이 달라 어떤 상황에서 무엇을 선택할지 기준을 갖는 것이 실무에 도움이 됩니다.
이 글에서는 Snowflake의 아키텍처를 먼저 정리하고, Databricks와의 포지셔닝 차이, 사례별 추천, 함께 쓰는 패턴을 살펴봅니다.
📚 목차
🏗️ Snowflake 플랫폼 아키텍처
큰 그림: 3레이어 분리
Snowflake는 처음부터 스토리지·컴퓨팅·서비스를 분리한 설계입니다.
┌─────────────────────────────────────────────────────────────┐
│ 서비스 레이어 (Cloud Services) │
│ 인증, 메타데이터, 쿼리 최적화, 웨어하우스 관리 │
└─────────────────────────────────────────────────────────────┘
↑
┌─────────────────────────────────────────────────────────────┐
│ 컴퓨팅 레이어 (Virtual Warehouses) │
│ 쿼리 실행, DML, 데이터 로드·언로드 │
└─────────────────────────────────────────────────────────────┘
↑
┌─────────────────────────────────────────────────────────────┐
│ 스토리지 레이어 (S3 / Azure Blob / GCS) │
│ 실제 데이터 저장, 자동 압축·파티셔닝 │
└─────────────────────────────────────────────────────────────┘
1. 스토리지 레이어
- 클라우드 객체 스토리지 (S3, Azure Blob, GCS)에 데이터 저장
- 자동 압축·마이크로 파티셔닝: 사용자가 파티션을 직접 지정할 필요 없음
- 비용: 저장된 용량만 과금 (컴퓨팅은 별도)
- Zero Copy Clone: 테이블/스키마/DB 복제 시 실제 복사 없이 메타데이터만 복제 → 빠른 dev/staging 생성
-- Zero Copy Clone 예시
CREATE DATABASE analytics_dev CLONE analytics_prod;
CREATE SCHEMA analytics_dev.staging CLONE analytics_prod.staging;
2. 컴퓨팅 레이어 (가상 웨어하우스)
- Virtual Warehouse = 쿼리 실행 단위
- 크기: X-Small ~ 6X-Large, 멀티 클러스터 웨어하우스로 자동 스케일 아웃
- 자동 서스펜드/리즘: 유휴 시 일정 시간 후 정지, 다음 쿼리 시 자동 재시작
- 채움 모드: 동시 쿼리 많을 때 큐잉 또는 추가 클러스터 스핀업
-- 웨어하우스 예시
CREATE WAREHOUSE analytics_wh
WITH
WAREHOUSE_SIZE = 'MEDIUM'
AUTO_SUSPEND = 300
AUTO_RESUME = TRUE
MIN_CLUSTER_COUNT = 1
MAX_CLUSTER_COUNT = 4
SCALING_POLICY = 'STANDARD';
3. 서비스 레이어 (Cloud Services)
- 메타데이터 관리: 테이블, 스키마, DB, 권한
- 쿼리 최적화·실행 계획: 사용자가 웨어하우스를 지정하지 않으면 적절한 것으로 자동 라우팅
- 보안·인증: SSO, RBAC, 네트워크 정책
4. Snowflake의 특징적인 기능
- 데이터 공유 (Data Sharing)
- 계정 간 데이터 공유 시 실제 복사 없이 공유
- 데이터 마켓플레이스, 프라이빗 리스팅
- Time Travel
- 특정 시점/쿼리 ID로 데이터 복구
- Snowpark
- Python, Scala, Java로 DataFrame 기반 처리를 Snowflake 내에서 실행
- Dynamic Tables
- 스트리밍/배치 기반의 선언적 파이프라인 (dbt 스타일의 incremental에 가깝게 동작)
- Snowpipe
- 이벤트 기반 자동 데이터 수집 (예: S3 이벤트 트리거)
5. Snowflake 아키텍처 요약
| 구분 | 설명 |
|---|---|
| 포지션 | 클라우드 네이티브 데이터 웨어하우스 |
| 핵심 강점 | SQL 중심 분석, 데이터 공유, 운영 단순성, 자동 튜닝 |
| 처리 모델 | MPP(Massively Parallel Processing) SQL 엔진 |
| 스토리지 | 객체 스토리지 기반, 자동 압축·파티셔닝 |
| 컴퓨팅 | 가상 웨어하우스, 오토 스케일, 서스펜드/리즘 |
🔷 Databricks 아키텍처 요약
Databricks는 레이크하우스를 중심으로 한 통합 플랫폼입니다. (자세한 내용은 Databricks 생태계 관련 포스트 참고)
핵심 구성요소
- Delta Lake: Parquet + 트랜잭션 로그 기반 테이블 포맷 (ACID, Time Travel, CDC)
- Apache Spark: 배치·스트리밍·SQL·ML 통합 엔진
- Unity Catalog: 통합 거버넌스 (권한·계보·태그)
- MLflow: 실험·모델·레지스트리
- Photon: C++ 기반 고성능 SQL 엔진 (상용)
Databricks 아키텍처 요약
| 구분 | 설명 |
|---|---|
| 포지션 | 레이크하우스 기반 통합 데이터·AI 플랫폼 |
| 핵심 강점 | 배치·스트리밍·ML 통합, 코드(Spark/Python) 중심, 오픈소스 생태계 |
| 처리 모델 | Spark 기반 분산 처리 (SQL, Python, Scala, R) |
| 스토리지 | 객체 스토리지 + Delta Lake 메타데이터 |
| 컴퓨팅 | Spark 클러스터, Photon, 서버리스 SQL 웨어하우스 |
⚖️ 포지셔닝·강점 비교
1:1 대응이 애매한 이유
- Snowflake: “데이터 웨어하우스” — SQL 중심 분석, BI, 리포팅, 데이터 공유
- Databricks: “레이크하우스” — DW + 레이크 + 스트리밍 + ML을 한 플랫폼에서
둘 다 대용량 분석을 지원하지만, Snowflake는 SQL·분석 중심, Databricks는 코드·파이프라인·ML 중심에 가깝습니다.
기능·포지션 비교표
| 구분 | Snowflake | Databricks |
|---|---|---|
| 포지션 | 클라우드 네이티브 DW | 레이크하우스 통합 플랫폼 |
| 주 사용 언어 | SQL | SQL + Python/Scala/R |
| 배치 처리 | ✅ SQL 중심 | ✅ Spark (SQL, DataFrame, RDD) |
| 스트리밍 | Snowpipe, Dynamic Tables | Structured Streaming, Delta Live Tables |
| ML/모델 | Snowpark ML, ML 모델 서빙 | MLflow, Feature Store, AutoML, Model Serving |
| 데이터 공유 | ✅ 계정 간 Zero Copy 공유, 마켓플레이스 | 외부 공유는 별도 패턴 |
| 거버넌스 | RBAC, 태그, 마스킹, 계보 | Unity Catalog (권한·계보·태그) |
| 운영 복잡도 | 상대적으로 낮음 (SQL·웨어하우스 위주) | 상대적으로 높음 (Spark·클러스터 이해 필요) |
| 오픈소스 활용 | 자체 엔진 중심 | Spark, Delta Lake, MLflow 등 |
Snowflake가 강한 영역
- SQL 중심 분석·BI·리포팅
- 데이터 공유·마켓플레이스
- 운영 단순성 (파티션/튜닝 부담 적음)
- 표준 SQL 위주 워크로드
Databricks가 강한 영역
- 배치·스트리밍·ML 통합
- 코드(Spark/Python) 기반 파이프라인
- 오픈소스 생태계 (Delta, MLflow, Flink 등과 연동)
- 레이크하우스 패턴 (raw → stg → mart + ML)
🎯 사례별 추천: 언제 무엇을 쓸 것인가
Snowflake를 우선 고려할 때
- BI·리포팅·분석이 주 업무이고, SQL 위주로 팀이 일할 때
- 데이터 공유 (고객사, 파트너, 내부 부서)가 중요한 경우
- 운영 단순성을 중시할 때 (파티션·튜닝을 직접 하기 부담스러울 때)
- dbt + Snowflake 조합으로 ELT 파이프라인을 굴릴 때
Databricks를 우선 고려할 때
- 배치 + 스트리밍 + ML을 한 플랫폼에서 처리하고 싶을 때
- Spark·Python 기반 파이프라인이 이미 있거나, 코드 중심으로 확장할 계획일 때
- 레이크하우스 (raw 레이크 + 마트 + ML) 패턴을 쓰고 싶을 때
- Delta Lake, MLflow, dbt 등 오픈소스와 강하게 연동하고 싶을 때
함께 쓰는 경우
- Snowflake: 분석·BI·리포팅, 데이터 공유, 고객/파트너용 데이터 제공
- Databricks: raw 데이터 수집·가공·스토리밍·ML, feature store·모델 학습
- E TL/ELT: Databricks에서 마트를 만들고, Snowflake로 복제해 BI용으로 사용하는 패턴도 가능
🔗 함께 쓰는 패턴
패턴 1: Databricks → Snowflake (레이크 → DW)
- Databricks에서 raw·staging·mart 구축
- 일부 마트를 Snowflake로 복제 (Fivetran, Airflow, Custom ETL 등)
- Snowflake에서 BI·리포팅·데이터 공유 담당
패턴 2: Snowflake → Databricks (DW → ML)
- Snowflake에서 분석용 마트 관리
- ML/실험용으로 필요한 데이터를 Databricks로 추출
- Databricks에서 모델 학습·서빙
패턴 3: 역할 분리
- Snowflake: 분석·BI·데이터 공유
- Databricks: 스트리밍·ML·레이크하우스 파이프라인
둘 다 dbt를 연결해서 사용할 수 있으며, dbt profile에서 target만 분리하면 됩니다.
# dbt profiles.yml 예시 (Snowflake + Databricks)
my_project:
target: snowflake_prod
outputs:
snowflake_prod:
type: snowflake
account: xxx
warehouse: analytics_wh
database: analytics
schema: mart
...
databricks_prod:
type: databricks
catalog: analytics
schema: mart
...
📌 정리
핵심 요약
- Snowflake: 클라우드 네이티브 DW, SQL 중심, 데이터 공유·운영 단순성에 강점
- Databricks: 레이크하우스, 배치·스트리밍·ML 통합, 코드·오픈소스 생태계에 강점
- 1:1 대체 관계가 아님 — 팀의 워크로드·역량·요구사항에 따라 선택·조합
선택 체크리스트
- 주된 워크로드가 SQL 분석·BI인가? → Snowflake 우선 고려
- 스트리밍·ML·코드 기반 파이프라인이 필요한가? → Databricks 우선 고려
- 데이터 공유·마켓플레이스가 중요한가? → Snowflake 강점
- 오픈소스·레이크하우스 패턴을 중시하는가? → Databricks 강점
- 둘 다 필요한가? → 역할 분리 후 함께 사용 검토
“Snowflake와 Databricks는 경쟁이 아니라, 팀의 상황에 맞는 선택과 조합의 문제다.”
팀의 워크로드, 역량, 예산을 고려해 Snowflake만, Databricks만, 또는 둘을 함께 쓰는 패턴을 설계하는 것이 실무에서 가장 중요합니다.
이 글이 선택 기준을 정하는 데 도움이 되기를 바랍니다.