AWS re:Invent 2024 Recap: Database, Storage

AWS re:Invent 2024 Recap: Database, Storage

요약: AWS re:Invent 2024에서 새롭게 공개한 Amazon Aurora DSQL과 Amazon S3 Tables를 소개합니다. Amazon Aurora DSQL은 사실상 무제한의 확장성과 높은 가용성을 제공하며 인프라 관리가 필요하지 않은 서버리스 분산 SQL 데이터베이스입니다. Amazon S3 Tables는 테이블 버킷을 이용한 새로운 데이터 관리 솔루션으로, 표 형식 데이터에 최적화된 Apache Iceberg 기반의 완전 관리형 테이블 형식 스토리지를 지원합니다.

💡 리뷰어 한줄평

greg.ss 클라우드에 관심 있지만 시간이 없어 AWS re:Invent 2024를 살펴보지 못하셨나요? 그렇다면 직접 미국까지 다녀온 제이코와 아리가 보고 듣고 정리한 이 글을 추천드려요!

shine.by 클라우드 컴퓨팅에 관심 있는 누구나 놓칠 수 없는 AWS re:Invent 2024의 최신 기술들을 쉽고 명확하게 접할 수 있는 글입니다. 앞으로의 개발 방향성에 대한 영감을 얻고 싶다면, 이 글을 통해 최신 기술 트렌드를 확인해 보세요!

시작하며

AWS re:Invent 2024
AWS re:Invent 2024

안녕하세요. 카카오페이 크레딧클랜에서 대출 플랫폼을 개발하는 제이코, 마케팅테크팀에서 프로모션 플랫폼을 개발하는 아리입니다. 저희는 카카오페이 기술 직군을 대표하여, 2024년 12월 2일부터 6일까지 미국 라스베이거스에서 열린 AWS re:Invent 2024에 다녀왔습니다.

이번 행사에서는 생성형 AI 서비스인 Amazon Q, 맞춤형 AI 모델 구축을 지원하는 Amazon Bedrock, 분산형 데이터베이스인 Amazon Aurora DSQL, 대규모 데이터 분석을 위한 Amazon S3 Tables 등 다양한 기술이 소개되었습니다. 이 중에서, 제이코는 Amazon Aurora DSQL을 다룹니다. Amazon Aurora DSQL은 Multi-Region 및 Active-Active 기능을 지원하며 무제한 확장성과 높은 가용성을 제공하는 서버리스 분산형 SQL 데이터베이스입니다. 아리는 Amazon S3 Tables를 다룹니다. Amazon S3 Tables는 테이블 버킷을 이용한 새로운 데이터 관리 솔루션으로, 표 형식 데이터에 최적화된 Apache Iceberg 기반의 완전 관리형 테이블 형식 스토리지를 제공합니다.

AWS re:Invent는 매년 클라우드 기술의 최신 트렌드를 한눈에 살펴볼 수 있는 중요한 행사입니다. 이번 글에서는 특히 Amazon Aurora DSQL과 Amaon S3 Tables와 같은 혁신적인 데이터베이스 기술을 다루는 만큼, 데이터베이스 관리와 데이터 분석에 관심 있는 분들에게 유익한 정보가 되길 바랍니다. 먼저, Amazon Aurora DSQL에 대해 살펴보겠습니다.


Amazon Aurora DSQL

안녕하세요, 카카오페이 크레딧클랜의 제이코입니다. 이번 AWS re:Invent 2024에서는 Amazon Aurora DSQL이 새롭게 소개되었습니다. Amazon Aurora DSQL은 사실상 무제한의 확장성과 높은 가용성을 제공하며 인프라 관리가 필요 없는 서버리스 분산 SQL 데이터베이스입니다. 이제부터, Amazon Aurora DSQL이 등장한 배경과 핵심 특징, 구성 요소 및 활용 방법에 대해 자세히 살펴보겠습니다.

출시 배경

Amazon Aurora DSQL의 주요 특징을 살펴보기 전에, 먼저 이 기술이 등장하게 된 배경부터 살펴보겠습니다.

AWS는 2014년에 Amazon Aurora를 출시했습니다. Amazon Aurora는 MySQL 및 PostgreSQL과 완벽하게 호환되면서 MySQL보다 5배, PostgreSQL보다 3배 높은 처리량을 제공합니다. 또한, 기존 상용 데이터베이스 대비 1/10의 비용으로 뛰어난 성능과 가용성을 제공하여, 비용을 절감하면서 안정적이고 빠른 데이터베이스 환경을 구축할 수 있도록 지원했습니다. 하지만, AWS는 사용자들에게 새로운 관계형 데이터베이스에 대한 요구를 지속적으로 받았습니다. 사용자들은 관리가 더 쉽고 자동 확장이 가능하며, 고가용성을 갖춘 멀티 리전 및 멀티 AZ 아키텍처를 쉽게 구축할 수 있는 솔루션을 원했습니다.

이에 따라, AWS는 re:Invent 2024에서 구글의 분산형 데이터베이스인 Spanner 보다 약 4배가 더 빠른 Amazon Aurora DSQL(Distributed SQL)을 발표했습니다. Amazon Aurora DSQL은 완전한 서버리스 설계를 바탕으로 패치, 업그레이드, 유지보수로 인한 다운타임 등의 운영 부담을 제거했습니다. 또한, 데이터베이스 샤딩이나 인스턴스 업그레이드 없이 워크로드에 맞춰 자동 확장할 수 있습니다. 특히, Active-Active 분산 아키텍처를 통해 단일 리전 구성에서는 99.99%, 멀티 리전 구성에서는 99.999%의 가용성을 보장하면서도 데이터 정합성을 유지합니다.

주요 특징

그럼 이제, Amazon Aurora DSQL이 어떤 특징을 가지고 있는지 알아보겠습니다.

Automatic Scaling

Amazon Aurora DSQL은 워크로드 변화에 따라 자동으로 확장 및 축소되는 기능을 제공합니다. 초기 설정에서 확장 한계를 미리 고민할 필요 없이, 트래픽 증가에 맞춰 성능을 최적화하고 수요가 줄어들면 자동으로 자원을 줄여 비용을 절감할 수 있습니다. 이를 통해, 최적의 성능을 유지하면서 효율적인 자원 활용이 가능합니다.

Serverless

Amazon Aurora DSQL은 AWS의 서버리스 서비스 계열에 속합니다. Amazon S3, AWS Lambda, Amazon DynamoDB, Amazon SQS와 같은 다른 AWS 서버리스 서비스들처럼, Amazon Aurora DSQL도 시스템 업데이트를 수동으로 관리할 필요가 없으며, 자동으로 데이터 복제 및 유지보수를 수행합니다. 또한, 다운타임 없이 안정적으로 운영되며, 클러스터를 생성하는 즉시 데이터베이스를 사용할 수 있습니다. 이를 통해, 인프라 관리 부담을 최소화하고 운영 효율성을 극대화할 수 있습니다.

Active-Active, Multi-Region

Amazon Aurora DSQL은 여러 리전에 걸쳐 데이터베이스를 분산할 수 있으며, 모든 리전에서 강력한 데이터 일관성을 유지하면서 동시에 Active-Active 구성을 지원합니다. 이를 통해 고가용성을 보장하고 장애 발생 시 빠른 복구가 가능합니다. 또한, 글로벌 서비스를 운영하는 기업들은 전 세계 어디에서든 안정적이고 일관된 성능을 제공하는 데이터베이스 환경을 구축할 수 있습니다.

PostgreSQL Compatible

Amazon Aurora DSQL은 PostgreSQL과 높은 수준의 호환성을 제공합니다. 기존에 PostgreSQL을 사용하던 애플리케이션, 클라이언트, ORM 등을 변경 없이 그대로 활용할 수 있어, 쉽게 Amazon Aurora DSQL로 전환 및 통합할 수 있습니다. 이를 통해, 기존 PostgreSQL 사용자는 익숙한 도구와 환경을 유지하면서 Aurora DSQL의 확장성과 성능을 누릴 수 있습니다.

주요 컴포넌트

Amazon Aurora DSQL은 다음과 같은 다섯 가지 주요 컴포넌트로 구성되어 있습니다. 각각의 컴포넌트는 시스템의 성능과 확장성, 안정성을 보장하는 중요한 역할을 합니다. 이제 각 컴포넌트에 대해 알아보겠습니다.

Journal

Journal은 Amazon Aurora DSQL에서 트랜잭션의 원자성과 내구성을 보장하는 컴포넌트입니다. Journal은 모든 트랜잭션의 변경 사항을 기록합니다. Amazon Aurora DSQL은 트랜잭션이 발생할 때마다 Journal에 기록된 로그를 통해 트랜잭션이 완료되었음을 확인하고, 시스템 장애가 발생하더라도 이전 상태로 복구할 수 있도록 합니다.

Adjudicator

Adjudicator는 Amazon Aurora DSQL에서 트랜잭션의 격리성을 보장하는 컴포넌트입니다. 동시에 실행되는 여러 트랜잭션 간의 충돌을 감지하여 해결하고, 트랜잭션이 커밋되기 전에 최근에 커밋된 트랜잭션들과의 충돌 여부를 확인합니다. 트랜잭션이 충돌하지 않으면 Adjudicator는 해당 트랜잭션을 승인하고 커밋이 성공적으로 완료될 수 있습니다.

Storage

Storage는 Amazon Aurora DSQL에서 데이터의 효율적인 쿼리 성능을 보장하는 컴포넌트입니다. 트랜잭션의 모든 변경 사항은 Journal을 통해 기록되며, 이를 기준으로 쿼리를 수행할 경우 O(n)의 시간 복잡도가 발생할 수 있습니다. 이를 해결하기 위해 Storage는 Journal을 통해 기록된 로그를 인덱싱하여 쿼리 성능을 최적화합니다. 이 과정으로 쿼리 처리 속도를 향상할 수 있습니다.

Query Processor

Query Processor는 Amazon Aurora DSQL에서 트랜잭션의 격리성을 보장하고 데이터 일관성을 유지하는 컴포넌트입니다. 트랜잭션이 시작된 시점의 정확한 시간을 읽어 들이고, 그 시간에 해당하는 데이터의 스냅샷을 Storage를 통해 조회합니다. 이는 Amazon Aurora DSQL이 레코드의 멀티버전을 지원하기 때문입니다. 즉, 각 레코드의 현재 버전뿐만 아니라 과거 버전까지 함께 저장하여, 트랜잭션이 독립적으로 실행될 수 있도록 보장합니다.

Transaction and session router

Transaction and Session Router는 Amazon Aurora DSQL의 SQL 트랜잭션과 세션을 적절한 노드로 라우팅 하는 컴포넌트입니다. Amazon Aurora DSQL은 여러 리전과 노드에서 분산 환경으로 작동하는 관계형 데이터베이스 시스템으로, 각 트랜잭션이 올바른 노드에서 처리되도록 보장하는 것이 중요합니다. 이때 Transaction and Session Router는 트랜잭션의 성격과 현재 세션의 상태를 기반으로 적절한 노드를 선택하여 요청을 전달합니다.

활용 예시

Amazon Aurora DSQL은 현재 프리뷰 단계에 있어 실제 도입 사례는 없지만, 앞으로 다양한 분야에서 활용될 것으로 예상됩니다.

예를 들어, 글로벌 금융 서비스에 활용할 수 있습니다. 이 서비스는 여러 국가에서 실시간 결제 및 정산이 이루어져야 하고 각 지역에서 발생하는 트랜잭션이 일관되게 반영되어야 합니다. 기존에는 리전 간 데이터 동기화를 위해 별도의 복제 시스템을 구축하고, 데이터 충돌을 방지하기 위한 추가적인 개발이 필요했습니다. 하지만 Amazon Aurora DSQL의 Multi-Region 및 Active-Active 기능을 활용하면, 모든 리전에서 동일한 데이터베이스를 활성 상태로 운영할 수 있어 트랜잭션 일관성을 유지하면서 지연 시간을 최소화할 수 있습니다.

또 다른 예로, 대형 이커머스 서비스에 활용할 수 있습니다. 이 서비스는 블랙프라이데이, 연말 세일 등 특정 기간에 트래픽이 폭증하는데, 기존 RDBMS 환경에서는 급격한 부하 증가를 감당하기 위해 사전에 서버 리소스를 과도하게 할당해야 했습니다. 하지만 Amazon Aurora DSQL의 Automatic Scaling 및 Serverless 기능을 활용하면, 트래픽 급증 시 자동으로 리소스를 확장하고, 평소에는 최소한의 리소스를 유지할 수 있습니다. 이를 통해 비용 최적화와 안정적인 성능 유지가 동시에 가능해집니다.

이처럼 Amazon Aurora DSQL은 멀티 리전 데이터 동기화가 필요한 글로벌 서비스, 트래픽 변동성이 큰 이벤트 기반 서비스 등 다양한 환경에서 효과적으로 활용될 수 있을 것 같습니다.

참고


Amazon S3 Tables

Q. 백엔드 개발자가 클라우드 스토리지를 활용하면 무엇이 좋을까요?

안녕하세요. 카카오페이의 마케팅테크팀에서 백엔드 개발을 하고 있는 아리입니다. 여러분, 백엔드 개발자가 클라우드 스토리지를 활용하면 무엇이 좋을까요? 서버를 관리하고 서비스를 운영하다 보면 API 개발, 비즈니스 로직 구현, 성능 최적화 외에도 애플리케이션 개발에서 생성 및 처리되는 데이터를 효율적으로 저장하고 안정적으로 관리할 필요성을 느낍니다. 클라우드 스토리지 서비스는 데이터에 대한 안정성, 확장성, 내구성 등 사용자의 여러 요구사항을 쉽게 이룰 수 있도록 다양한 기능을 제공합니다. 우리는 이를 통해 백엔드 개발의 복잡성을 줄이고 생산성을 높일 수 있습니다.

이번 AWS re:Invent 2024 행사에서는 Storage와 관련해서 데이터 처리 속도와 비용을 크게 개선하는 데 중점을 두었다고 강조했습니다. 이와 동시에 Amazon S3 Tables라는 새로운 기능을 소개했습니다.

출시 배경

S3 Tables 출시 배경을 본격적으로 살펴보기에 앞서 주요 용어를 우선 살펴보겠습니다.

용어정의역할
Data Lakes (데이터 레이크)다양한 형식의 대규모 데이터를 원시(raw) 형식으로 수집, 처리, 저장하는 저장소- 원본 데이터를 저장하고 필요할 때 가공하여 분석함
Parquet (파케)다양한 데이터 형식을 지원하는 “컬럼 기반 저장 형식”- 높은 압축률, 빠른 쿼리 실행, 효율적인 데이터 저장을 위한 데이터 형식
Data Warehouse (데이터 웨어하우스)구조화된 데이터를 저장하고 분석하는 중앙 집중형 저장소- 원본 데이터를 분석하기 쉬운 형태로 변환함
- 데이터 중복 제거, 오류 수정, 형식 변환 등의 작업을 수행함
Apache Iceberg (아파치 아이스버그)데이터 레이크에 저장된 대용량 데이터를 저장, 관리하는 오픈소스 “테이블 형식”- ACID, 파티션 최적화, 스냅샷 지원 등의 기능을 제공함
- S3에 저장된 Parquet 파일을 테이블 형태로 관리함

최근 들어 Amazon S3를 *데이터 레이크(원시 데이터 저장소)로 사용하는 경우가 늘어남에 따라 *Parquet(컬럼 기반 저장 형식) 형식의 데이터가 빠르게 증가하고 있습니다.

폭발적으로 늘어난 대규모 데이터를 분석하여 비즈니스 의사결정, 결과 예측, 맞춤형 서비스 제공 등을 목표로 하는 사용자가 많아졌습니다. 이에 따라, 단순한 데이터 저장소를 넘어 구조화된 데이터를 관리하고 분석할 수 있는 데이터 웨어하우스(구조화된 데이터 저장소) 기능이 필요하게 되었습니다.

*Apache Iceberg(오픈소스 테이블 형식) 는 데이터 레이크에 테이블 개념을 추가하여 데이터베이스처럼 Parquet 파일을 다룰 수 있는 데이터 웨어하우스와 유사한 기능을 제공합니다.

  • Apache Iceberg는 Parquet 파일 위에 메타데이터 계층을 추가하여 INSERT 및 UPDATE 연산을 지원
  • 분석 엔진은 Apache Iceberg의 메타데이터와 매니페스트를 읽어 Parquet 파일에서 필요한 데이터를 찾아 쿼리를 실행

하지만, Apache Iceberg 테이블이 커질수록 수많은 Parquet 파일이 생성되면서 쿼리 성능이 저하되는 이슈가 발생했습니다. 또한 Apache Iceberg 자체적으로 데이터 압축 및 가비지 컬렉션 기능을 제공하지만 이를 사용자가 직접 관리하고 운영해야 하는 부담이 있었습니다.

성능 및 관리 측면에서 한계가 있는 기존 Apache Iceberg에 대해서 속도, 확장성, 운영 효율성 등에서 혁신적인 기술의 필요성이 높아졌습니다. AWS는 이러한 사용자의 요구사항에 맞춰 데이터 작업의 복잡성을 줄이고 더욱 효율적으로 관리하고 분석할 수 있도록 Amazon S3에 Amazon S3 Tables, Amazon S3 Metadata 두 가지 주요 기능을 추가했습니다.
(이 글에서 Amazon S3 Metadata는 다루지 않습니다.)

그래서! Amazon S3 Tables는 뭘까요? 어디에 어떻게 활용하면 좋을까요?
이제 Amazon S3 Tables는 무엇인지, 어떤 특징을 가지고 있으며 내부 구조는 어떻게 이루어졌는지 조금 더 구체적으로 살펴보겠습니다.

Amazon S3 Tables란?

Amazon S3 Tables새로운 데이터 관리 솔루션으로, 표 형식 데이터에 최적화된 Apache Iceberg 기반의 완전 관리형 테이블 형식 Storage를 제공합니다.
S3에 저장된 데이터를 Apache Iceberg 테이블 형식으로 관리합니다. 또한, 데이터 레이크 환경에 특화된 새로운 테이블 버킷을 설계하여 데이터를 더욱 효율적으로 저장, 관리, 분석할 수 있도록 지원합니다.

Q. 기존의 S3 범용 버킷과 새로 설계된 테이블 버킷은 무슨 차이가 있을까요?

기능기존의 S3 범용 버킷테이블 버킷
데이터 저장 방식“파일 기반”으로 데이터를 저장함
(Parquet, JSON, CSV, 영상, 이미지 등)
“테이블 기반”으로 데이터를 저장함
메타데이터 관리 방식Apache Iceberg 테이블을 사용하려면 사용자가 직접 메타데이터와 데이터 파일을 관리해야 함자동으로 Apache Iceberg의 메타데이터를 관리하여 사용자가 직접 테이블을 유지보수할 필요가 없음
조회 방식 및 쿼리 성능S3 API를 사용하여 파일 단위로 직접 조회해야 함테이블 단위의 S3 API 조회가 가능함
S3의 네임스페이스 및 인덱스를 최적화하여 기존 S3 버킷에 비해 최대 3배 빠르게 테이블을 조회할 수 있음
트랜잭션 지원 여부ACID 트랜잭션을 지원 X
개별 객체 단위로 처리함
ACID 트랜잭션을 지원 O
다중 사용자가 동시에 데이터를 수정할 때의 충돌을 방지함
보안 및 IAM 정책버킷 또는 객체 단위의 IAM 정책을 지원함테이블 단위의 IAM 정책을 지원함

새로 설계된 테이블 버킷은 메타데이터와 Parquet 파일을 직접 관리할 필요 없이 S3 Tables API를 활용해 Apache Iceberg 테이블을 자동으로 생성하고 최적화합니다. 또한, 테이블 단위의 IAM1 정책을 지원해 보안 기능을 강화했습니다. 자동 데이터 압축과 S3 네임스페이스 및 인덱스 최적화로 기존보다 최대 3배 빠른 쿼리 성능과 최대 10배 높은 TPS 처리량을 제공합니다.

  • 기존의 S3 범용 버킷 예시
s3://ari-heee-bucket/kakaopay/
    ├── metadata/                # Iceberg 메타데이터 (사용자가 직접 관리)
    │   ├── 00001.metadata.json
    │   ├── 00002.metadata.json
    │   ├── snapshots/
    │   │   ├── 00001.snapshot
    │   │   ├── 00002.snapshot
    ├── data/                    # Parquet 데이터 (사용자가 직접 관리)
    │   ├── kakaopay-part-0001.parquet
    │   ├── kakaopay-part-0002.parquet
    │   ├── kakaopay-part-0003.parquet
  • 새로 설계된 테이블 버킷 예시
s3://ari-heee-table-bucket/kakaopay/
    ├── metadata/                                 # Iceberg 메타데이터 (AWS 자동 관리)
    │   ├── latest.metadata.json                  # 최신 Iceberg 테이블 메타데이터 (사용자가 신경 쓸 필요 없음)
    ├── data/                                     # AWS 관리 Parquet 데이터
    │   ├── compacted-kakaopay-part-0001.parquet  # 자동 병합된 데이터

핵심 계층

이제 Amazon S3 Tables가 무엇인지 알게 되었으니 다음으로 내부 구성과 어떻게 동작하는지 살펴보겠습니다.
S3 Tables를 설명하기 쉽게 크게 4가지 계층으로 나누어 보겠습니다.

  1. 인터페이스 계층 (Interface Layer)
  2. 메타데이터 계층 (Metadata Layer)
  3. 데이터 관리 계층 (Data Management Layer)
  4. 스토리지 계층 (Storage Layer)

인터페이스 계층 (Interface Layer)

사용자 및 분석 엔진이 S3 Tables와 상호작용하는 계층
S3 Tables는 테이블을 관리할 수 있는 전용 API를 제공합니다. AWS CLI 또는 SDK를 통해 테이블을 생성, 조회, 삭제할 수 있습니다. 분석 엔진을 통해 metadata.json을 자동으로 읽어 필요한 데이터만 빠르게 조회할 수 있습니다.

구성 요소

  • S3 Tables Table API
    • 테이블 관리 API: CreateTable, ListTables, GetTable, RenameTable, DropTable
    • 메타데이터 업데이트 API: GetTableMetadataLocation, UpdateTableMetadataLocation
  • 데이터 분석 서비스 (AWS Glue, EMR Spark, Redshift Spectrum 등)
  • SQL 기반 쿼리 엔진 (Amazon Athena, Trino, Presto 등)

동작 방식

  1. 테이블 생성
    • aws s3api create-table --bucket ari-heee-table-bucket --table-name kakaopay
  2. 사용자가 분석 엔진에서 SQL을 실행
    • SELECT * FROM kakaopay WHERE transaction_amount > 100000;
  3. S3 Tables API를 호출하여 해당 테이블의 메타데이터 조회 요청
  4. 내부적으로 Apache Iceberg 메타데이터 계층을 통해 원하는 데이터를 빠르게 반환

메타데이터 계층 (Metadata Layer)

테이블의 구조 및 파일 위치 정보를 관리하는 계층
S3 Tables의 테이블 메타데이터는 Apache Iceberg의 스냅샷, 매니페스트, 테이블 스키마 등을 관리하는 파일입니다. AWS가 자동으로 관리하며 사용자가 직접 관리할 필요가 없습니다. S3 Tables가 자동으로 최신 metadata.json을 관리하며, Apache Iceberg 스냅샷을 활용하여 이전 버전 데이터 조회(Time Travel 기능)가 가능합니다.

구성 요소

  • Iceberg Metadata 파일
  • Snapshots (스냅샷)
  • Manifests (파일 목록)
  • Schema (테이블 구조 정보)
s3://ari-heee-table-bucket/kakaopay/
    ├── metadata/
    │   ├── latest.metadata.json         # 최신 Iceberg 테이블 메타데이터 (AWS 자동 관리)
    │   ├── snapshots/
    │   │   ├── snapshot-00001.metadata  # Iceberg 스냅샷 1
    │   │   ├── snapshot-00002.metadata  # Iceberg 스냅샷 2
    │   ├── manifests/
    │   │   ├── manifest-00001.json      # Iceberg 매니페스트 (파일 리스트 포함)

동작 방식

  1. SQL 쿼리 요청 시, latest.metadata.json을 조회하여 최신 테이블 스키마 및 데이터 파일 위치 확인
  2. Iceberg 스냅샷을 활용하여, 이전 버전의 데이터를 조회하는 Time Travel 가능
  3. 매니페스트 파일을 분석하여 필요한 Parquet 파일 목록을 결정

수행 쿼리에 따른 동작 방식

  • 데이터 삽입 (INSERT)
    1. INSERT INTO kakaopay VALUES (...); 실행
    2. 데이터가 Parquet 형식으로 S3에 저장
    3. 새로운 Iceberg 스냅샷 생성
    4. Iceberg 메타데이터 업데이트 (latest.metadata.json 자동 갱신)
  • 데이터 조회 (SELECT)
    1. SELECT * FROM kakaopay WHERE ...; 실행
    2. metadata.json → snapshots → manifests → 데이터 파일 순으로 검색
    3. 분석 엔진은 메타데이터를 참조하여 최적화된 Parquet 파일만 조회
    4. 결과 반환
  • 데이터 삭제 (DELETE)
    1. DELETE FROM kakaopay WHERE ...; 실행
    2. 해당 행이 포함된 Parquet 파일이 논리적으로 삭제, 새로운 스냅샷을 생성하여 실제 데이터를 가리키지 않도록 참조 변경 (MVCC2 적용)
    3. 나중에 가비지 컬렉션 프로세스를 통해 자동으로 실제 데이터 파일 삭제

데이터 관리 계층 (Data Management Layer)

자동 최적화, 파일 병합, 불필요한 데이터 삭제를 관리하는 계층
데이터가 지속적으로 늘어나면 작은 Parquet 파일의 개수가 증가하여 성능 저하 이슈가 발생할 수 있습니다. S3 Tables에서는 자동으로 Parquet 파일을 병합하고 내부적으로 S3 네임스페이스 튜닝, 인덱스 최적화를 통해 쿼리 성능을 높입니다.

구성 요소

  • 자동 데이터 병합 (Compaction)
  • 불필요한 데이터 제거 (Garbage Collection)
  • S3 내부 인덱스 최적화
  • S3 네임스페이스 튜닝

동작 방식

  1. 데이터가 지속적으로 삽입되면, 작은 Parquet 파일의 개수 증가
  2. S3 Tables가 Compaction을 자동 수행하여 작은 파일을 대형 파일로 병합
  3. 사용되지 않는 Parquet 파일과 같은 불필요한 데이터를 가비지 컬렉션 프로세스를 통해 자동으로 삭제
  4. 내부적으로 인덱스 최적화 및 네임스페이스 튜닝을 통해 검색 속도 향상
# Compaction 전 (기존 S3 범용 버킷)
s3://ari-heee-table-bucket/kakaopay/data/
    ├── kakaopay-part-0001.parquet (10MB)
    ├── kakaopay-part-0002.parquet (10MB)
    ├── kakaopay-part-0003.parquet (10MB)

# Compaction 후 (S3 Tables 자동 최적화)
s3://ari-heee-table-bucket/kakaopay/data/
    ├── compacted-kakaopay-part-0001.parquet (30MB)

스토리지 계층 (Storage Layer)

테이블의 실제 데이터가 저장되는 계층
S3 Tables에서는 새로운 테이블 버킷을 통해 Parquet 형식의 파일 데이터를 자동으로 최적화합니다. 사용자는 분석 엔진에서 테이블 단위로 쉽게 데이터 접근이 가능합니다.

구성 요소

  • 데이터 저장소 (e.g. Parquet, ORC, Avro, CSV, JSON 등)

동작 방식

  1. S3 Tables는 데이터를 Parquet 형식의 파일로 저장
  2. 사용자는 직접 S3 객체를 관리하지 않고 SQL로 데이터 조회 가능

주요 특징

Amazon S3 Tables의 개념과 내부 구조를 통해 여러 기능과 특징을 알게 되었습니다.
크게 5개의 주요 특징으로 구분하여 한번 더 요약해 보겠습니다.

완전 관리형 Iceberg 테이블 지원

  • Amazon S3 Tables는 Apache Iceberg 형식을 완전 관리형으로 지원하여 데이터 압축, 스냅샷 관리, 참조되지 않은 파일 제거 등 유지 관리를 자동화하여 비용과 시간을 절감할 수 있습니다.
  • 사용자는 데이터 관리 대신 다양한 AWS 분석 서비스를 활용하여 데이터 준비 및 분석 시간을 단축하여 비즈니스 목표에 집중할 수 있습니다.

새로운 테이블 버킷 유형

  • S3 Tables는 Iceberg 테이블을 효과적으로 저장하고 관리하도록 테이블 버킷이라는 새로운 S3 버킷 유형을 설계했습니다.
  • 이 테이블 버킷은 기존 S3의 내구성, 확장성, 가용성을 그대로 유지하면서 분석 워크로드에 최적화된 Storage 기능을 제공합니다.

향상된 성능 및 확장성

  • S3 내부 인덱스 최적화 및 데이터 자동 압축을 통해 기존 S3 버킷 대비 최대 3배 빠른 쿼리 성능을 제공합니다.
  • 최적화한 네임스페이스를 통해 테이블 버킷 내 테이블을 논리적으로 그룹화하여 초당 최대 10배 더 많은 트랜잭션을 지원합니다.
  • 대규모 데이터 처리에 적합하도록 높은 성능과 확장성을 제공합니다.

데이터 무결성 보장

  • ACID 트랜잭션을 지원하여 여러 사용자가 동시에 접근했을 때 충돌을 방지하여 데이터 손실 위험을 낮춥니다.
  • 데이터베이스처럼 INSERT, UPDATE, DELETE가 가능합니다.
  • MVCC(Multi-Version Concurrency Control) 을 적용하여 동일 테이블에서 여러 작업을 안전하게 수행할 수 있습니다.
  • 특정 시점의 데이터를 복원 가능하도록 하는 Time Travel 기능을 지원합니다.

향상된 보안 정책 지원

  • 테이블을 개별 리소스로 사용하여 테이블 단위로 IAM 적용하여 보안을 강화했습니다.
  • 예를 들어, 특정 사용자만 해당 테이블을 조회할 수 있도록 하는 등의 세부적인 권한 관리가 가능합니다.
    • {
          "Effect": "Allow",
          "Principal": {"AWS": "arn:aws:iam::123456789012:user/DataAnalyst"},
          "Action": "s3:GetTable",
          "Resource": "arn:aws:s3:::ari-heee-table-bucket/kakaopay"
      }

활용 예시

Q. 그래서! Amazon S3 Tables를 어디에 어떻게 활용하면 좋을까요?

S3 Tables는 대규모 데이터를 저장하고 분석해야 하는 서비스, 데이터의 수정/삭제보다는 생성/조회 위주의 처리를 하는 서비스, 실시간 응답보다는 주기적인 배치 분석을 주요 기능으로 하는 서비스에 활용하는 것이 좋습니다.

만약 복잡한 관계형 데이터 모델을 다루면서 실시간 트랜잭션 처리 혹은 빠른 업데이트를 요구하는 서비스를 운영하고 있다면, S3 Tables를 도입하는 것이 적합하지 않을 수 있습니다. 정형 데이터를 다루는 서비스라면 파일 기반의 저장에 특화된 기존의 S3 범용 버킷을 사용하는 것이, 정교한 데이터 모델링과 복잡한 쿼리를 자주 실행해야 하는 서비스라면 RDBMS를 사용하는 것이 비용이나 성능 측면에서 더 유리할 수 있습니다.

Amazon S3 Tables은 현재 프리뷰 단계에 있어 실제 서비스에서 사용된 사례는 아직 없지만, 아래 사례를 통해 각자의 서비스에 어떻게 도입할 수 있을지 같이 고민해 보는 시간이 되었으면 좋겠습니다.
Amazon S3 Tables를 사용하기 적합한 구체적인 예시는 아래와 같습니다.

  1. 머신러닝 & AI 데이터 처리: ML 모델을 학습하기 위한 대량의 원본 데이터를 효율적으로 저장할 수 있습니다.
  2. 광고 & 마케팅 서비스: 광고 클릭 및 사용자 이벤트 로그를 S3에 저장하고 사용자 행동 데이터를 분석하여 맞춤형 광고를 제공할 수 있습니다.
  3. 이커머스 & 리테일 서비스: 재고 및 물류 데이터를 분석하여 수요를 예측하고 사용자 행동 데이터를 통해 구매 패턴을 분석하여 개인화된 쇼핑 경험을 제공할 수 있습니다.
  4. 금융 & 핀테크 서비스: 금융 트랜잭션 로그를 S3에 저장하고 분석 엔진을 통해 실시간 이상 거래 탐지로 보안을 강화할 수 있습니다.
  5. 미디어 & 스트리밍 서비스: 동영상 스트리밍 서비스의 사용자 시청 데이터를 S3에 저장하고 분석하여 추천 콘텐츠를 최적화하고 네트워크 및 버퍼링 로그를 분석하여 스트리밍 품질을 개선할 수 있습니다.

참고


마치며

AWS re:Invent 2024에서 소개된 Amazon Aurora DSQL과 Amazon S3 Tables에 대해 알아봤습니다. Amazon Aurora DSQL은 글로벌 서비스, 대규모 트랜잭션 처리 등 다양한 요구사항을 만족시키며 사실상 무제한의 확장성과 고가용성을 제공하는 서버리스 분산형 SQL 데이터베이스입니다. Amazon S3 Tables는 데이터 관리 및 분석의 복잡성을 줄이고 비용 효율성과 뛰어난 쿼리 성능을 제공하는 솔루션으로, 대규모 데이터를 분석하고 활용하는 서비스에 특히 유용합니다. 빠르게 변화하는 클라우드 환경에서 데이터베이스 기술이 어떻게 발전하고 있으며, 이를 활용해 성능과 확장성을 극대화하고 대규모 데이터를 효율적으로 분석할 수 있는지 고민해 볼 수 있는 계기가 되었기를 바랍니다.

개인별 경험 공유

jko.me

감사하게도 카카오페이 기술직군을 대표하여 AWS re:Invent 2024 행사에 참여할 수 있는 기회를 얻었습니다. 세계 각지에서 온 다양한 사람들과 함께한 이런 규모의 글로벌 행사는 처음이라 모든 순간이 새롭고 인상적이었습니다. 특히 엑스포에서 본 글로벌 기업들이 데이터베이스, 클라우드 인프라, 보안 등 다양한 분야에서 AI가 접목된 기술을 선보였고, 이를 통해 기술의 흐름이 어떻게 변화하고 있는지를 직접 체감할 수 있었습니다. 빠르게 변화하는 기술 트렌드를 직접 경험하면서 앞으로 어떤 방향으로 학습하고 적용해 나가야 할지 고민해 볼 수 있는 시간이었습니다.

ari.heee

AWS re:Invent 2024 행사에 참석하여 다양한 AWS 서비스와 신규 기능을 소개하는 세션을 직접 경험할 수 있어서 좋았습니다. AWS의 여러 솔루션이 다양한 산업에서 활용되는 사례를 보며 카카오페이 서비스에도 어떻게 적용하면 좋을지 고민해 볼 수 있는 시간이었습니다. 무엇보다 이미 방대한 데이터를 안정적으로 처리하고 있는 상황에서도 끊임없이 사용자 경험을 개선하고 혁신적인 기능을 만들어가는 AWS의 도전정신이 인상 깊었습니다. 개발자로서 더욱 좋은 서비스를 만들기 위해 가져야 할 중요한 태도를 다시금 깨닫게 되는 매우 값진 경험이었습니다.

Footnotes

  1. AWS IAM(Identity and Access Management)은 AWS 클라우드에서 리소스에 대한 접근 권한을 안전하게 관리하고 제어하는 서비스입니다. IAM을 통해 사용자는 AWS 계정의 리소스에 대한 접근 권한을 세분화하여 관리할 수 있습니다.

  2. MVCC(Multi-Version Concurrency Control, 다중 버전 동시성 제어)는 데이터베이스 시스템에서 여러 트랜잭션이 동시에 데이터에 접근하고 수정할 때 데이터 일관성을 유지하는 기술입니다. MVCC는 각 트랜잭션에게 데이터의 특정 시점의 스냅샷을 제공하여, 트랜잭션들이 서로 간섭 없이 작업을 수행할 수 있도록 합니다.

ari.heee
ari.heee

카카오페이 마케팅테크팀 백엔드 개발자 아리입니다. 책임감을 중요하게 생각하며, 믿고 맡길 수 있는 동료가 되고자 노력합니다.

jko.me
jko.me

카카오페이에서 대출 플랫폼 백앤드 개발을 하고 있는 제이코입니다. 지속적으로 성장하기 위해 노력하며, 함께 성장하기 위한 공유를 중요하게 생각합니다.