Skip to main content
이 문서는 레이크하우스 아키텍처 섹션의 일부입니다.

왜 이 주제를 다루나요?

현재 레이크하우스 생태계에서는 두 가지 주요 오픈 테이블 포맷이 경쟁하고 있습니다.
💡 Apache Iceberg와 Databricks의 관계: Iceberg는 Netflix에서 시작되어 Apache Foundation의 오픈소스 프로젝트로 성장했습니다. 2025년 Databricks가 Iceberg의 핵심 기여 기업인 Tabular를 인수 하면서, Iceberg의 주요 창시자(Ryan Blue 등)가 Databricks에 합류했습니다. 이로 인해 Databricks는 Delta Lake와 Iceberg 두 포맷 모두의 핵심 기여자 가 되었으며, UniForm을 통한 두 포맷의 통합을 더욱 강화하고 있습니다. 이것은 “Delta vs Iceberg” 경쟁 구도가 아니라, 하나의 데이터에 두 가지 접근 경로를 제공하는 통합 전략입니다.
실무에서는 Databricks(Delta Lake)와 다른 플랫폼(Snowflake, Athena 등 Iceberg 사용)이 공존하는 경우가 많습니다. 이 문서에서는 두 포맷 간의 상호 운용성(Interoperability) 을 어떻게 확보하는지 살펴보겠습니다.

Delta Lake vs Apache Iceberg 비교

두 포맷은 매우 유사한 기능을 제공하며, 실제 데이터는 모두 Parquet 파일 로 저장됩니다. 차이는 주로 메타데이터(트랜잭션 로그)를 관리하는 방식 에 있습니다.

UniForm: Delta Lake의 호환성 솔루션

개념

💡 UniForm(유니폼) 은 Delta Lake 테이블을 Iceberg 포맷으로도 읽을 수 있게 해주는 Databricks의 호환성 기능입니다. 하나의 Delta 테이블을 생성하면, Iceberg 클라이언트에서도 동일한 테이블을 읽을 수 있습니다.
핵심은 데이터 파일(Parquet)은 하나 이고, 메타데이터만 Delta와 Iceberg 두 가지 형식으로 유지한다는 것입니다. 따라서 데이터 복사가 발생하지 않습니다.

설정 방법

기존 테이블에 활성화하는 것도 가능합니다.

활용 시나리오


Iceberg REST Catalog (IRC)

🆕 Unity Catalog as Iceberg REST Catalog: Databricks의 Unity Catalog는 Iceberg REST Catalog 표준을 지원합니다. 이를 통해 외부 엔진(Snowflake, Trino, Apache Flink 등)이 Unity Catalog에 직접 연결하여 Delta 테이블을 Iceberg 테이블처럼 조회할 수 있습니다.
💡 REST Catalog란? 테이블 포맷의 메타데이터(어떤 테이블이 있고, 어디에 저장되어 있는지)를 HTTP REST API로 관리하는 표준 인터페이스입니다. 이전에는 각 엔진이 자체적으로 메타데이터를 관리했지만, REST Catalog를 통해 하나의 카탈로그로 모든 엔진이 동일한 테이블 목록을 공유 할 수 있게 되었습니다.

외부 엔진에서 연결하는 방법


Foreign Iceberg Tables (외부 Iceberg 테이블 읽기)

반대로, 외부에서 생성된 Iceberg 테이블을 Databricks에서 읽는 것도 가능합니다.

실무 가이드: 어떤 포맷을 선택해야 하나요?

💡 핵심 메시지: Databricks에서는 Delta Lake를 기본으로 사용하되, UniForm과 Iceberg REST Catalog를 활용하면 외부 엔진과의 호환성을 확보할 수 있습니다. “하나의 데이터, 여러 엔진에서 조회” 전략이 가능합니다.

Iceberg v3 및 최신 포맷 발전

Apache Iceberg 버전별 발전

🆕 Iceberg v3의 핵심 변화: v3에서는 Variant 타입(반정형 데이터 네이티브 지원), Default Column Values, Multi-argument Transform(파티셔닝 유연성 강화)이 추가되었습니다. Delta Lake의 Variant 타입과 유사한 기능이 Iceberg 표준에도 포함된 것입니다.

UniForm v2: 양방향 호환성

🆕 UniForm v2 는 기존의 단방향(Delta → Iceberg 읽기)에서 발전하여, Iceberg 프로토콜로 쓰기 도 가능하게 하는 차세대 호환성 레이어입니다.

Iceberg REST Catalog (IRC) 아키텍처 심화

IRC 동작 원리

Unity Catalog가 Iceberg REST Catalog로 동작할 때의 내부 흐름을 이해하면, 외부 엔진 연동 시 트러블슈팅에 도움이 됩니다.
외부 엔진 (Snowflake/Trino)이 위 순서로 Iceberg REST Catalog API를 호출합니다.

Credential Vending (자격증명 발급)

💡 Credential Vending 은 외부 엔진이 데이터 파일에 접근할 때, Unity Catalog가 일시적인 클라우드 자격증명 을 발급하는 메커니즘입니다. 이를 통해 장기 키(Long-lived Key)를 공유하지 않고도 안전하게 데이터에 접근할 수 있습니다.
⚠️ 보안 이점: Credential Vending 덕분에 외부 엔진에 클라우드 스토리지의 장기 접근 키를 제공할 필요가 없습니다. UC가 접근을 중개하므로, UC 권한을 회수하면 즉시 접근이 차단 됩니다.

외부 엔진에서 Delta 테이블 읽기 패턴

엔진별 연동 방법

Snowflake에서 연동하는 예시

Trino에서 연동하는 예시


성능 비교 및 최적화

Delta Lake vs Iceberg 성능 특성

UniForm 사용 시 성능 고려사항

💡 UniForm 쓰기 오버헤드 최소화: UniForm은 비동기적 으로 Iceberg 메타데이터를 생성합니다. 따라서 쓰기 작업의 크리티컬 패스에 미치는 영향은 제한적입니다. 다만, 매우 빈번한 소규모 쓰기(초당 수십 커밋)가 발생하는 경우에는 오버헤드가 누적될 수 있으므로 주의가 필요합니다.

엔터프라이즈 멀티 플랫폼 전략

전형적인 엔터프라이즈 데이터 아키텍처

대규모 조직에서는 여러 데이터 플랫폼이 공존하는 것이 현실입니다. 이때의 권장 패턴을 정리합니다.

비용 최적화 관점


Edge Case와 주의사항


정리

이것으로 레이크하우스 아키텍처 섹션을 마치겠습니다. 다음 섹션에서는 코드를 실행하는 컴퓨트와 워크스페이스에 대해 알아보겠습니다.

참고 링크