Cloud/AWS

S3 vs EBS vs EFS

NOG 2024. 11. 25. 05:59

블록 스토리지 (Block storage)

 

데이터를 일정한 크기의 블록으로 나누어 저장하는 방식

블록은 고유한 주소가 있고 이를 통해 블록을 재구성하여 데이터를 불러올 수 있다.

 

-파일을 저장 시 블록 단위의 작업을 지원하기 때문에 변경된 데이터만 최신화해주면 된다.

낮은 I/O 레이턴시 와 Read/Write 작업이 빠르다.

즉 자주 파일이 업데이트 되고 Read/Write 작업이 빈번한 경우에 적합하다.

 

 

 

EBS ( Elastic Block Store)

EBS

 

- EC2 인스턴스와 네트워크로 연결

- 물리적 머신의 로컬 디스크 드라이브와 유사하게 EC2 인스턴스에 연결된 프로비저닝 된 크기의 볼륨에 데이터를 저장

( EC2와 함께 사용, 독립형 스토리지가 아니다.)

- EC2  인스턴스가 종료되어도 별개로 작동하여 데이터가 날아가지 않는다.

- 워크로드에 따라 비용 최적화가 가능한 다양한 볼륨 유형 제공한다.

- 백업된 스냅샷에서 EBS 볼륨 생성 및 복원이 가능하다.

- 데이터에 빠르게 액세스하고 장기적으로 지속해야 하는 경우에 적합하다.

 

 

 

 

파일 스토리지 (File storage)

 

폴더와 파일로 이루어진 계층 구조를 가지고 있다.

윈도우 탐색기처럼 폴더 안에 하위 폴더를 만들고 파일을 저장하는 것과 같다.

 

-사용이 친숙하고 표준화가 잘 되있으나 데이터가 많아지면 파일과 폴더를 찾기 위해 리소스가 많이 든다.

 

 

EFS ( Elastic File System )

EFS

 

-NFS 기반 공유 스토리지로 다수의 EC2들이 동일한 파일시스템을 공유할 수 있도록 설계된 스토리지

-완전 관리형 서비스로 파일 시스템을 쉽고 빠르게 생성 및 구성 가능하다.

-수천 개의 EC2에서 동시에 액세스 가능하다.

-파일이 추가 또는 제거됨에 따라 자동으로 스토리지 용량을 즉시 확장하거나 축소

-여러 가용 영역에 파일이 중복으로 저장되어 하나의 가용 영역이 파괴되더라도 다른 가용 영역에서 서비스가 제공 가능

- VPC 내 EC2 인스턴스는 직접 액세스할 수 있으나 On-premise 서버는 Direct Connect 와 VPN 연결을 통해 VPC와 연결

- 각 가용영역에 mount target을 두고 각각의 가용영역에서 해당 mount target으로 접근

 

/*

NFS (Linux/Unix 기반 네트워크 파일 공유 프로토콜) :

여러 클라이언트가 같은 파일 시스템에 동시에 접근 가능, 파일 공유 가능

클라이언트가 로컬 디렉토리처럼 마운트하여 사용

=> NFS 서버 : /data -> 클라이언트 :  /mnt/data

POSIX 파일 시스템 표준을 따르므로, 파일 권한, 잠금 등이 적용됨.

NFS 서버는특정 디렉터리를 네트워크에 공개하여(export)  네트워크를 통해 처리

*/

 

 

 

 

오브젝트 스토리지 (Object storage)

 

 

오브젝트라는 개별 데이터 단위로 데이터를 저장한다.

오브젝트는 사진,비디오,오디오 뿐만 아니라 기계 학습, 센서 데이터 등 모든 데이터를 포괄한다.

 

-단순한 구조로 읽기 속도가 빠르고 확장성이 좋으며 비용이 저렴하나

파일을 변경 시 새로운 Object로 인식하며 기존의 파일은 지워지고 새로운 파일이 대체된다.

데이터를 조금이라도 수정할 경우 데이터를 엎어버려 Read/Write 작업이 빈번하면 오래 걸린다.

 

 

S3 (Simple Storage Service)

S3

 

- 확장성이 뛰어나고 어떤 양의 데이터도 저장

- 높은 내구성과 99.99% 가용성 제공

- S3의 객체는 고유 식별자(key)와 연결되어있고 어디서나 HTTP 접속을 통해 액세스 가능

- 버전 관리를 통한 데이터 보호 기능과 하이브리드 구성을 통한 데이터 백업 및 복원 기능 제공

- 비용이 EBS,EFS 보다 저렴하다.

- 목적에 따라 다양한 스토리지 클래스를 제공하고 객체 암호화 기능을 설정할 수 있다.

- 버킷이란 S3의 저장공간을 구분하는 단위를 사용하고 버킷정책을 사용하여 권한 관리할수 있다.

- S3에 저장된 파일은 고유한 URL을 가지고 있고 이를 통해 쉽게 접근할 수 있다

 

 

EBS vs EFS vs S3

 

  EBS (Block) EFS (File) S3 (Object)
작업별 대기 시간 가장 낮음, 일관됨
(S3 및 EFS보다 빠름)
낮음, 일관됨
(S3보다 빠르고 EBS보다 느림)
낮음, 여러 요청 타입 처리
CloudFront와 통합
(EBS 및 EFS보다 느림)
파일 수정 파일 수정 가능 파일 수정 가능 파일 수정 불가능 (덮어쓰기함)
가용성 / 내구성 단일 AZ에 중복 저장 여러 AZ에 중복 저장 여러 AZ에 중복 저장
엑세스 하나의 AZ에 속한 하나의 EC2 인스턴스  1개~수천개의 EC2인스턴스 /
on-premise 서버 / 
여러 AZ에서 동시 접근
웹을 통한 수백만 개의 연결
사용 케이스 - 데이터베이스
- OS 디스크
- 고성능 애플리케이션( 고성능 디스크 작업 )
- 세션 데이터, 어플리케이션 설정 파일
- 파일 서버
- 컨테이너 스토리지(ECS,kubernetes에서 파일 공유)
- 정적 컨텐츠(html,css,js,image)
- 백업 및 아카이빙
- 빅데이터 분석
-멀티미디어 컨텐츠
(video,image,audio,streaming)

 

 

-EBS: 고성능, 저지연 작업이 필요한 경우.

데이터베이스 스토리지, OS 디스크, 애플리케이션 저장소.

-EFS: 여러 인스턴스에서 동시 파일 접근이 필요한 경우.

파일 서버, 컨테이너 환경, 로그 분석.

-S3: 대규모 데이터를 저장하고, 비용 효율성과 글로벌 접근성이 중요한 경우.

백업, 데이터 아카이빙, 정적 웹 콘텐츠 호스팅.

 

-EFS와 S3 둘 다 다수의 인스턴스에서 접근 가능하지만

 

 

=> EFS 의 경우는 동일한 파일 시스템을 공유하며 네트워크를 통해 실시간으로 동일한 파일을 읽고 쓸 수 있다.

따라서 변경 가능한 데이터를 여러 서버가 공유할 때 유용하다.

 

=> S3의 경우는 파일이 아닌 객체 형태로 저장하며 파일시스템처럼 공유하는 방식이 아니라 API를 호출하거나 파일을 개별적으로 다운로드하여 공유할 수 있다.

따라서  변경되지 않는 컨텐츠를 보관하고 배포할 때 주로 사용한다.

 

 

 

참고

 

https://www.dknyou.com/blog/?bmode=view&idx=10474168

https://inpa.tistory.com/entry/AWS-%F0%9F%93%9A-S3-EBS-EFS-%EC%8A%A4%ED%86%A0%EB%A6%AC%EC%A7%80-%EC%84%9C%EB%B9%84%EC%8A%A4-%EB%B9%84%EA%B5%90

https://www.smileshark.kr/post/amazon-s3-efs-ebs-which-aws-storage-service-to-use

https://bosungtea9416.tistory.com/entry/AWS-EBS-S3-EFS-%EC%B0%A8%EC%9D%B4-Block-Level-Storage-Object-Storage

'Cloud > AWS' 카테고리의 다른 글

AWS KMS  (3) 2024.12.13
AWS WAF (Web Application Firewall)  (0) 2024.12.05
VPC Endpoints & VPC  (0) 2024.11.23
Autoscaling Group & ALB  (0) 2024.11.20
IAM User가 아닌 EC2에 역할 부여  (0) 2024.11.20