서버리스 스토리지 (Serverless Storage)
개요
서버리스 스토리지는 클라우드 제공자가 인프라 관리, 확장, 백업을 처리하는 저장 서비스입니다. 서버리스 컴퓨팅 환경에서는 Lambda 함수나 컨테이너가 시작과 동시에 스토리지에 접근해야 하므로, 적절한 저장소 선택이 성능과 비용에 직접적인 영향을 미칩니다.
AWS는 세 가지 주요 서버리스 스토리지 서비스를 제공합니다: Amazon S3(객체 스토리지), Amazon EFS(파일 시스템), Amazon DynamoDB(데이터베이스). 각 서비스는 서로 다른 접근 모델과 성능 특성을 가지며, 애플리케이션 요구사항에 따라 선택해야 합니다. 본 문서에서는 이들 서비스의 특징, 비교, 데이터 영속성 패턴을 분석합니다.
핵심 개념
스토리지 유형 분류
서버리스 환경에서 사용 가능한 스토리지는 접근 방식에 따라 세 가지로 분류됩니다.
| 스토리지 유형 | 접근 모델 | 대표 서비스 | 적합 용도 |
|---|---|---|---|
| 객체 스토리지 | REST API (GET/PUT) | Amazon S3, Azure Blob, GCS | 이미지, 백업, 레이크하우스 |
| 파일 스토리지 | NFS/CIFS 마운트 | Amazon EFS, Azure Files | 공유 파일, 레거시 앱 마이그레이션 |
| 블록 스토리지 | 디스크 마운트 | Amazon EBS, Azure Disk | 데이터베이스, 부팅 볼륨 |
Amazon S3 (Simple Storage Service)
S3는 클라우드에서 가장 널리 사용되는 객체 스토리지 서비스로, 무제한 확장과 99.999999999%(11 나인)의 내구성을 제공합니다.
S3의 주요 특징:
- 버킷 기반 저장: 버킷 안에 객체(key + 데이터 + 메타데이터)를 저장
- 강한 일관성: 읽기-쓰기 직후 강한 일관성(Strong Consistency) 보장
- 스토리지 클래스: Standard, Intelligent-Tiering, Standard-IA, One Zone-IA, Glacier 계열
- 이벤트 기반 통합: S3 이벤트 알림을 통해 Lambda/SQS/SNS 자동 트리거
S3 스토리지 클래스 비교:
| 클래스 | 접근 빈도 | 내구성 | 가용성 | 최소 저장 기간 |
|---|---|---|---|---|
| S3 Standard | 빈번 | 11 나인 | 99.99% | 없음 |
| S3 Intelligent-Tiering | 자동 전환 | 11 나인 | 99.9% | 없음 |
| S3 Standard-IA | 비빈번 | 11 나인 | 99.9% | 30일 |
| S3 One Zone-IA | 비빈번 (1 AZ) | 11 나인 | 99.5% | 30일 |
| S3 Glacier Instant | 희소 접근 | 11 나인 | 99.9% | 90일 |
| S3 Glacier Deep Archive | 아카이브 | 11 나인 | 99.99% | 180일 |
Amazon EFS (Elastic File System)
EFS는 NFS 프로토콜을 지원하는 완전 관리형 파일 시스템으로, 여러 Lambda 함수나 컨테이너가 동시에 마운트하여 사용할 수 있습니다.
EFS의 주요 특징:
- 동적 확장: 사용량에 따라 자동으로 페타바이트까지 확장
- 동시 접근: 수천 개의 연결 동시 지원
- 다중 AZ: 가용 영역 전체에 걸쳐 데이터 복제
- Performance Mode: General Purpose(기본)와 Max I/O 선택 가능
- Throughput Mode: Bursting(기본)과 Provisioned 선택 가능
EFS vs S3 접근 방식 비교:
| 특성 | Amazon S3 | Amazon EFS |
|---|---|---|
| 접근 방식 | REST API | 파일 시스템 (마운트) |
| 동시성 | 객체 수준 | 파일 수준 동시 읽기/쓰기 |
| 지연 시간 | 수십 ms (네트워크) | 수 ms (VPC 내부) |
| 최대 파일 크기 | 5TB | 제한 없음 |
| 메타데이터 | 커스텀 태그 지원 | POSIX 속성 |
| 비용 모델 | 요청 + 저장 + 전송 | 저장 + 전송 (요청 과금 없음) |
데이터 영속성 (Data Persistence)
서버리스 환경에서는 함수가 종료되면 로컬 상태가 사라지므로, 데이터 영속성을 위해 외부 스토리지가 필수적입니다.
영속성 패턴:
| 패턴 | 설명 | 사용 사례 |
|---|---|---|
| S3 영속 저장 | 객체를 S3에 저장하여 영구 보존 | 파일 백업, 이미지 저장, 로그 보관 |
| DynamoDB 상태 | 테이블에 상태 데이터 저장 | 세션, 카트, 사용자 프로필 |
| EFS 공유 | 여러 함수가 동일 파일시스템 공유 | 레거시 앱 마이그레이션, 공유 설정 |
| ElastiCache | 인메모리 캐시로 임시 상태 관리 | 세션 캐싱, 빈번한 읽기 데이터 |
비교/분석
서버리스 스토리지 서비스 종합 비교
| 기능 | Amazon S3 | Amazon EFS | Amazon DynamoDB |
|---|---|---|---|
| 유형 | 객체 스토리지 | 파일 시스템 | NoSQL 데이터베이스 |
| 확장성 | 자동 무제한 | 자동 페타바이트 | 자동 무제한 |
| 내구성 | 99.999999999% | 99.999999999% | 99.999999999% |
| 가용성 | 99.99% | 99.99% | 99.999% |
| 지연 시간 | 수십 ms | 수 ms | 수 ms |
| 동시성 | 객체 수준 | 파일 수준 | 항목 수준 |
| 비용 모델 | GB + 요청 | GB + 전송 | 읽기/쓰기 + 저장 |
| ** Lambda 통합** | 이벤트 트리거 | 파일 마운트 | 트리거 + 스트림 |
비용 비교 시나리오
100GB 데이터 저장, 월 100만 요청 기준 추정 비용:
| 서비스 | 저장 비용 | 요청 비용 | 전송 비용 | 월 총 비용 |
|---|---|---|---|---|
| S3 Standard | ~$2.30 | ~$0.40 | ~$0.90 | ~$3.60 |
| S3 Standard-IA | ~$1.25 | ~$0.65 | ~$0.90 | ~$2.80 |
| EFS Standard | ~$24.00 | 과금 없음 | ~$0.90 | ~$24.90 |
| DynamoDB | ~$0.25 (25GB 무료) | ~$0.65 | - | ~$0.90 |
Lambda와의 통합 패턴
1. S3 이벤트 기반 패턴:
- S3 객체 업로드 시 Lambda 자동 호출
- 이미지 리사이징, 데이터 변환, 백업 자동화
2. EFS 마운트 패턴:
- Lambda 함수에 EFS 연결 설정
- 여러 함수가 동일 파일 공유 (Concurrent Access)
- 레거시 애플리케이션 마이그레이션 시 유용
3. DynamoDB Streams 패턴:
- DynamoDB 변경사항을 스트림으로 캡처
- Lambda가 스트림을 읽어 실시간 처리
동작 원리
S3 객체 저장 흐름
- 요청 수신: SDK/API를 통해 PutObject 요청 전송
- 권한 검증: IAM 정책, 버킷 정책, ACL 검증
- 데이터 분산: 데이터를 여러 AZ에 걸쳐 자동 복제
- 메타데이터 저장: 시스템/커스텀 메타데이터 기록
- 객체 생성: 고유한 버전 ID 할당
- 응답 반환: 200 OK와 ETag 반환
EFS 마운트 흐름
- 보안그룹 설정: Lambda와 EFS 간 네트워크 접근 허용
- 마운트 타겟: VPC 내 EFS 마운트 타겟 IP 확인
- 연결 설정: Lambda 함수 구성에서 EFS 연결 추가
- 파일 접근: NFS 프로토콜로 파일 읽기/쓰기
DynamoDB 쓰기 흐름
- 요청 처리: PutItem/UpdateItem 요청 수신
- 리플리케이션: 멀티 AZ 자동 리플리케이션
- 스트림 기록: DynamoDB Streams에 변경사항 기록 (활성화 시)
- 응답 반환: 쓰기 완료 확인
장단점
장점
- 인프라 관리 제거: 하드웨어, 패치, 백업을 클라우드 제공자가 처리
- 자동 확장: 데이터 증가에 따라 자동으로 스토리지 확장
- 높은 내구성: 11 나인(99.999999999%) 내구성으로 데이터 보호
- 유연한 비용: 사용한 만큼만 비용 지불, 프로비저닝 불필요
- 보안 통합: IAM, 암호화, VPC 격리 등 보안 기능 내장
단점
- 콜드 스타트: Lambda + EFS 연결 시 마운트 시간으로 지연 발생
- 네트워크 의존: S3/EFS 접근 시 네트워크 지연 시간 발생
- vendor lock-in: 각 클라우드 제공자 고유 API에 종속
- 대용량 스트리밍 제한: S3는 대용량 스트리밍에 적합하지 않음
- 비용 복잡성: 스토리지 클래스, 접근 패턴에 따른 비용 예측 어려움
관련 기술
- 서버리스 시스템 — FaaS, BaaS, 서버리스 아키텍처 기초
- 서버리스 메모리 — Lambda 함수 메모리 관리
- 콜드 스타트 최적화 — 콜드 스타트 원인과 최적화 기법
- 서버리스 컨테이너 — Fargate, Cloud Run, Knative 비교
참고 문헌
- Amazon S3 공식 문서: https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html
- Amazon EFS 공식 문서: https://docs.aws.amazon.com/efs/latest/ug/whatis-amazon-efs.html
- Amazon DynamoDB 공식 문서: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html
- AWS Serverless Storage 아키텍처: https://aws.amazon.com/serverless/storage/
- S3 Intelligent-Tiering: https://docs.aws.amazon.com/AmazonS3/latest/userguide/intelligent-tiering.html
핵심 정리
-
스토리지 선택: 객체(S3), 파일(EFS), 데이터베이스(DynamoDB) 중 애플리케이션 요구사항에 따라 선택해야 합니다.
-
S3 활용: 이미지, 백업, 데이터 레이크 등 대용량 비정형 데이터 저장에 최적하며, 11 나인 내구성과 스토리지 클래스 자동 전환으로 비용을 최적화할 수 있습니다.
-
EFS 활용: 여러 Lambda 함수나 컨테이너가 동시에 파일을 공유해야 할 때 사용하며, NFS 프로토콜을 지원하여 레거시 애플리케이션 마이그레이션에 적합합니다.
-
데이터 영속성: 서버리스 함수는 무상태이므로, 상태 데이터는 반드시 S3, DynamoDB, EFS 같은 외부 스토리지에 저장해야 합니다.
-
비용 최적화: S3 Intelligent-Tiering, EFS Lifecycle Management, DynamoDB 온디맨드 모드를 적절히 조합하면 스토리지 비용을 크게 절감할 수 있습니다.