[AWS] AWS 스토리지 서비스 - S3 ( Simple Storage Service )
업데이트:
✅ AWS 스토리지 종류
📌 스토리지 종류
AWS에서 제공하는 스토리지 서비스는 5가지이다.
- Amazon EBS ( Elastic Block Storage )
- Amazon EFS ( Elastic File System )
- Amazon S3 ( Simple Storage Service )
- Amazon S3 Galcier
- AWS Storage Gateway
오늘은 이런 스토리지 서비스중 가장 많이 쓰이는 S3에 대해 알아보도록 하겠다.
그전에 전통적 스토리지에 대한 종류와 특징을 간단하게 알아보고 넘어가자.
📌 전통적 스토리지
-
블록 스토리지 ( Block Storage )
데이터를 블록 단위로 관리하는 스토리지이다. 데이터베이스처럼 빈번히 갱신되거나, 고속의 액세스가 필요할 때 사용된다. 일부 파일 내용 변경시에 해당 block만 갱신이 가능하다. 쉽게 예를 들면 엑셀에서 블록 하나 수정하는것과 유사하다. 계층 구조를 가지고, 계층구조는
/doc/storage/a.txt
이런식으로 구조를 갖는것을 말한다. AWS 스토리지 서비스 중에서는 EBS(Elastic Block Storage), 인스턴스 스토어가 해당한다.
-
파일 스토리지 ( File Storage )
블록 스토리지 위에 파일 시스템을 구성해서 파일 단위로 관리하는 스토리지이다. 복수의 클라이언트로 부터 네트워크를 경유하여 파일에 접근 하거나, 데이터를 일괄 저장하는 용도로 많이 쓰인다. 파일 단위로 관리하기 때문에 일부 파일 내용 변경시 전체 파일이 갱신된다. 예를 들면 구글드라이브에 올라가져 있는 파일을 일부 수정하면 파일 자체를 다시 업로드 해야하는 것과 유사하다. 블록 스토리지와 마찬가지로 계층구조를 가진다. AWS 스토리지 서비스 중에서는 EFS ( Elastic File Storage ), FSx가 해당한다.
-
오브젝트 스토리지 ( Object Storage )
파일에 임의의 메타데이터를 추가하여 오브젝트 단위로 관리하는 스토리지이다. HTTP 프로토콜을 사용하여 데이터를 추가, 삭제할 수 있다. 갱신 빈도가 적은 데이터나 대용량 멀티미디어 컨텐츠를 보관하는 용도로 사용된다. 앞선 두 스토리지와는 다르게 계층 구조가 없는 flat한 구조를 가진다.
doc/storage/a.txt
,doc/storage/b.txt
처럼 폴더를 만들어 보관할 수는 있지만, 실제 데이터는a.txt
와b.txt
가 같이 존재하지 않고 폴더정보는 그저 파일의 접두어일 뿐, 단일 저장소에 보관된다. 기존의 계층구조는 메타데이터가 굉장히 많이 쌓여 효율적이지 못하므로 이를 최소화 하기위해 이런 구조를 가진다. AWS 스토리지 서비스 중에서는 S3가 해당한다.
✅ Amazon S3 ( Simple Storage Service )
매우 우수한 내구성을 가진 용량 무제한의 오브젝트 스토리지 서비스이다. 오브젝트 스토리지 이기때문에 디렉토리 구조를 가지지 않는 플랫한 구성과, 유저가 독자적으로 메타 데이터를 부여할 수 있다.
S3의 각 오브젝트에는 REST나 SOAP같은 HTTP API를 통한 액세스가 가능하다 ( 최신 Amazon S3 기능은 SOAP를 더이상 지원하지 않는다 ). 유연성이 매우 강한 서비스이기 때문에 아이디어만 있다면 수만가지의 방법으로 사용할 수 있고, AWS 중에서도 매우 중요한 서비스로서의 위치를 가지고 있다. S3가 포함되지 않은 AWS 서비스를 찾아보기가 힘들정도로 많이 사용된다.
- 데이터 백업
- 정적 웹 컨텐츠와 미디어 저장 및 배포
- 전체 정적 웹 사이트 호스팅 ( HTML, Image, 동영상 등 )
- 간략한 Key-Value 형식의 데이터 베이스
- Auto Scaling 구성의 EC2 인스턴스나 컨테이너로 부터의 로그 전송
- 연산 및 대규모 분석용 데이터 스토어
📌 Amazon S3의 구성요소
-
버킷 : 오브젝트를 저장하기 위한 영역이다. 버킷이름은 고유해야 한다. S3 버킷에 policy(정책)을 추가하여 다른 AWS 계정 또는 사용자에게 액세스하도록 허용할 수 있다.
-
오브젝트 : 버킷내에 저장될 데이터를 말한다. 각 오브젝트는 키가 부여되고, [버킷명 + 키명 + 버전 ID ]로 유니크한 URL이 만들어 진다. 버킷내에 저장되는 오브젝트 수는 제한이 없지만, 하나의 오브젝트 사이즈는 최대 5TB이다.
-
메타 데이터 : S3는 오브젝트 스토리지이므로 메타 데이터를 가진다. 오브젝트를 관리하기 위한 정보이고, 오브젝트 작성 일시나 사이즈 등의 메타 데이터 뿐만 아니라 유저가 정의한 메타 데이터를 가질 수도 있다.
📌 Amazon S3의 스토리지 클래스
데이터의 복원력, 액세스, 및 비용에 따라 선택할 수 있는 다양한 스토리지 클래스가 있다. 종류에 대해 간단하게 알아보자.
-
Amazon S3 Standard 가장 범용적인 클래스. 즉시 액세스 할 수 있어야 하고, 자주 요청되는 데이터를 다룬다.
-
Amazon S3 Standard - Infrequent Access 표준 데이터와 마찬가지로 즉시 액세스 할 수 있어야 하지만 자주 요청되지 않을 것으로 예상되는 데이터를 저장한다. 저장된 GB당 비용은 저렴하지만, HTTP API 요청당 비용이 높다.
-
Amazon S3 One Zone - Infrequent Access 최소 3개의 AZ(가용영역)에 데이터를 저장하는 다른 스토리지 클래스와는 달리 단일 AZ에 데이터를 저장한다. 때문에 S3 Standard -IA 보다 20%정도 저렴하다.
-
Amazon S3 Glacier 거의 참조되지 않는 아카이브 목적의 데이터를 저장하는 스토리지 클래스이다. 오브젝트 신규 작성시에는 이 클래스를 사용할 수 없고, 이후에 라이프 사이클 관리 기능을 사용하여 S3 Glacier를 사용하는것이 가능하다. 이 클래스에 저장된 데이터에 엑세스 하는 경우 사전에 액세스 Request를 해둘 필요가 있고, 액세스를 가능하도록 하는데 수시간이 걸린다. 데이터를 불러오는데에는 몇분~수시간이 걸린다.
-
Amazon S3 - Intelligent - Tiering 성능에 대한 영향, 검색 요금 또는 운영 부담 없이 액세스 빈도에 따라 가장 비용 효율적인 액세스 티어로 데이터를 자동으로 이동하여 세분화된 객체 수준에서 스토리지 비용을 자동으로 절감해주는 최초의 클라우드 스토리지이다. S3 Intelligent-Tiering은 Frequent, Infrequent Access 및 Archive Instant Access 티어에서 자주 액세스하는 데이터, 자주 액세스하지 않는 데이터, 그리고 거의 액세스하지 않는 데이터에 대해 밀리초 단위의 대기 시간과 높은 처리량을 제공한다. 거의 모든 워크로드, 특히 데이터 레이크, 데이터 분석, 새로운 애플리케이션 및 사용자 생성 콘텐츠에 대한 기본 스토리지 클래스로 S3 Intelligent-Tiering을 사용할 수 있습니다.
-
Amazon S3 스토리지 클래스 분석 스토리지 액세스 패턴을 분석해 데이터를 적절한 스토리지 클래스로 옮길 시점을 알려준다. 예를 들면 자주 액세스 하지 않는 Standard 스토리지를 Standard-IA 스토리지 클래스로 옮길 시점을 알려준다. 단, Standard 스토리지와 Standard-IA 클래스에 대한 분석만 제공한다.
📌 Amazon S3의 수명 주기 관리
수명 주기 동안 객체가 비용 효율적으로 저장되도록 관리하기 위해 Amazon S3의 수명 주기를 구성한다. 크게 두 가지 유형의 작업으로 나뉜다.
-
전환 작업
객체가 다른 스토리지 클래스로 전환되는 시기를 정의한다. 예를 들어 생성 후 30일이 지난 객체는 S3 Standard-IA 스토리지 클래스로 전환하거나, 생성 후 1년이 지난 객체는 S3 Glacier Flexible Retrieval 스토리지 클래스로 전환하는 경우가 있다.
-
만료 작업
객체가 만료되는 시기를 정의한다. 만료 시기 이후에는 Amazon S3에서 자동으로 객체를 삭제한다.
공부하거나 프로젝트를 제작할 때 수명 주기 정책을 함께 사용해보면 좋을 것 같다.
댓글남기기