AWS re:Invent 2024에서 Amazon은 Amazon S3 Tables라는 새로운 솔루션을 공개했습니다. 이는 Apache Iceberg 표준을 활용하여 대규모 테이블 데이터를 효율적으로 저장하고 관리할 수 있는 완전 관리형 서비스입니다. 이번 블로그에서는 Amazon S3 Tables의 개념과 동작 원리, 그리고 설정 및 사용 방법에 대해 자세히 알아보겠습니다.
1. Open Table Format(OTF)와 Apache Iceberg 이해하기
Open Table Format (OTF)란 무엇인가?
전통적인 데이터베이스에서는 데이터를 읽으려면 데이터베이스 소프트웨어를 설치하고, 스키마와 테이블을 생성한 후 데이터를 로드해야 합니다. 반면 Open Table Format은 데이터를 Apache Parquet, Apache ORC, Apache Avro 같은 파일 형식으로 저장하며, 데이터 레이크 위에 가상 테이블 형태로 데이터를 관리합니다.
이 과정에서 AWS Glue Catalog와 같은 카탈로그 시스템을 사용해 테이블을 등록하고, Apache Spark, Trino, AWS Athena 같은 쿼리 엔진으로 데이터를 쉽게 쿼리할 수 있습니다. 대표적인 Open Table Format으로는 Apache Iceberg, Delta Lake, Apache Hudi가 있으며, 성능, 확장성, 시간여행 쿼리 및 스키마 진화 지원 등의 고급 기능으로 높은 평가를 받고 있습니다.
Apache Iceberg
Apache Iceberg는 대규모 데이터 세트를 위한 오픈소스 테이블 형식으로, ACID 트랜잭션, 스키마 진화, 시간여행 쿼리 등을 지원합니다. 클라우드 스토리지(AWS S3 등)에서 데이터의 무결성과 성능을 개선하며, 분석 워크로드에 적합한 유연성과 신뢰성을 제공합니다.
2. Amazon S3 Tables 소개
Amazon S3 Tables란?
Amazon S3 Tables는 Apache Iceberg 형식을 지원하는 완전 관리형 S3 테이블로, 대량의 행렬 데이터를 효율적으로 저장하고 분석할 수 있도록 설계되었습니다. 구매 내역, 센서 데이터, 광고 노출 데이터 등 행과 열로 구성된 데이터를 데이터베이스 테이블처럼 관리할 수 있습니다.
특징
- 특수 테이블 버킷: Amazon S3 Tables는 테이블 버킷이라는 특별한 S3 버킷 유형을 사용합니다.
- SQL 쿼리 지원: Amazon Athena, Amazon Redshift, Apache Spark 등 표준 SQL 쿼리를 사용할 수 있습니다.
- 저비용 고성능: 쿼리 성능을 개선하면서도 저장 비용을 낮춥니다.
3. 새로운 AWS S3 Tables 기능
네임스페이스
S3 테이블을 논리적으로 그룹화하는 조직 도구로, 물리적 리소스가 아닌 관리 편의를 위한 개념입니다.
리소스 기반 정책
- 버킷, 테이블, 네임스페이스 단위로 리소스 정책을 설정할 수 있습니다.
- IAM과 통합되어 세부적인 권한 제어가 가능합니다.
테이블 ARN
각 테이블에 고유한 ARN이 부여되어 리소스 식별 및 정책 설정에 활용됩니다.
새 API 인터페이스
- 운영 API: ListTable, CreateTable, DeleteTable 등
- 관리 API: PutTablePolicy, PutTableMaintenanceConfig 등
4. Amazon S3 Tables 설정 방법
4.1 S3 테이블 버킷 생성
aws s3control create-table-bucket \
--account-id <AWS_ACCOUNT_ID> \
--bucket-name data-bucket
4.2 S3 테이블 생성
aws s3control create-table \
--account-id <AWS_ACCOUNT_ID> \
--bucket-name my-table-bucket \
--table-name my_table \
--table-type ICEBERG \
--namespace namespace1
5. Amazon S3 Tables의 장점
5.1 성능 향상
- 쿼리 최적화: 파티션 프루닝 및 메타데이터 인덱싱으로 쿼리 속도를 최대 3배 향상.
- 병렬 처리 지원: 초당 최대 10배 더 많은 트랜잭션 지원.
- 시간여행 쿼리: 데이터의 과거 버전을 빠르고 효율적으로 조회.
5.2 보안 강화
- 네임스페이스별 액세스 제어.
- 리소스 기반 정책으로 버킷 및 테이블 수준의 권한 관리.
- IAM과 통합된 세분화된 권한 제어.
5.3 스토리지 비용 최적화
- Apache Iceberg 메타데이터 구조로 효율적인 파일 관리.
- 데이터 레이크와 웨어하우스 간 데이터 중복 제거.
6. 자동화된 테이블 유지 관리
유지 관리 구성 파일 예시
{
"TableMaintenanceConfiguration": {
"Compaction": {
"Enabled": true,
"MaxFileSizeMB": 128,
"CompactionFrequencyHours": 24
},
"SnapshotRetention": {
"Enabled": true,
"MaxSnapshots": 5,
"RetentionPeriodDays": 30
},
"GarbageCollection": {
"Enabled": true,
"OrphanedFileRetentionDays": 7
}
}
}
유지 관리 구성 적용
aws s3control put-table-maintenance-configuration \
--account-id <AWS_ACCOUNT_ID> \
--table-name <TABLE_NAME> \
--table-maintenance-configuration file://table-maintenance-config.json
7. S3 Tables의 액세스 제어
7.1 테이블 버킷 수준 정책 예시
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789012:role/dataengineer"
},
"Action": [
"s3tables:GetTableMetadataLocation",
"s3tables:GetTableData",
"s3tables:ListTables"
],
"Resource": "arn:aws:s3tables:us-east-1:123456789012:bucket/data-bucket/table/*"
}
]
}
8. Lake Formation과의 통합
Amazon Lake Formation을 활성화하여 열 및 행 수준의 세밀한 액세스 제어를 구현할 수 있습니다.
주요 이점
- 열 수준 권한: 특정 열에만 접근 권한 부여.
- 행 필터링: 조건에 따라 특정 행만 접근 허용.
- 통합된 액세스 제어: Athena, EMR 등 다양한 서비스에서 일관된 권한 관리.
Amazon S3 Tables는 현대 데이터 관리 시스템이 가진 과제를 해결하며, 확장성, 성능, 관리 편의성을 모두 갖춘 강력한 솔루션입니다. 앞으로도 AWS의 업데이트를 통해 더욱 진화할 S3 Tables를 기대해 봅니다.
https://medium.com/@naren3883/deep-dive-into-new-amazon-s3-tables-4e1de56394eb
'AWS' 카테고리의 다른 글
AWS 리인벤트 2024: AI와 데이터 혁신의 새로운 장을 열다 (0) | 2024.12.11 |
---|---|
미래의 데이터베이스, Amazon Aurora DSQL: 서버리스, 무제한 스케일, 그리고 간편함의 혁신 (0) | 2024.12.09 |
AWS Bedrock: 인공지능의 새로운 돌파구를 여는 비밀 무기 (0) | 2024.08.28 |
미래의 AI 혁신, Amazon Q 개발자 기능의 알아보기 (0) | 2024.08.28 |
[클라우드] Serverless란 무엇인가요? (0) | 2024.07.12 |