AWS S3는 여러 가지 스토리지 클래스를 제공하며, 각 클래스는 특정 사용 사례에 맞게 데이터 저장 비요을 최적화할 수 있다. S3는 총 9가지의 스토리지 클래스를 제공하지만, 하나는 AWS에서 권장하지 않는 클래스로 사실 8개라고 보는 것이 맞다. 각 클래스는 데이터 액세스 빈도, 보관 기간, 내구성 요구 사항에 따라 구분된다.
주요 스토리지 클래스 및 비용 절감 방법
Understanding and managing Amazon S3 storage classes - Amazon Simple Storage Service
The S3 Standard-IA and S3 One Zone-IA storage classes are suitable for objects larger than 128 KB that you plan to store for at least 30 days. If an object is less than 128 KB, Amazon S3 charges you for 128 KB. If you delete an object before the end of the
docs.aws.amazon.com
Standard (스탠다드 클래스)
- 주요 용도: 자주 엑세스 되거나 성능에 민감한 데이터를 위한 클래스
- 사용 사례: 웹 사이트 콘텐츠, 모바일 게임 데이터, 애플리케이션 데이터
- 비용: 다른 클래스보다 상대적으로 높지만, 저지연 및 높은 내구성을 제공
Express One Zone (익스프레스 원 존 클래스)
- 2023년도 12월 1일에 출시된 클래스
- 스탠다드에 비해 데이터 접근 속도가 10배 빠름
- 비용 50% 절감
- Express One Zone 클래스는 VPC 내부 가용 영역에 버킷을 배치
- 폴더 구조를 가진 디렉터리 버킷을 사용
- EC2 같은 자원에 동일한 위치에 배치되어 성능을 최적화
- 머신 러닝과 같은 서비스에 사용, 이커머스에는 비적합
Intelligent-Tiering (인텔리전트 티어링 클래스)
- 주요 용도: 액세스 패턴을 알 수 없거나 변화하는 데이터를 위한 비용 효율적 스토리지 클래스
- 액세스 계층 & 비용 절감 (스탠다드 클래스 기준)
- Frequent Access - 동일
- Infrequent Access - 45% 절감
- Archive Access - 82% 절감
- Deep Archive Access - 92% 절감
- 추가 비용: 객체 1,000개당 $0.0025의 모니터링 및 자동화 비용이 발생
Standard Infrequent Access (스탠다드 AI)
- 주요 용도: 오래 보관되지만 자주 액세스 되지 않는 데이터를 위한 클래스
- 비용: 스탠다드 클래스와 동일
- 복원력: 여러 가용영역에 데이터를 복원하여 복원성을 제공
One Zone IA
- 주요 용도: 저렴한 비용으로 장기보관 또는 거의 액세스 되지 않는 데이터를 위한 클래스
- 비용 절감 (스탠다드 대비)
- Glacier Instant Retrieval - 80% 절감
- Glacier Flexible Retrieval - 82% 절감
- Glacier Deep Archive - 92% 절감
- 복구 시간 - Flexible Retrieval 및 Deep Archive 클래스는 접근 시 복원 시간이 필요합니다.
Lifecycle Management (스토리지 수명 주기 관리)
AWS S3의 데이터 사용 패턴에 따라 객체를 자동으로 이동시키거나 삭제하여 비용을 절감할 수 있는 중요한 기능으로 객체의 생명 주기를 정의하고, 데이터를 더 저렴한 스토리지 클래스로 자동 전환하거나 필요 없는 데이터를 삭제할 수 있다.
주요 기능
전환 작업
- 객체를 특정 시간이 지난 후 더 저렴한 스토리지 클래스로 자동 전환
- 예를 들어, 자주 사용되던 객체는 스탠다드 클래스에 저장되지만, 30일 이상 액세스가 없을 경우 스탠다드 IA 또는 Glacier과 같은 더 저렴한 클래스로 전환된다.
만료 작업
- 객체가 지정된 기간 동안 사용되자 않으면 자동으로 삭제되도록 설정
- 오래된 데이터를 자동으로 제거하여 불필요한 스토리지 낭비를 줄일 수 있다.
실습
수동으로 객체 클래스 변경
객체를 선택해서 아래쪽으로 내리면, 스토리지 클래스 탭이 나온다. 기본적으로는 스탠다드 클래스가 설정된다.
클래스 설정 이후, 조회가 되지 않는다면 즉각적인 접근을 제공하지 않을 경우, 캐시가 삭제되면 접근이 안되기 때문에 그렇다.
조회가 되지 않는다면 복원 작업이 선행되어야 한다.
Lifecycle을 통한 자동 클래스 변경
수동으로 클래스를 이동시켜 주는 것은 굉장히 비효율 적이다. 그래서 Lifecycle을 통해 자동으로 클래스가 이동되도록 할 수 있다.
우선, 버킷 관리로 들어가서 생명 주기 규칙을 생성해 준다.
생명 주기 규칙 이름을 작성해 주고, 버킷의 모든 객체에 적용되는 옵션이 있고 범위를 지정해서 필터를 통해 지정 옵션에 해당하는 객체만 제한할 수 있다.
아래의 수명 주기 규칙 작업에는 5가지 옵션이 있는데, 체크 박스를 체크하면 아래에 설정창이 생겨나는 방식으로 되어있다.
첫 번째 옵션부터 살펴보면, 현재 버전에 대한 스토리지 클래스를 이동시키는 규칙을 설정한다. 왼쪽에는 이동할 스토리지를 오른쪽에는 조건을 입력하면 된다.
객체 생성 후 30일이 지나면 Standard-IA로, 60일이 지나면 Intelligent Tiering 클래스로, 90일이 지나면 Glacier Instant Retrieval로 이동하게 된다.
두 번째 옵션은, 버킷의 버전 관리 옵션을 활성화했을 때 최신 버전이 아닌 버전들에 대해 클래스 이동 규칙을 설정한다.
버전 관리 옵션이 꺼져있으면 의미가 없는 옵션이다.
아래처럼 입력하면 현재 버전을 제외한 이전 버전 최근 한 개의 버전을 보존하고 나머지 버전들은 아래의 규칙이 적용된다.
세 번째는 버전 관리가 활성화되어 있을 땐, 딜리트 마커를 추가하고 활성화되지 않았을 때는 객체를 삭제하는 옵션이다.
입력한 일수가 지나면 삭제된다.
네 번째는, 최신버전이 아닌 버전에 대해 삭제를 관리한다. 이전 버전이 된 기간을 기준으로 결정할 수 있고, 보존할 버전의 수를 지정할 수 있다. 역시 버전 관리가 활성화되어 있지 않으면 아무런 효과가 없다
마지막 옵션은 , 현재 버전이 딜리트 마커이고 이전 버전이 모두 삭제된 객체를 삭제해 준다.
불완전 멀티파트 업로드 삭제는, 멀티파트로 업로드되지 않은 객체를 일정 시간이 지나면 자동으로 삭제할 수 있다.
만료된 객체 삭제 마커가 비활성화되어 있는 이유는 세 번째 설정인, 버전 삭제 규칙과 같이 사용할 수 없기 때문이다. 세번째 규칙을 비활성화하고 만료된 삭제 마커 옵션을 켜준다.
맨 아래에서는 위에서 설정한 내용들을 알기 쉽게 정리해서 시각적으로 보여준다.
'Django > 인프라' 카테고리의 다른 글
[AWS] Micro Service Architecture (0) | 2024.10.17 |
---|---|
[AWS] CloudFront (0) | 2024.10.15 |
[AWS] S3 - 버전 관리 (0) | 2024.10.14 |
[AWS] S3 - 무한 확장 저장소, 버킷 생성, 권한 설정 & 객체 추가 (0) | 2024.10.14 |
[AWS] S3란 무엇인가? (0) | 2024.10.14 |