지금부터는 S3에 대해서 배워보도록 하겠습니다.
S3의 정식 명칭은 Simple Storage Service입니다.
이름에 S가 총 3번 반복되기 때문에 이름을 S3라고 지은 것이죠.
S3는 처음에 아마존에서 수많은 상품의 이미지를 저장하기 위해서 만들어졌다고 합니다.
그러면 잠시 AWS에서 제공하는 클라우드 스토리지에는 어떤 것들이 있는지 짚고 넘어가도록 하겠습니다.
먼저 우리가 배우고 있는 객체 스토리지인 S3가 있습니다.
그리고 파일 스토리지인 EFS가 있습니다.
EFS는 Elastics File System의 약자 입니다.
그리고 앞에서 배운 블록 스토리지인 EBS가 있습니다.
이렇게 AWS에서는 다양한 종류의 스토리지들을 제공한다고 보면 되고, 필요에 따라 적합한 유형의 스토리지를 선택해서 사용하면 됩니다.
그럼 S3의 특징을 한 번 알아보겠습니다.
S3는 객체 기반의 무제한 파일 저장 스토리지이며, URL을 통해 손쉽게 파일을 공유할 수 있습니다.
또한 99.999999999%의 내구성을 갖고 있어서 안전하게 파일을 저장할 수 있습니다.
그리고 요금은 사용한 만큼만 지불하며, GB 단위로 과금됩니다.
마지막으로 S3에서 굉장히 유용한 기능 중 하나인데, 바로 정적 웹사이트 호스팅 기능입니다.
이 기능을 사용하면 정적 웹사이트를 S3를 통해 호스팅 할 수 있습니다.
그리고 S3는 다른 AWS 서비스들과 쉽게 통합해서 사용할 수 있습니다.
그래서 위 그림처럼, DynamoDB, Lambda, Redshift, EMR, Data Pipeline, Kinesis 등 수많은 AWS의 서비스들과의 통합을 지원합니다.
S3는 주로 수정이 잘 일어나지 않는 최종 파일을 저장하는 용도로 사용합니다.
객체 스토리지의 특성상 파일의 일부분만 수정이 불가능하기 때문이죠.
그리고 S3는 빠른 속도로 Read/Write를 해야 하는 경우 부적합 합니다.
그래서 적합한 용도로는 이미지, 동영상, 음악, 문서 등의 미디어 파일을 보관하거나 로그파일을 보관하기에 적합합니다.
또한 다른 AWS 서비스의 데이터를 백업하는 등의 데이터 백업에도 적합하며, 정적 웹 호스팅을 위해서도 사용하기 좋습니다.
그럼 S3와 관련된 용어에 대해 한 번 알아볼까요?
먼저 Bucket이 있습니다.
Bucket은 우리 말로 양동이라는 뜻을 갖고 있죠.
위 그림의 오른쪽에 양동이 모양을 하고 있는 것이 바로 Bucket이며, Object를 담는 최상위 단위를 의미합니다.
그리고 Bucket의 이름과 개수에는 제한이 있습니다.
다음으로 Object는 Bucket에 담는 데이터의 단위를 의미합니다.
우리가 흔히 파일이라고 부르는 것이 S3에서는 객체라고 보면 됩니다.
위 그림에서 Bucket 안에 존재하는 것이 바로 객체입니다.
그리고 Metadata는 Object에 대한 여러가지 정보를 담고있는 데이터이며, Policy는 Bucket과 Object에 대한 접근을 통제하는 권한 정보를 의미합니다.
위 그림을 보면 Bucket과 Object에 각각 권한이 있는 것을 볼 수 있습니다.
그렇다면 S3는 어떻게 사용할까요?
지금부터 S3 사용 방법에 대해서 알아보도록 하겠습니다.
S3를 사용하기 위해서는 가장 먼저 Bucket을 생성해야 합니다.
그래야 데이터를 저장할 수 있기 때문이죠.
그리고 다음으로는 HTTP로 Bucket에 파일을 업로드 합니다.
이렇게 업로드 된 파일은 Object로 Bucket 내에 저장됩니다.
다음으로는 Object에 권한을 설정해야 합니다.
이 권한에 따라서 외부 서비스 및 사용자의 Object 접근 가능 여부가 달라지게 됩니다.
그리고 마지막으로 HTTP로 Bucket에서 파일을 다운로드 받아서 사용하면 됩니다.
이러한 일련의 과정이 S3를 사용하는 방법이라고 보면 됩니다.
다음은 S3의 스토리지 클래스에 대해 알아보겠습니다.
스토리지 클래스는 스토리지를 저장하는 형태를 의미한다고 보면 됩니다.
그리고 어떤 스토리지 클래스를 사용하는지에 따라서 요금이 크게 달라지게 됩니다.
위 그림에 나와 있는 것은 S3의 다양한 스토리지 클래스입니다.
이 중에서 주요 스토리지 클래스만 몇 개를 뽑아서 자세히 살펴보겠습니다.
먼저 자주 액세스하는 객체를 위한 스토리지 클래스로, 가장 기본인 Standard 클래스가 있습니다.
Standard 클래스는 최소 3개의 가용 영역(AZ)에 데이터를 저장하며, 자주 액세스하는 데이터를 위해 높은 내구성, 가용성 및 성능을 갖춘 객체 스토리지를 제공합니다.
그리고 자주 액세스하지 않는 객체를 위한 스토리지 클래스로 Standard-IA와 OneZone-IA가 있습니다.
여기서 IA는 Infrequent Access의 약자로, 자주 접근하지 않는다는 의미를 갖고 있습니다.
먼저 Standard-IA는 자주 액세스하지 않지만 필요할 때 빠르게 액세스해야 하는 데이터에 적합합니다.
Standard-IA는 Standard 클래스와 마찬가지로, 최소 3개의 가용 영역에 객체를 중복으로 저장함으로써 고가용성 및 복원력을 갖고 있습니다.
반대로 One Zone-IA는 이름 그대로 하나의 Availability Zone. 즉, 단일 가용 영역에만 데이터를 저장합니다.
그렇기 때문에 Standard-IA 비해 요금이 약 20% 저렴하지만 복원력이 없다는 특징이 있습니다.
그리고 추가로 S3에는 Glacier라는 스토리지 클래스가 있습니다.
Glacier라는 단어는 우리 말로 빙하라는 뜻을 갖고 있습니다.
그래서 Glacier는 자주 접근하지 않는 데이터를 빙하에 보관하는 용도의 스토리지 클래스라고 이해하면 됩니다.
Glacier는 데이터 아카이빙을 위한 백업 스토리지이며 무제한 확장성을 제공합니다.
또한 99.999999999%의 데이터 내구성을 제공하도록 설계되었습니다.
Glacier는 주로 백업 및 아카이빙 용도의 Cold 데이터를 저장하는 용도로 사용하며, 매우 낮은 비용으로 데이터를 저장할 수 있습니다.
그렇다면 이러한 다양한 스토리지 클래스를 활용해서,
S3의 객체 라이프사이클을 어떻게 관리하면 좋을까요?
위 그림은 S3 객체의 라이프사이클을 관리하는 예시를 나타낸 것입니다.
먼저 처음에는 객체를 Standard 클래스로 저장합니다.
최근에 업로드 된 데이터는 자주 접근할 확률이 높기 때문이죠.
그리고 30일 경과한 이후에 데이터에 자주 접근하지 않게 되면, Standard-IA로 스토리지 클래스를 변경합니다.
그렇게 되면 GB당 요금이 Standard 클래스에 비해 약 45% 저렴해집니다.
그리고 이후 또 30일 지나서 데이터를 아카이빙 하기 위한 목적으로 Glacier 클래스로 변경합니다.
그렇게 되면 GB당 요금이 Standard-IA에 비해 약 67% 저렴해지며, Standard 클래스에 비해서는 약 82%나 저렴해집니다.
굉장히 가격이 많이 내려가는 것이죠.
이처럼 객체의 라이프사이클에 따라 스토리지 클래스를 변경해줌으로써 비용 효율적으로 객체들을 보관할 수 있습니다.
위 링크는 AWS에서 제작한 S3 소개 영상 링크입니다.
관심있는 분들은 한 번씩 영상을 보기 바랍니다.
마지막 업데이트: 2023년 10월 27일 00시 00분
이 문서의 저작권은 이인제(소플)에 있습니다. 무단 전재와 무단 복제를 금합니다.