AWS스토리지 서비스 비교: S3와 EFS
개요
AWS에서 제공하는 주요 스토리지 서비스로 EBS, S3, EFS가 있습니다. 이 중 S3와 EFS의 개념과 특징을 정확히 이해하며 각 서비스의 장단점을 파악하고 사용 사례에 맞는 적절한 스토리지를 선택합니다.
S3 (Simple Storage Service)
S3는 객체 스토리지 서비스로, 파일(객체)을 버킷이라는 컨테이너에 저장합니다. 각 객체는 고유한 키(경로)로 식별되며, 메타데이터와 함께 저장됩니다.
특징
- 객체 기반 스토리지: 파일을 변경 불가능한 객체로 취급 (수정 시 객체 전체를 다시 업로드)
- 버킷 구조: 글로벌 네임스페이스의 최상위 컨테이너로, 전 세계적으로 고유한 이름 필요
- 평면적 구조: 계층적 디렉토리 구조가 아닌 키-값 형태로 저장 (폴더는 시각적 구분용)
- HTTP/HTTPS 접근: REST API를 통한 접근
- 높은 내구성: 99.999999999%(11 9’s)의 내구성
- 확장성: 무제한에 가까운 저장 용량
- 버전 관리: 객체의 여러 버전 유지 가능
- 생명 주기 정책: 객체의 자동 삭제/이전 규칙 설정
사용 사례
- 정적 웹사이트 호스팅: HTML, CSS, JavaScript 파일 등 정적 콘텐츠 제공
- 백업 및 아카이브: 장기 데이터 보존과 저비용 스토리지 옵션
- 빅데이터 분석: 대용량 데이터 세트 저장과 분석
- 콘텐츠 배포: 이미지, 비디오 등 미디어 파일 저장 및 전달
- 데이터 레이크: 구조화, 반구조화 및 비구조화 데이터 통합 저장소
스토리지 클래스
- S3 Standard: 고접근성, 일반 용도, 빈번한 접근에 적합
- S3 Infrequent Access(IA): 자주 접근하지 않지만 필요시 빠른 접근이 필요한 데이터
- S3 One Zone-IA: 단일 가용 영역에 저장되어 비용 절감, 중요도가 낮은 데이터에 적합
- S3 Glacier: 장기 보관 목적, 검색에 수 분~수 시간 소요
- S3 Glacier Deep Archive: 최저 비용, 가장 긴 검색 시간(최대 12시간), 연 1-2회 접근하는 데이터에 적합
EFS (Elastic File System)
EFS는 완전 관리형 네트워크 파일 시스템(NFS)으로, 여러 EC2 인스턴스에서 동시에 마운트하여 사용할 수 있는 공유 파일 시스템입니다.
특징
- 파일 시스템 기반: 계층적 디렉토리 구조로 구성되어 기존 파일 시스템과 유사하게 사용
- POSIX 호환: 표준 파일 시스템 인터페이스 제공으로 기존 애플리케이션 통합 용이
- 탄력적 확장: 사용한 만큼만 비용을 지불하며 필요에 따라 자동 확장
- 동시 접근: 수천 개의 인스턴스에서 동시 마운트 가능한 공유 스토리지
- 높은 가용성: 여러 가용 영역에 데이터를 자동으로 복제하여 가용성 보장
- 자동 확장/축소: 파일 추가/삭제에 따라 용량이 자동으로 조정됨
성능 모드
- 범용 모드(General Purpose): 일반적인 워크로드에 적합, 낮은 지연 시간 제공
- 최대 I/O 모드(Max I/O): 높은 병렬 처리가 필요한 대규모 워크로드에 적합
처리량 모드
- 버스팅 처리량(Bursting Throughput): 기본 모드, 파일 시스템 크기에 따라 기준 처리량 제공, 필요시 버스트 가능
- 프로비저닝된 처리량(Provisioned Throughput): 일정한 성능이 필요한 경우 고정 처리량 설정 가능
사용 사례
- 콘텐츠 관리 시스템: 여러 사용자가 동시에 접근하는 파일 스토리지
- 웹 서비스: 여러 웹 서버에서 공유해야 하는 콘텐츠
- 개발 환경: 소스 코드와 빌드 파일 공유
- 빅데이터 및 분석: 분석 도구가 접근해야 하는 공유 데이터
- 미디어 처리 워크플로: 비디오/오디오 편집 및 처리
- 컨테이너 스토리지: Docker 컨테이너의 영구 스토리지
S3와 EFS의 차이점
항목 | S3 | EFS |
---|---|---|
유형 | 객체 스토리지 | 파일 시스템 스토리지 |
구조 | 평면적 구조 (키-값 기반) | 계층적 디렉토리 구조 |
접근 방식 | HTTP/HTTPS 기반 REST API | NFS 프로토콜 (마운트 방식) |
데이터 변경 | 객체 전체 교체 (부분 수정 불가) | 파일 일부분 수정 가능 |
트랙잭션 지원 | 원자적 쓰기만 보장, 트랜잭션 미지원 | 파일 잠금 및 POSIX 호환 시맨틱 제공 |
성능 특성 | 높은 처리량, 높은 지연 시간 | 낮은 지연 시간, 실시간 액세스에 적합 |
비용 구조 | 저장 용량, 요청 수, 데이터 전송량에 따라 과금 | 저장 용량과 선택적 프로비저닝된 처리량에 따라 과금 |
확장성 | 사실상 무제한 용량 | 페타바이트 규모로 자동 확장 |
다중 인스턴스 접근 | 여러 클라이언트가 API로 접근 | 여러 EC2 인스턴스에서 동시에 마운트 가능 |
운영체제 의존성 | 운영체제 독립적 | Linux 기반 시스템에 최적화 |
선택 가이드라인
S3 선택 시나리오
- 정적 콘텐츠 저장 및 제공: 웹사이트, 모바일 앱 등의 정적 자산
- 대규모 데이터 세트 저장: 빅데이터, 로그 파일, 센서 데이터 등
- 백업 및 아카이브: 장기 데이터 보존이 필요한 경우
- 서버리스 애플리케이션의 데이터 저장소: Lambda 함수와 연동
- 글로벌 액세스가 필요한 콘텐츠: CDN과 연계하여 전 세계 사용자에게 콘텐츠 제공
EFS 선택 시나리오
- 여러 인스턴스에서 공유해야 하는 파일: 동시에 여러 서버에서 접근이 필요한 경우
- Linux 기반 애플리케이션이 파일 시스템 인터페이스 필요: POSIX 호환이 필요한 애플리케이션
- 파일 데이터의 일부를 자주 수정해야 하는 경우: 부분 업데이트가 빈번한 워크로드
- 데이터베이스, CMS, 웹 서버 등의 공유 스토리지: 여러 서버 간 데이터 일관성 유지 필요
- Docker 컨테이너의 공유 스토리지: 컨테이너화된 애플리케이션의 영구 스토리지
결론
AWS의 S3와는 EFS 각각 다른 스토리지 패러다임을 대표합니다. S3는 확장성과 내구성이 뛰어난 객체 스토리지로, 정적 콘텐츠나 백업 데이터에 적합합니다. 반편 EFS는 여러 인스턴스에서 공유할 수 있는 파일 시스템으로, 기존 애플리케이션의 마이그레이션이나 실시간 파일 수정이 필요한 워크로드에 적합합니다.
각 서비스의 특성과 제약을 이해하고 애플리케이션의 요구사항에 맞는 서비스를 선택하는 것이 AWS 클라우드 환경에서 비용 효율적이고 최적화된 아키텍처를 구성하는 핵심입니다.
댓글남기기