1. AWS의 스토리지 서비스들
AWS의 스토리지 서비스에서는 S3, EBS, EFS, FSx 와 같은 객체, 파일 및 블록 스토리지 서비스들이 존재하며, 사용 목적과 사례에 따라서 여러 가지 요소(스토리지 유형, 접근 패턴, 성능 요구 사항 및 비용 구조)를 고려해서 선택해야 합니다.
서비스 | 유형 | 최고의 사용 사례 | 비용 효율성 | 성능 |
---|---|---|---|---|
S3 | 객체 스토리지 | 백업, 아카이브, 미디어 스토리지 | 높음(Glacier 포함) | 다양함 (티어 별) |
EFS | 파일 스토리지(NFS) | 웹 앱, 분석, 공유 파일 저장소 | 중간 | 높은 확장성, 공유 |
FSx | 관리 파일 시스템[NetApp ONTAP, OpenZFS, Windows File Server, Lustre] | Windows 기반 앱, HPC 워크로드 | 중간-높음 | 특정 앱의 경우 높음 |
EBS | 블록 스토리지 | 데이터베이스, 지연 시간이 짧은 앱 | 중간 | 낮은 대기 시간, 높은 IOPS |
여기서 가장 범용적으로 사용되는 서비스는 S3 서비스라고 생각합니다.
오늘은 이 S3 서비스를 보다 비용효율적으로 사용하는 방법에 대해서 안내드리려고 합니다.
.
2. Amazon S3 서비스 간단 소개
Amazon Simple Storage Service(S3)는 AWS에서 제공하는 확장 가능한 객체 스토리지 서비스입니다. 언제든지 원하는 양의 데이터를 저장하고 검색할 수 있도록 설계되어 백업, 데이터 레이크, 콘텐츠 배포, 미디어 스토리지 등 다양한 사용 사례에 이상적입니다. S3는 여러 가용 영역에 걸쳐 데이터를 복제하여 높은 내구성(99.999999999%)을 제공합니다. 사용자는 API를 통해 S3에 액세스할 수 있으므로 다양한 애플리케이션 및 워크로드에 통합할 수 있는 유연성이 뛰어납니다.
Amazon S3는 데이터를 버킷(Bucket) 내에 객체(Object)로 저장합니다. 객체는 데이터 자체, 고유 식별자(키:Key), 객체를 설명하는 메타데이터로 구성됩니다.
.
3. S3 스토리지 클래스의 이해
S3 서비스의 사용 비용은 스토리지 클래스, 저장된 데이터 양, 데이터 검색, 요청, 데이터 전송을 포함한 여러 요소에 따라 달라집니다. 거기서도 가장 기본적인 비용은 데이터 저장 비용이라고 할 수 있으며, 이는 저장된 객체에 대한 스토리지 클래스에 따라 달라집니다.
S3는 다양한 데이터 액세스 패턴과 보존 요구 사항에 따라 비용과 성능을 최적화하는 데 도움이 되는 여러 가지 스토리지 클래스를 제공합니다. 각 클래스에 대한 간략한 개요는 다음과 같습니다.
S3 Intelligent-Tiering | S3 Standard | S3 Standard-IA (Infrequent Access) | S3 Glacier Instant Retrieval | |
특징 | 액세스 패턴에 따라 자동으로 데이터 액세스 계층을 변경함 | 자주 액세스 하는 데이터 보관에 사용 | 자주 액세스하지 않는 데이터 보관에 사용 | 거의 액세스하지 않는 데이터 보관에 사용 |
응답시간 | 밀리초 | 밀리초 | 밀리초 | 밀리초 |
내구성 | 99.999999999%(9 11개) | |||
데이터 백업 | 최소 3개의 가용 영역(AZ)에 데이터를 중복 저장 | |||
최소 스토리지 기간 요금 | 해당 사항 없음 | 해당 사항 없음 | 30일 | 90일 |
검색 요금* | 해당 사항 없음 | 해당 사항 없음 | 검색한 GB당 $0.01 | 검색한 GB당 $0.03 |
수명 주기 전환 | 예 | 예 | 예 | 예 |
저장 요금 (GiB/월) | 후술 | $0.025 | $0.0138 | $0.005 |
저장 요금 (TiB/월) | 후술 | $25.6 | $14.1312 | $5.12 |
※ 본래 S3의 Glacier 스토리지 클래스로, Glacier Flexible Retrieval 이나, Glacier Deep Archive 가 있습니다. 이러한 스토리지 클래스는 GB 당 저장 요금이 훨씬 더 저렴해지나 실시간 데이터 접근이 불가능해지며 각각 최소 5, 12시간의 객체 복구 시간을 필요로 합니다. 해당 스토리지 클래스는 단순하게 비교 할 수 없으므로, 비교 대상에서 배제했습니다.
※ 저장 요금은 서울 리전(ap-northeast-2) 기준입니다.
※ 검색 요금은 S3에서 데이터를 검색할 때 발생하는 요금입니다. 일반적으로 데이터가 스토리지에서 다운로드될 때 적용됩니다. 이 항목은 다운로드한 데이터의 양에 따라 요금이 부과됩니다.
스토리지 클래스 S3 Standard, S3 Intelligent-Tiering 는 검색 요금(객체 접근 & 다운로드 비용)이 없지만, S3 Standard-IA (Infrequent Access), S3 Glacier Instant Retrieval 클래스는 검색 요금이 있습니다.
※ 만약 AWS 환경 외부로 데이터를 다운로드할 때는 “데이터 전송 요금(Region-DataTransfer-Out-Bytes)”이 추가로 발생할 수 있습니다.
※ 이 밖에도 객체 자체에 대해서 ‘PUT, COPY, POST, LIST 요청’, ‘GET, SELECT 및 기타 모든 요청’과 같은 API 요청을 할 경우 1000건당 비용이 발생하게 되는데, 이 경우는 반대로 스토리지 클래스 S3 Standard, S3 Intelligent-Tiering 가 가장 저렴하며, S3 Standard-Infrequent Access, S3 Glacier Instant Retrieval로 갈 수록 비용이 더 증가하게 됩니다. 따라서 GB 당 저장 요금이 저렴하다고 무조건 ‘S3 Glacier Instant Retrieval’를 사용하면 안되며, 객체의 사용 & 접근 패턴에 따른 적절한 스토리지 클래스를 선정하는 것이 중요합니다.
.
4. S3 비용 절감 기능 비교
S3 지능형 계층화(Intelligent Tiering), S3 수명 주기 규칙(S3 Lifecycle Rule)은 S3 버킷 상에서 비용효율적으로 객체를 보관하기 위한 기능입니다.
두 기능을 표로 정리하면 아래와 같습니다.
기능 | S3 지능형 계층화 (Intelligent Tiering) | S3 수명 주기 규칙 (S3 Lifecycle Rule) |
개요 | S3 객체에서 선택 가능한 스토리지클래스 중 하나로, 데이터 접근 패턴을 모니터링하여 자동으로 파일의 티어(클래스)를 변경 하는 서비스 | S3 버킷에 적용되는 객체에 대한 스토리지클래스의 수명주기에 대한 관리 규칙 |
목적 | 액세스 패턴에 따라 액세스 계층 간에 데이터를 이동하여 비용을 자동으로 최적화합니다. | 사용자 정의 규칙 및 기준에 따라 전환 및 만료를 자동화합니다. |
자동화 | 완전 자동화; 계층 전환에 수동 개입이 필요하지 않습니다. | 전환 및 만료에 대한 규칙과 정책을 수동으로 설정해야 합니다. |
비용 구조 | 스토리지 비용 외에 소액의 모니터링 및 자동화 비용이 포함됩니다. | 추가 모니터링 비용은 없습니다. 비용은 저장 및 검색을 기준으로 합니다. |
액세스 패턴 | 예측할 수 없거나 변화하는 액세스 패턴에 가장 적합합니다. | 예측 가능한 액세스 패턴과 특정 수명주기 관리 요구 사항에 적합합니다. |
전환 계층 | 자주 액세스하는 계층(Frequent Access:FA)과 자주 액세스하지 않는 계층들(Infrequent Access:IA, Archive Instant Access:AIA) 간에 데이터를 자동으로 이동합니다. | Standard, IA, One Zone-IA, Glacier 등을 포함하여 지정된 모든 스토리지 클래스로의 전환을 허용합니다. |
전환 추가 설명 | – 30일, 90일 연속으로 접근하지 않으면 각각 IA, AIA 타입으로 전환됩니다. – 한 번이라도 접근하면 FA 타입으로 다시 이동하며 타이머가 재설정됩니다. – 128 KB보다 작은 객체의 경우 자동 전환되지 않고 FA 타입으로 유지됩니다. | – 원하는 기간 경과 후에 특정 스토리지 클래스로 전환됩니다. – 스토리지 클래스 간 전환 작업은 폭포형(Waterfall) 모델을 지원합니다. Ex. 지능형 계층화 → GIR 변환 O 지능형 계층화 → Standard 변환 X |
전환 기준 | 객체의 마지막 접근시간(AccessTime) | 객체의 마지막 변경시간(Modification Time) (+ 원하면, 접두사, 태그, 크기도 지정 가능) |
비용 효율성 | 액세스 패턴이 가변적인 데이터의 경우 더 비용 효율적일 수 있지만 지속적으로 액세스하는 데이터의 경우 비용이 더 높을 수 있습니다. | 예측 가능한 액세스 패턴과 명확한 전환 규칙을 갖춘 데이터에 대해 잠재적으로 더 비용 효율적입니다. |
관리 복잡성 | 낮음; 최소한의 구성이 필요합니다. | 더 높음; 수명주기 정책과 규칙을 설정하고 관리해야 합니다. |
검색 비용 | 자주 액세스하는 계층에 대한 추가 검색 비용은 없습니다. | 스토리지 클래스에 따라 다릅니다. 일부 계층에는 검색 수수료가 있습니다(예: Glacier). |
유연성 | 특정 전환에 대한 통제력이 떨어집니다. 광범위한 액세스 패턴을 자동으로 처리하도록 설계되었습니다. | 높은 유연성; 사용자 정의 규칙을 기반으로 전환 및 만료를 정밀하게 제어할 수 있습니다. |
이상적인 사용 사례 | 자동 비용 최적화가 유용한 예측 불가능하거나 가변적인 액세스 패턴이 있는 데이터입니다. | 예측 가능한 액세스 패턴, 장기 보관 요구 사항, 규정 준수 요구 사항이 있는 데이터입니다. |
구현의 복잡성 | 낮음; 쉽게 활성화하고 사용할 수 있습니다. | 보통에서 높음; 수명주기 규칙을 만들고 유지하는 작업이 포함됩니다. |
기능 요약
S3 Intelligent-Tiering은 액세스 패턴을 예측할 수 없거나 자주 변경되는 시나리오에 가장 적합합니다. 수동 개입 없이 액세스 패턴에 따라 스토리지 계층을 자동으로 조정하므로 액세스 요구 사항이 불확실하거나 변동하는 데이터 세트에 이상적입니다. 이는 지속적인 최적화가 필요하고 수동으로 전환을 관리하는 복잡성을 피하려는 경우에 특히 유용합니다.
반면에 S3 수명 주기 정책은 예측 가능하거나 정적 액세스 패턴 및 데이터 수명이 있는 시나리오에 더 효과적입니다. 고정된 일정이나 조건에 따라 데이터 전환 및 만료를 정밀하게 제어할 수 있습니다. 이 접근 방식은 데이터를 다른 스토리지 클래스로 이동하거나 삭제해야 하는 방법과 시기에 대해 잘 정의된 규칙이 있을 때 이상적이며, 알려진 수명 주기로 데이터를 관리하기 위한 비용 효율적인 선택입니다.
.
5. 구성 제안
Amazon S3 서비스를 사용하고 있거나 사용할 예정인데, 만약 S3에 업로드된 객체에 대해서 액세스 패턴을 모르거나 아직 예측할 수 없다면, 다음과 같이 구성하실 것을 제안합니다.
- 수명주기규칙 2개 구성 & 지능형계층화
- 수명주기 #1
– 스토리지 클래스 변경: S3 Standard to S3 Intelligent Tiering)
수명주기 규칙을 통해서 업로드된 객체의 Standard 스토리지 클래스를 지능형 계층화 스토리지 클래스로 전환합니다. - 지능형 계층화(S3 Intelligent Tiering)
지능형 계층화 스토리지 클래스를 통해 액세스 티어 관리를 기본적으로 수행합니다.
지능형 계층화 내부에서 30, 90일이 경과됨에 따라 내부티어가 각각 Infrequent Access, Archive Instant Access 티어로 변경됩니다.- 중간에 한 번이라도 접근하면 다시 Frequent Access 티어로 변경됩니다.
- 작업 대상 버킷의 지표(Metrics) 탭 > 버킷 지표에서 총 버킷 크기를 확인할 수 있으며, 스토리지 클래스별 바이크 크기(StandardStorage, IntelligentTieringFAStorage, IntelligentTieringIAStorage, IntelligentTieringAIAStorage 등)의 변화를 모니터링할 수 있습니다.
- 만약 대상 버킷에서 지능형 계층화 내부 티어의 ‘개수’를 알고 싶거나, ‘특정 접두사 폴더 하위’의 정보를 확인하고자 하는 경우, S3 인벤토리 보고서를 활성화하면 지능형 계층화 스토리지 클래스의 내부티어(Frequent Access, Infrequent Access, Archive Instant Access)의 비율을 확인할 수 있습니다.
- 수명주기 #2 (Optional)
– 스토리지 클래스 변경 (S3 Intelligent Tiering to S3 Glacier Instant Retrieval)
S3 객체의 수정시간(Modify time)을 기준으로, 설정된 수명 주기가 지나면(ex. 3개월 or 6개월 etc.), S3 수명 주기 규칙 기능을 통해 GIR(Glacier Instant Retrieval) 스토리지 클래스로 변환되도록 구성할 수 있습니다.- 이를 위해서는 특정 샘플 객체가 한번 생성된 이후에 얼마나 자주 접근되는지의 정보가 필요합니다.
- 해당 정보는 Amazon S3 기본 정보만으로는 S3 객체(파일)의 접근 빈도의 확인이 어려우며, 개발단의 별도 지원이 필요합니다.
- 만약 S3 Intelligent Tiering이 아닌 Standard 클래스를 사용 시, S3 버킷의 ‘스토리지 클래스 분석’ 기능을 활성화해서 간접적으로 액세스 패턴을 분석할 수 있습니다.
- 수명주기 #3 (Optional)
– 스토리지 클래스 변경 (S3 Glacier Instant Retrieval to S3 Glacier Deep Archive)
– 객체 만료로 전환 등
S3 객체의 수정시간(Modify time)이 장기간(ex. 5년)이 지난 후, S3 수명 주기 규칙을 통해, GDA(Glacier Deep Archive) 스토리지 클래스로 전환 또는 객체 만료 등의 적용을 할 수도 있습니다.
- 수명주기 #1
※ 위의 수명주기 규칙은 정말 간단한 사용 방법의 예시일 뿐이며, 이 밖에도 S3 버킷의 수명주기 규칙은 정말 다양하게 이용할 수 있습니다.
.
6. 마무리
AWS의 스토리지 서비스(S3, EBS, EFS, FSx) 중에서 S3 서비스는 분명 저렴한 서비스입니다. 다만 TiB, PiB 등 더욱더 많은 데이터를 저장할수록 S3 서비스일지라도 저장 비용이 부담되게 됩니다.
S3 버킷의 S3 수명 주기 규칙(S3 Lifecycle Rule) 기능의 적절한 활용과, 객체에 대한 S3 지능형 계층화(Intelligent Tiering) 스토리지 클래스를 적용하는 것만으로도, S3 서비스의 객체 저장 요금을 효과적으로 절약할 수 있습니다.
.
7. 참고 문서
- AWS 기반 클라우드 스토리지
- 클라우드 스토리지 | 웹 스토리지| Amazon Web Services
- 객체 스토리지 클래스 – Amazon S3
- Amazon S3 스토리지 클래스 사용
- Amazon S3 요금
- S3 Intelligent-Tiering 작동 방식 – Amazon Simple Storage Service
- Amazon S3 수명 주기를 사용하여 객체 전환 – Amazon Simple Storage Service
.
.
SA 김제헌