출처: https://www.youtube.com/watch?v=uyuZjKeoAS4&list=PLORxAVAC5fUWoPJqJxJavUNK_QI8EFWP_
데이터 분석의 세계는 끊임없이 진화하고 있으며, 기존의 관계형 데이터베이스 관리 시스템(RDBMS)만으로는 대량의 데이터를 효과적으로 처리하고 빈번한 업데이트나 삭제를 관리하는 데 한계가 있습니다. 이러한 문제를 해결하기 위해 등장한 것이 바로 '데이터 레이크'입니다. 특히 S3와 같은 분산 파일 시스템을 활용하여 스토리지와 쿼리 엔진을 분리함으로써 뛰어난 확장성을 제공합니다.
하지만 S3 기반의 데이터 레이크에도 도전 과제가 있습니다. S3 객체는 기본적으로 불변하기 때문에 데이터 업데이트나 삭제가 어렵다는 점입니다. "병합-온-읽기"와 같은 기술을 통해 이러한 작업을 처리할 수 있지만, 대규모 기록이나 잦은 변경이 발생할 경우 성능 저하로 이어질 수 있습니다.
오픈 테이블 형식의 등장
이러한 한계를 극복하기 위해 '오픈 테이블 형식'이라는 개념이 도입되었습니다. 이는 RDBMS의 커밋 로그와 유사한 메커니즘을 사용하여 데이터 레이크 내의 데이터 변경 사항을 관리합니다. 데이터 파일이 어떻게 구성되고 관리되는지를 정의하는 이 형식은 데이터 레이크에 트랜잭션 기능을 부여합니다. 현재 널리 사용되는 오픈 소스 테이블 형식으로는 Apache Iceberg, Apache Hudi, Delta Lake가 있습니다.
특히 Apache Iceberg는 데이터 계층(실제 데이터 파일)과 메타데이터 계층(스키마, 파티션 정보, 스냅샷, 매니페스트 파일)으로 데이터를 저장합니다. 이를 통해 S3와 같은 객체 스토리지에서도 데이터와 메타데이터 파일이 체계적으로 구성됩니다.
오픈 테이블 형식의 가장 큰 장점은 다음과 같습니다:
- 트랜잭션 기능 (ACID 속성): 데이터의 일관성과 무결성을 보장합니다.
- 타임 트래블: 특정 시점의 데이터를 쿼리할 수 있어 데이터 변경 이력을 추적하기 용이합니다.
- 효율적인 병합 및 압축: 빈번한 업데이트 및 삭제에도 읽기 성능을 유지하는 데 도움이 됩니다.
AWS에서 트랜잭션 데이터 레이크 구축 아키텍처
Amazon Web Services(AWS)를 활용하면 트랜잭션 데이터 레이크를 손쉽게 구축할 수 있습니다. 일반적인 아키텍처는 다음과 같습니다:
- 데이터 소스: RDS와 같은 기존 데이터베이스에서 데이터를 가져옵니다.
- 변경 데이터 캡처 (CDC): AWS DMS를 사용하여 RDS에서 변경 데이터를 캡처합니다.
- 데이터 버퍼링: Kinesis Data Streams 또는 MSK(Managed Kafka)를 통해 데이터를 버퍼링합니다.
- 데이터 수집: Amazon Data Firehose를 사용하여 데이터를 S3로 수집하며, 이때 Apache Iceberg 테이블 형식을 적용합니다.
- 데이터 변환: Firehose가 Iceberg에 쓰기 전에 Lambda 함수를 사용하여 데이터를 처리하거나 변환할 수 있습니다.
- 데이터 쿼리: Amazon Athena를 사용하여 S3의 Iceberg 테이블을 쿼리합니다. 현재 Athena는 Iceberg 테이블에 대해 SQL 기반 삽입, 업데이트, 삭제 작업을 지원합니다.
물론 Glue, EMR, 관리형 Flink와 같은 다른 AWS 서비스를 사용하여 세 가지 테이블 형식 모두에 대한 데이터 수집을 수행할 수도 있습니다.
실제 구축 사례 데모
실제 구축 사례에서는 AWS CDK(Cloud Development Kit)와 Python을 사용하여 이러한 아키텍처를 설정하는 과정을 보여줍니다. Aurora MySQL 인스턴스 배포부터 DMS, Kinesis, Firehose, Lambda 변환 설정, 그리고 S3에 Iceberg 테이블을 생성하고 Athena로 쿼리하는 과정까지 시연됩니다. 원본 MySQL 데이터베이스에서 데이터를 삽입하고 업데이트하는 작업을 통해 Iceberg 테이블에 반영되는 변경 사항을 Athena를 통해 확인하는 모습도 확인할 수 있습니다.
결론
Iceberg, Hudi, Delta Lake와 같은 오픈 테이블 형식은 데이터 레이크에 트랜잭션 기능을 부여하여 기존의 한계를 극복할 수 있도록 돕습니다. 특히 Amazon Data Firehose는 Apache Iceberg 테이블로 S3에 데이터를 손쉽게 수집할 수 있는 방법을 제공하며, 삽입, 업데이트, 삭제 작업을 지원하여 유연한 데이터 관리를 가능하게 합니다. 이를 통해 기업들은 더욱 강력하고 효율적인 데이터 분석 환경을 구축할 수 있습니다.
'일반IT' 카테고리의 다른 글
| 온라인 안전 지키기: 공공장소 해킹 위험 이해하기 (2) | 2025.07.20 |
|---|---|
| Datadog: Amazon Bedrock 기반 LLM 서비스 관측 가능성의 핵심 (3) | 2025.07.20 |
| Azure 기준 클라우드 서비스 유형별 대표 요소 (1) | 2025.07.18 |
| Jenkins에서 DooD, DinD와 권장 사항 (1) | 2025.07.18 |
| MSA와 애자일: 실무에서 어떻게 융합되는가? (2) | 2025.07.17 |