하나의 데이터, 멀티 엔진: Apache Iceberg로 구축하는 데이터레이크
아키텍처
하나의 데이터, 멀티 엔진: Apache Iceberg로 구축하는 데이터레이크
두줄요약
Redshift 단일 클러스터의 적재 지연과 리소스 경합 문제를 해결하기 위해 Iceberg 기반 데이터레이크를 구축했습니다.\nGCS, BigLake Metastore, Spark, BigQuery를 분리해 멀티 엔진 운영과 벤더 종속 완화를 노렸습니다.
문제 상황
- Redshift 기반 데이터 웨어하우스의 단일 클러스터 한계
- 데이터 적재 시간 증가와 워커 확장 부담
- 동시 쿼리로 인한 리소스 경합, 테이블 Lock, 수동 중단 필요
- Spectrum 도입에도 남는 성능 저하와 벤더 종속 우려
원인 분석
- 데이터 증가에 비해 배치·쿼리 구조가 비효율적으로 누적
- 컴퓨팅과 스토리지가 완전히 분리되지 않은 운영 구조
- 특정 플랫폼 기능 의존으로 인한 이전·확장 제약
해결 방법
- Apache Iceberg 테이블 포맷 도입으로 데이터와 메타데이터 분리
- GCS에 Parquet 데이터 저장, BigLake Metastore로 중앙 카탈로그 관리
- Spark는 쓰기·ETL, BigQuery는 읽기·분석으로 역할 분리
성능/운영 포인트
- 멀티 엔진 공유로 데이터 복제 없이 동일 테이블 활용
- ACID, Schema Evolution, Time Travel, Hidden Partitioning 지원
- 서버리스 쿼리와 메타데이터 기반 파티션 pruning으로 운영 부담과 비용 절감
- 작은 파일 누적 대응을 위한 주기적 compaction 필요
