ABOUT ME

heemang.site

Today
Yesterday
Total
  • [AWS] AWS S3의 내구성과 가용성
    dev-ops/aws 2025. 4. 7. 20:32

    객체 스토리지 방식으로 데이터를 저장한다

    AWS S3는 객체 스토리지 방식이다. 객체 스토리지는 객체 형태로 데이터를 저장하는데 객체는 데이터 + 메타데이터 + 고유 식별자로 이루어져 있다.

    • 객체 = 데이터 + 메타데이터 + 고유 식별자
    • 데이터(Body): 실제 저장되는 데이터 내용
    • 메타데이터(Metadata): 객체에 대한 부가 정보
      • 시스템 메타데이터: AWS S3가 자동으로 관리하는 정보
        • ex. Content-Type: image/jpeg, Content-Length: 140
      • 사용자 정의 메타데이터: 사용자가 직접 추가할 수 있는 커스텀 정보
        • ex. x-amz-meta- 가 prefix로 사용된다.
    • 고유 식별자(Object Key): AWS S3에는 폴더가 존재하지 않고 Key가 경로처럼 동작한다.
      • ex. Key=images/cats/cat.jpg
      • 이 Key를 통해 객체를 구별하고 검색할 수 있다.

     

    객체 저장 시나리오

    AWS S3에 cat.jpg 이미지가 저장된다면:

    • 데이터: cat.jpg 이미지의 바이너리 데이터
    • 메타데이터: Content-Type: image/jpeg, x-amz-photographer: Heemang
    • 고유 식별자: images/cats/cat.jpg

     

    객체 조회 시나리오

    고유 식별자인 images/cats/cat.jpg를 S3 버킷에서 조회하여 반환한다.

     

    비정형 데이터를 저장하는데 최적화되어 있다

    비정형 데이터란 구조화된(ex. SQL 테이블)이 없는, 즉 일정한 스키마를 따르지 않는 데이터를 말한다.

    • ex. 이미지 파일(.jpg, .png), 동영상(.mp4, .mov), 오디오(.mp3, .mav), 문서(.pdf, .docx, .txt), 로그 파일(.log), 백업 파일(.zip, .tar) 등

    AWS S3가 비정형 데이터 저장에 최적화되어 있는 이유는:

    • S3에 저장될 데이터의 형식이 상관 없다.
    • S3는 최대 5TB까지 저장할 수 있다.
    • 백업과 복원이 중요하다. ⇒ S3는 복제된 데이터를 3개 이상의 AZ에 저장하므로 내구성이 매우 높다.
      • S3의 내구성은 99.999999999%를 보장한다. (11`9s)

     

    내구성 99.999999999%를 보장한다

    내구성이란 데이터가 손실 없이 보존되는 정도를 의미한다. S3는 체크섬 검사를 주기적으로 수행하면서 문제가 발생한 파일을 자동으로 복구한다. S3는 3개 이상의 AZ에 데이터를 복제하여 저장하므로, 다른 AZ에 존재하는 복제본으로부터 파일을 복구할 수 있다.

    • S3는 CRC32, CRC32C, SHA-1, SHA-256 방식으로 체크섬 검사를 수행할 수 있다.

    S3가 체크검 검사를 수행하는 방법:

    1. 이미지 업로드 시점에 S3가 체크섬 값을 계산하여 저장
    2. S3는 주기적으로 체크검 값을 재계산하여 기존의 값과 비교
    3. 기존의 값과 다르다면 데이터가 손상되었거나 변경되었음을 의미
    4. 3번의 경우 다른 AZ에 저장된 복제본으로부터 원본을 복구

     

    가용성 99.99%를 보장한다

    가용성이란 언제든지 데이터에 접근할 수 있는 정도를 의미한다. 예를 들어, 서비스에 장애가 발생하더라도 데이터에 접근할 수 있는 것을 의미한다. S3는 3개의 AZ에 복제본을 저장하기 때문에 특정 AZ에 장애가 발생하더라도 다른 AZ에서 정상적인 서비스를 수행할 수 있다.

     

    위를 좀 더 전문적으로 설명하자면 S3는 분산 아키텍처 구조이므로 단일 장애점(Single Point Of Failure)이 없다고 한다. ⇒ S3는 안정적이고 고가용성을 지향한다.

    • 단일 장애점: 시스템 구성 요소 중 하나라도 장애가 발생하면 전체 서비스가 멈추는 구조
      • ex. 웹서버 1대가 존재할 때 이 서버가 죽으면 사이트 접속 불가

    S3는 데이터를 하나의 AZ가 아닌 여러 AZ에 걸쳐 복제하므로 분산 아키텍처 구조라고 한다. 여러 AZ에 데이터를 복제하므로 특정 AZ에 장애가 발생해도 다른 AZ에서 정상적인 서비스 수행이 가능하다.

     

    버전 관리 (Versioning)

    S3의 버전 관리(Versioning) 기능은 데이터를 안전하게 보관하고, 실수로 데이터를 삭제하거나 덮어쓰는 행위를 방지할 수 있는 기능이다.

    버전 관리는 하나의 객체(Key)에 대해 여러 개의 버전을 저장할 수 있는 기능이다. 같은 이름(Key)의 객체를 다시 업로드해도 이전 객체가 사라지는 것이 아닌 버전별로 보관된다. 따라서 실수로 기존 파일을 삭제하거나 수정해도 이전 버전으로 복구할 수 있다.

     

    최초로 업로드한 file1.png 파일:

    버전 ID: pFD6UqDQeNMbg.SilR1OodxmYSZb2gBJ

     

    동일한 이름의 file1.png 파일을 업로드:

    새로운 버전 ID: _J5LpEsvanUwFoMnE9JJob4W1GoEq6QZ

     

    각 버전은 고유한 Version ID를 가지고, S3는 요청 시 최신 버전을 기본으로 반환한다. 단, 원하는 버전을 명시하여 요청한다면 해당 버전의 파일을 요청할 수 있다:

     

    결론

    • 분산 아키텍처 ⇒ 단일 장애점 존재 X
    • 99.999999999% 내구성 보장
    • 최대 99.99% 가용성 보장
    • Versioning 제공

Designed by Tistory.