
들어가며
최근에는 단순히 S3에 저장된 파일을 조회하는 것에서 나아가 데이터를 수정(Update), 삭제(Delete), 버전 관리(Time Travel) 할 수 있는 데이터 레이크 구축 방식이 많이 사용되고 있습니다. 이러한 기능을 가능하게 하는 대표적인 테이블 포맷이 바로 Apache Iceberg입니다.
이번 글에서는 Iceberg가 무엇인지, Athena와 AWS Glue, Amazon S3가 어떻게 함께 동작하는지, 그리고 Glue Data Catalog 기반의 권한 관리 방법까지 알아보겠습니다.
1. Apache Iceberg란?
Apache Iceberg는 데이터 레이크를 위한 오픈소스 테이블 포맷입니다.

기존에는 Amazon S3와 같은 데이터 레이크에 CSV나 Parquet 파일을 저장한 뒤 Athena나 Spark로 조회하는 방식이 일반적이었습니다. 하지만 이러한 방식은 파일 단위로 데이터를 관리하기 때문에 데이터를 수정하거나 삭제하는 작업이 쉽지 않았습니다.
Parquet 파일의 일부 데이터만 수정하고 싶더라도 파일 자체를 직접 수정할 수 없기 때문에 새로운 파일을 생성하고 기존 파일을 교체해야 했습니다. 또한 어떤 파일이 현재 사용 중인 데이터인지, 이전 버전은 무엇인지도 직접 관리해야 했습니다.
Apache Iceberg는 이러한 문제를 해결하기 위해 등장한 테이블 포맷(테이블을 관리하는 규칙)입니다.
Iceberg는 데이터를 직접 저장하는 것이 아니라 S3에 저장된 여러 데이터 파일을 하나의 테이블처럼 관리합니다. 사용자는 파일의 위치나 버전을 직접 신경 쓰지 않고 관계형 데이터베이스를 사용하는 것처럼 데이터를 조회하고 관리할 수 있습니다.
- 실제 데이터는 Amazon S3에 저장
- Iceberg는 테이블 구조와 메타데이터를 관리
- Athena, Spark, Trino 등의 분석 엔진은 Iceberg를 통해 데이터를 조회합니다.
이러한 구조 덕분에 데이터 레이크에서도 데이터베이스와 비슷한 기능을 사용할 수 있습니다.
Iceberg의 대표적인 기능은 다음과 같습니다.
- ACID 트랜잭션 지원
- Schema Evolution(스키마 변경)
- Hidden Partitioning
- Time Travel
- 효율적인 메타데이터 관리
1-1) ACID Transaction

일반적인 데이터 레이크에서는 데이터를 수정하거나 삭제할 때 파일을 다시 생성해야 합니다.
반면 Iceberg는 ACID 트랜잭션을 지원하기 때문에 여러 사용자가 동시에 데이터를 수정하더라도 일관성을 유지할 수 있습니다.
사용자가 UPDATE나 DELETE를 수행하면 Iceberg는 새로운 데이터 파일과 메타데이터를 생성한 뒤 한 번에 최신 버전으로 전환합니다. 이 과정에서 다른 사용자는 변경 전 또는 변경 후 데이터만 조회하게 되므로 데이터가 중간 상태로 보이는 문제가 발생하지 않습니다. 즉, 데이터베이스처럼 안전하게 데이터를 수정하고 삭제할 수 있습니다.
1-2) Schema Evolution
운영 중인 데이터는 시간이 지나면서 컬럼이 추가되거나 삭제되는 경우가 많습니다.
예를 들어 처음에는 다음과 같은 테이블이 있었다고 가정해 보겠습니다.
| id | name |
| 1 | Kim |
이후 나이를 저장하기 위해 age 컬럼을 추가해야 할 수도 있습니다.
기존 방식에서는 데이터를 다시 생성하거나 스키마를 직접 변경해야 했지만, Iceberg는 Schema Evolution 기능을 통해 기존 데이터를 유지한 채 새로운 컬럼을 안전하게 추가하거나 삭제할 수 있습니다. 즉, 서비스 운영 중에도 스키마를 유연하게 변경할 수 있습니다.
1-3) Hidden Partition
일반적으로 데이터 레이크에서는 사용자가 직접 파티션을 설계하고 관리해야 합니다.
날짜별 데이터를 저장한다면
dt=2026-07-01/
dt=2026-07-02/
dt=2026-07-03/
와 같은 디렉터리 구조를 직접 만들어야 합니다.
Iceberg에서는 이러한 작업을 사용자가 직접 관리하지 않아도 됩니다.
사용자는 단순히 데이터를 조회하면 Iceberg가 내부적으로 적절한 파티션 정보를 활용하여 필요한 데이터만 읽습니다.
1-4) Time Travel
Iceberg는 데이터의 변경 이력을 Snapshot 형태로 관리합니다.
예를 들어 오전 10시에 데이터가 저장되었고 오후 2시에 수정되었다면, Iceberg는 두 시점의 정보를 모두 유지합니다.
- 오전 10시 데이터 조회
- 오후 2시 데이터 조회
- 이전 버전으로 롤백
과 같은 작업을 수행할 수 있습니다. 이 기능은 데이터가 잘못 변경되었을 때 이전 상태를 확인하거나 복구해야 하는 환경에서 매우 유용합니다. 즉, Time Travel은 데이터를 특정 시점으로 되돌리거나 과거 데이터를 조회할 수 있도록 지원하는 기능입니다.
2. Iceberg + AWS Glue + Amazon S3
Iceberg는 데이터를 직접 저장하지 않습니다.

2-1) Amazon S3
실제 데이터 파일(주로 Parquet)을 저장합니다.
2-2) AWS Glue Data Catalog
테이블 메타데이터를 저장합니다. 기존 Hive Metastore 대신 Glue Catalog를 사용할 수 있습니다.
2-3) Iceberg API
Glue Catalog와 S3를 연결하여
- 메타데이터 조회
- 테이블 버전 관리
- Snapshot 관리
등을 수행합니다.
3. Glue Data Catalog를 Iceberg로 마이그레이션하기

기존 Glue Data Catalog도 Iceberg 테이블로 전환할 수 있습니다. 마이그레이션을 수행하면 Athena에서도 Iceberg 기능을 사용할 수 있습니다.
대표적인 이유는 다음과 같습니다.
- ACID Transaction 지원
- Time Travel 활용
- 데이터 변경 이력 관리
- 여러 Producer와 Consumer 환경에서 일관성 유지
3-1) In-Place Migration

기존 데이터를 그대로 유지한 상태에서 Iceberg 메타데이터만 생성하는 방식입니다.
3-1-1) 장점
- 빠른 전환
- 데이터 복사 불필요
3-1-2) 단점
- 스키마 변경이나 파티션 변경에는 제약이 있습니다.
3-2) Shadow Migration

새로운 Iceberg 테이블을 생성하면서 데이터를 함께 복사합니다.
3-2-1) 장점
- 검증이 쉬움
- 롤백이 쉬움
- 운영 전 테스트 가능
3-2-2) 단점
- 저장 공간이 추가로 필요합니다.
4. Glue Data Catalog 권한 관리

Athena는 Glue Data Catalog의 메타데이터를 이용하기 때문에 Glue Catalog에 대한 권한도 함께 필요합니다.
IAM 정책을 이용하여
- Database 조회
- Table 조회
- Catalog 접근
권한을 세밀하게 제어할 수 있습니다.
사용자가 Athena에 접속했다고 해서 모든 테이블을 조회할 수 있는 것은 아닙니다. Glue Catalog에 대한 IAM 권한이 있어야 원하는 데이터베이스와 테이블을 조회할 수 있습니다.
5. 테이블 단위 세부 권한(Fine-Grained Access)
Glue Data Catalog는 데이터베이스뿐 아니라 테이블 단위까지 세부 권한을 설정할 수 있습니다.
예를 들어 다음과 같은 작업별 권한을 각각 관리할 수 있습니다.
- CREATE TABLE
- ALTER DATABASE
- DROP TABLE
- SHOW TABLES
- MSCK REPAIR TABLE
- GET PARTITIONS
사용자는 데이터를 조회만 할 수 있도록 설정하고 관리자만 테이블 생성이나 삭제 권한을 갖도록 구성할 수 있습니다.
이처럼 IAM 정책을 활용하면 Athena와 Glue Data Catalog를 보다 안전하게 운영할 수 있습니다.
6. Iceberg를 사용하는 이유
기존 S3 기반 데이터 레이크에서는 파일 단위로 데이터를 관리했기 때문에 수정이나 삭제가 쉽지 않았습니다.
하지만 Iceberg를 사용하면 다음과 같은 기능을 사용할 수 있습니다.
- UPDATE
- DELETE
- MERGE
- ACID Transaction
- Snapshot 관리
- Time Travel
- Schema Evolution
이러한 기능 덕분에 데이터 레이크에서도 데이터베이스와 유사한 방식으로 데이터를 관리할 수 있습니다.
7. 마치며
이번 글에서는 Apache Iceberg와 Athena의 연동 방식을 중심으로 살펴보았습니다.
Iceberg는 단순한 파일 저장 형식이 아니라 데이터 레이크를 위한 테이블 포맷으로, ACID 트랜잭션과 Time Travel, Schema Evolution 같은 기능을 제공합니다. 또한 실제 데이터는 Amazon S3에 저장하고, 메타데이터는 AWS Glue Data Catalog에서 관리하며, Athena와 Spark 같은 분석 엔진이 이를 활용해 데이터를 조회하거나 수정하는 구조라는 점을 이해할 수 있었습니다.
데이터 레이크를 운영하는 환경에서는 단순히 데이터를 저장하는 것뿐 아니라 버전 관리와 권한 관리도 중요합니다. Iceberg와 Glue Data Catalog를 함께 사용하면 이러한 기능을 보다 체계적으로 구성할 수 있으며, Athena에서도 데이터 레이크를 효율적으로 활용할 수 있습니다.
'Data Engineering > AWS' 카테고리의 다른 글
| Amazon EMR란? (0) | 2026.07.23 |
|---|---|
| Amazon Athena | Federated Query로 다양한 데이터 소스를 SQL로 조회하기 (0) | 2026.07.23 |
| AWS Athena | Workgroup, 비용 최적화, 보안 (0) | 2026.07.21 |
| AWS Athena란 (0) | 2026.07.21 |
| AWS Lake Formation이란 (0) | 2026.07.20 |