S3는 객체 저장을 위해 다양한 스토리지 클래스를 제공하며, 조건에 따라 다양한 클래스를 선택적으로 사용할 수 있습니다.
조건은 다음과 같습니다.
1. 내구성 - 어떤 조건에서도 데이터가 유지돼야 하는지
2. 가용성 - 신속하게 데이터를 인출할 수 있는지
3. 비용 효율성 - 비용을 얼마나 절약할 수 있는지
하나씩 자세히 살펴보도록 하겠습니다.
내구성(Durability)
S3의 내구성
S3의 내구성은 99.999999999%에 달하며(11개의 9), 이는 대부분의 S3 클래스 및 Amazon Glacier에 해당됩니다.
저장된 객체에 대한 연간 평균 손실 가능성은 0.0000000001%이며, 이는 만약 S3에 10,000,000개의 객체를 저장했다면, 10,000년마다 단 하나의 객체가 손실될 수 있는 확률입니다.
다른 말로는 AWS 인프라가 실패하더라도 표준 S3/Glacier 플랫폼에 저장된 데이터의 손실 가능성은 사실상 0에 가깝다는 의미입니다.
그렇다면 S3가 가장 안전한가?
그렇다 하더라도 중요한 데이터의 사본을 S3 버킷에만 저장하는 것은 바람직하지 못합니다. 인프라 실패 외에도, 잘못된 환경 설정, 계정 정보 분실, 예기치 못한 외부 공격 등 저장된 데이터에 대한 접근이 차단될 수 있는 가능성은 얼마든지 있습니다.
중요한 데이터는 항상 복수의 장소에 백업해서 보관해야 하며, 이 때도 서로 다른 서비스 및 미디어 타입을 이용하는 것이 좋습니다.
S3가 고도의 내구성을 제공하는 방법
S3가 제공하는 고도의 내구성은 S3가 최소 세 개의 AZ, 가용성 지역에 자동으로 데이터를 복제해 놓기 때문에 가능합니다. 이는 특정 지역에 있는 AWS의 전체 시설이 갑자기 지도에서 사라지더라도 데이터 사본은 다른 AZ에 저장돼 있어서 안전하다는 의미입니다.
하지만 단일 스토리지 클래스만으로는 충분한 내구성 또는 저항성을 구현하기 어렵습니다. amazon S3 Reduced Redundancy Storage(RRS)의 경우 99.99%의 내구성을 제공하는데, 이는 표준 클래스에 비해 좀 더 적은 수의 서버에 데이터를 복제해 놓기 때문입니다. RRS는 호환성 등의 이유로 아직까지 서비스되고 있으나, 권장하지는 않습니다.
이와 같은 내구성은 가용성 또는 비용 등의 요소와의 균형을 맞추기 위해 증가 또는 감소할 수 있지만, 가급적 99.999999999%에 이르는 표준 클래스를 사용할 것을 권장하고, 최소 3곳 이상의 AZ에 부난 저장되는 클래스를 선택하는 것이 좋습니다.
가용성(Availability)
S3 객체의 가용성은 연간 객체에 대한 지속적인 요청을 처리할 수 있는 능력을 퍼센트로 표시한 것이며, Amazon S3 Standard 클래스는 연간 99.99%의 응답 가능성을 보증합니다. 이는 연간 9시간 미만의 다운타임이 발생할 수 있다는 의미이며, 이 시간을 초과해서 발생하는 다운타임에 대해서는 서비스 크레딧을 적용할 수 있습니다.
비교적 최근에 도입된 S3 Intelligent-Tiering은 비용 절약형 가용성 최적화 클래스로서, 클래스 내 데이터에 대한 접근 빈도를 모니터링해 지난 30일간 연속적으로 데이터에 대한 접근이 없는 경우, 보다 낮은 요금 체계를 지닌 티어로 자동으로 변경합니다. 사용자는 월간 자동화 요금을 부담합니다.
S3 Standard | S3 Standard-IA | S3 One Zone-IA | S3 Intelligent-Tiering | |
보증하는 가용성 | 99.99% | 99.9% | 99.5% | 99.9% |
Eventual consistency
S3는 다수의 지역에 데이터를 복제합니다. 이 때문에 기존 객체를 업데이트하면 시스템 전체에 이러한 사실이 전파될 때까지 약간의 시간 지연이 발생할 수 있습니다. 파일의 새 버전을 업로드한 직후 구 버전의 파일을 삭제하면, 특정 위치에서는 이러한 변경 사항이 미처 전파되지 못하는 상황이 발생할 수 있습니다.
단일 객체에 대한 이와 같은 버전 충돌은 데이터 관리 및 애플리케이션 운영에 심각한 부작용을 초래할 수 있으므로, 데이터는 Eventual Consisteny Model에 따라 관리해야 합니다. https://en.wikipedia.org/wiki/Eventual_consistency
업데이트 및 삭제 작업은 Eventual Consistency 기준에 적용되지만, 새 객체의 생성에 대해서는 이와 같은 문제가 발생할 가능성이 없으며, 새 객체 생성 또는 PUT과 같은 덮어쓰기 작업에는 read-after-write consistency 기준이 적용됩니다.
https://avikdas.com/2020/04/13/scalability-concepts-read-after-write-consistency.html
참고사항
https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/DataDurability.html
http://www.kyobobook.co.kr/product/detailViewKor.laf?mallGb=KOR&ejkGb=KOR&barcode=9791161756103
'About > Cloud' 카테고리의 다른 글
[AWS] Amazon S3 Glacier (0) | 2022.03.24 |
---|---|
[AWS] S3 객체 생애주기 (0) | 2022.03.24 |
[AWS] S3의 암호화 (0) | 2022.03.23 |
[AWS] S3 대용량 객체 업로드 (0) | 2022.03.23 |
[AWS] AWS Systems Manager에 대하여 (0) | 2022.03.22 |