3 분 소요

개요

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 클라우드 환경에서 비용 효율적이고 최적화된 아키텍처를 구성하는 핵심입니다.

댓글남기기