Amazon Simple Storage Service (Amazon S3)

2021. 8. 26. 01:38카공리스트/AWS Cloud Practitioner Essentials

본 글의 내용은 AWS Cloud Practitioner Essentials (Korean)에서 발췌함

 

객체 스토리지

 

객체 스토리지에서 각 객체는 데이터, 메타데이터, 키로 구성된다.

 

데이터는 이미지, 동영상, 텍스트 문서 or 기타 유형의 파일이다.

메타데이터에는 데이터의 내용, 사용 방법, 객체 크기 등에 대한 정보가 포함되어 있다.

객체의 키는 고유한 식별자이다.

 

 

※ 블록 스토리지에서 파일을 수정하면 변경된 부분만 업데이트가 되는 반면, 객체 스토리지에서 파일을 수정하면 전체 개체가 업데이트 된다.

 

 

Amazon Simple Storage Service (Amazon S3)

 

Amazon Simple Storage Service (Amazon S3)는 객체 수준 스토리지를 제공하는 서비스다.

Amazon S3는 데이터를 버킷에 객체로 저장한다.

 

※ 데이터는 객체로 저장되지만 파일 디렉터리에 저장하지 않고 버킷이라는 곳에 저장된다. 

 

Amazon S3에는 이미지, 동영상, 텍스트 파일 등 모든 유형의 파일을 업로드할 수 있다.

예를 들어 S3를 사용하여 백업 파일, 웹 사이트용 미디어 파일 or 보관된 문서를 저장할 수 있다.

 

S3는 저장 공간을 무제한으로 제공한다.

S3에 저장할 수 있는 객체의 최대 파일 크기는 5TB이다.

 

S3에 파일을 업로드할 때 권한을 설정하여 파일에 대한 표시 여부 및 액세스를 제어할 수 있다.

S3 버전 관리 기능을 사용하여 시간 경과에 따른 객체 변경 사항을 추적할 수 있다.

 

 

Amazon S3 스토리지 클래스

 

Amazon S3에서는 사용한 만큼만 비용을 지불한다.

비즈니스 및 비용 요구 사항에 맞춰 다양한 스토리지 클래스 중에서 선택할 수 있다.

S3 스토리지 클래스를 선택할 때 다음 두 가지 요소를 고려해야 한다.

 

* 데이터를 검색할 빈도

* 필요한 데이터 가용성

 

S3 스토리지 클래스는 다음과 같이 있다.

 


S3 Standard

* 자주 액세스하는 데이터용으로 설계

* 최소 3개의 가용 영역에 데이터를 저장

 

S3 Standard는 객체에 대한 고가용성을 제공한다.

따라서 웹 사이트, 콘텐츠 배포, 데이터 분석 등 광범위한 사용 사례에 적합하다.

S3 Standard는 자주 액세스하지 않는 데이터 및 보관 스토리지를 위한 다른 스토리지 클래스보다 비용이 높다. 

 

내구성이 99.999999999%로 1년 후 객체가 온전히 유지도리 확률이 굉장히 높다.

나아가 AWS가 별개의 스토리지 시설 두 곳에서 발생하는 동시 데이터 손실을 감당할 수 있는 방식으로 저장된다.

데이터가 3개 이상의 시설에 저장되기 때문이다.

따라서  여러 복사본이 여러 위치에 존재할 수 있다.

 

S3를 사용하는 또 다른 유용한 방법은 정적 웹사이트 호스팅이다.

정적 웹사이트는 HTML 파일 모음이며 각 파일은 실제 사이트의 물리적 페이지와 비슷하다.

 

모든 HTML, 정적 웹 자산 등을 버킷에 업로드하고 확인란을 선택하기만 하면 정적 웹사이트로 호스팅할 수 있다.

그 다음 버킷의 URL을 입력하면 인스턴트 웹사이트가 탄생한다.

 

정적이라고 표현하지만 웹사이트에 애니메이션과 움직이는 요소를 추가할 수 있다.

 


S3 Standard-Infrequent Access (S3 Standard-IA)

* 자주 액세스하지 않는 데이터에 이상적

* S3 Standard와 비슷하지만 스토리지 가격은 더 저렴하고 검색 가격은 더 높음

 

S3 Standard-IA는 자주 액세스하지 않지만 필요에 따라 고가용성이 요구되는 데이터에 이상적이다.

S3 Standard 및 S3 Standard-IA는 모두 최소 3개의 가용 영역에 데이터를 저장한다.

 

S3 Standard-IA는 S3 Standard와 동일한 수준의 가용성을 제공하지만 스토리지 가격은 더 저렴하고 검색 가격은 더 높다.

 

액세스 빈도는 낮지만 필요할 때 빠르게 액세스해야 하는 데이터에 사용한다.

따라서 백업, 재해 복구 파일 or 장기 보관이 필요한 모든 객체에 안성맞춤이다.


S3 One Zone-Infrequent Access (S3 One Zone-IA)

* 단일 가용 영역에 데이터를 저장

* S3 Standard-IA보다 낮은 스토리지 가격

 

최소 3개의 가용 영역에 데이터를 저장하는 S3 Standard 및 S3 Standard-IA와 달리, S3 One Zone-IA는 단일 가용 영역에 데이터를 저장한다.

따라서 다음과 같은 조건이 적용되는 경우 고려할 수 있는 훌륭한 스토리지 클래스이다.

 

* 스토리지 비용을 절감하려는 경우

* 가용 영역 장애가 발생할 경우 데이터를 손쉽게 재현할 수 있는 경우

 


S3 Intelligent-Tiering

* 액세스 패턴을 알 수 없거나 자주 변화하는 데이터에 이상적

* 객체당 소량의 월별 모니터링 및 자동화 요금을 부과

 

S3 Intelligent-Tiering 스토리지 클래스에서는 Amazon S3가 객체의 액세스 패턴을 모니터링한다.

 

사용자가 30일 연속 객체에 액세스하지 않으면 Amazon S3는 자동으로 해당 객체를 자주 사용하지 않는 액세스 계측인 S3 Standard-IA로 이동한다.

 

사용자가 자주 사용하지 않는 액세스 계층에 저장된 객체에 액세스하면 Amazon S3는 자동으로 해당 객체를 자주 사용하는 액세스 계층인 S3 Standard로 이동한다.

 


S3 Glacier

* 데이터 보관용으로 설계된 저비용 스토리지

* 객체를 몇 분에서 몇 시간 이내에 검색

 

S3 Glacier는 데이터 보관에 이상적인 저비용 스토리지 클래스이다.

예를 들어 이 스토리지 클래스를 사용하여 보관된 고객 레코드나 이전 사진 or 비디오 파일을 저장할 수 있다.

 

데이터를 수년간 저장해야 하지만 그리 자주 검색하지 않는 경우에 사용한다.

 

Glacier를 사용하려면 데이터를 Glacier로 옮기거나 저장소를 만든 다음 아카이브로 채우면 된다.

유지 기간 같은 데이터 유지 관련 규정 준수 요구 사항이 있다면 S3 Glacier 저장소 잠금 정책을 적용하여 저장소를 잠글 수 있다.

 

저장소 잠금 정책에 한 번 쓰기/여러 번 읽기, 즉 WORM 같은 제어를 지정한 다음 향후 편집에서 정책을 잠글 수도 있다.

잠긴 정책은 변경할 수 없다.

 

또한 몇 분에서 몇 시간에 이르는 세 가지 검색 옵션이 존재하며 Glacier에 바로 업로드하거나 S3 수명 주기 정책을 사용할 수도 있다.

 


S3 Glacier Deep Archive

* 보관에 이상적인 가장 저렴한 객체 스토리지 클래스

* 객체를 12시간 이내에 검색

 

Amazon S3 Glacier와 Amazon S3 Glacier Deep Archive 간에 결정할 때 보관된 객체를 얼마나 빨리 검색해야 하는지를 고려해야 한다.

 

S3 Glacier 스토리지 클래스에 저장된 객체는 몇 분에서 몇 시간 이내에 검색할 수 있다.

이에 비해 S3 Glacier Deep Archive 스토리지 클래스에 저장된 객체는 12시간 이내에 검색할 수 있다.

 


 

이러한 스토리지들의 수명 주기 정책을 살펴볼 필요가 있다.

이 정책으로 인해 데이터는 여러 계층(클래스)을 자동으로 이동하게 된다.

 

예를 들어 S3 Standard에서 객체를 90일 동안  유지해야 하며 다음 30일 동안은 S3-IA로 옮겨야 한다고 가정하자.

 

총 120일이 지나면 객체를 S3 Glacier로 옮겨야 한다.

수명 주기 정책을 사용하면 애플리케이션 코드를 변경하지 않고도 이러한 구성을 만들어 이동 작업을 자동으로 수행할 수 있다.

 

사용자의 부담을 덜어주는 관리형 AWS 서비스이며, 따라서 비즈니스 요구 사항에 더욱 집중할 수 있다.

 

 

Amazon EBS와 Amazon S3 비교

 

Amazon Elastic Block Storage (EBS)의 특징

* 블록 스토리지로 최대 16TiB의 크기를 갖는다.

* Amazon EC2 인스턴스가 종료되어도 그대로 유지된다.

* SSD와 HDD 모두 재공한다.

 

Amazon Simple Storage Service (S3)의 특징

* 리전 객체 스토리지로 무한대의 스토리지를 제공한다.

* 개별 객체는 크기가 5TB로 한 번 쓰기/여러번 읽기 (WORM)에 특화되어 있다.

* 99.999999999%의 내구성을 자랑한다.

 

 

 

이 두 가지 스토리지 클래스가 어떤 케이스에서 유리한지 살펴보자.

 

Case 1. 사진 분석 웹사이트 운영

사진 분석 웹사이트를 운영한다고 가정하자.

사용자가 본인 사진을 업로드하면 애플리케이션이 비슷한 동물을 찾아주는 사이트다.

동물 사진 수백만 장을 인덱싱하고 이 사진을 사용자 수천 명이 동시에 볼 수 있어야 한다.

 

이는 S3에 완벽한 사용 사례이다.

S3는 이미 웹을 지원한다.

 

모든 객체에 URL이 있으며 이미지를 보거나 관리할 수 있는 사람에 대한 액세스 권한을 제어할 수 있다.

리전별로 분산되어 있으며 덕분에 99.999999999%의 내구성을 제공한다.

 

그래서 백업 전략을 고민할 필요가 없다.

S3는 백업 전략 그 자체이다.

 

게다가 EBS에서 동일한 스토리지 로드를 실행하는데 비해 비용 절감 효과가 상당하다.

서버리스라는 추가 이점 때문에 EC2 인스턴스가 필요하지도 않다.

 

해당 케이스에는 S3가 최적의 선택이다.

 

 

Case 2. 오류를 수정해야 하는 80GB의 동영상 파일

오류를 수정해야 하는 80GB의 동영상 파일이 있다고 하자.

최고의 스토리지 클래스를 파악하려면 객체 스토리지와 블록 스토리지의 차이를 알아야 한다.

 

객체 스토리지는 모든 파일을 완성된 개별 객체로 취급한다.

전체 객체로서 업로드되고 사용되는 문서, 이미지와 동영상에 적합하다.

 

하지만 객체가 변경될 때마다 전체 파일을 다시 업로드해야 한다.

증분 업데이트가 지원되지 않는다.

 

블록 스토리지는 이러한 파일을 작은 구성 요소, 즉 블록으로 나눈다.

80GB 파일의 경우 영상의 한 장면을 편집하고 변경 사항을 저장하면 엔진은 해당 비트가 있는 블록만 업데이트한다.

 

EBS, 즉 Elastic Block Storage로 작은 편집을 다수 수행하는 것이 완벽한 사용 사례이다.

S3를 사용한다면 벼경 사항을 저장할 때마다 시스템에서 80GB 전체를 업로드해야 한다.

 

해당 케이스에는 EBS가 최적의 선택이다.

 

 

비교 요약

완성 객체를 사용하거나 변경 횟수가 적다면 S3를 사용하자.

복잡한 읽기, 쓰기, 변경 기능을 수행한다면 EBS를 사용하자.