9장 S3와 유사한 객체 저장소

저장소 시스템 101

  • 저장소 시스템의 종류는 아래와 같은 세 가지 종류가 있다.
    • 블록(block) 저장소
    • 파일(file) 저장소
    • 객체(object) 저장소

블록 저장소

  • 블록 저장소는 특정 서버에 원시 블록(raw block)을 직접 제공한다.
  • 가장 유연하고 융통성이 높다. 또한 성능도 가장 우수하다.
    • 그말인 즉슨, 사용자가 신경써야할 것이 많다는 것이다.
  • 이러한 블록 저장소의 가장 대표적인 예시는 서버에 직접 설치되는 하드디스크이다.
  • 이와 달리, 고속 네트워크를 통해 FC(Fibre Channel) 또는 iSCSI(Internet SCSI)로 제공되는 블록 저장소도 있다.
    • 서버 입장에서, 개념적으로 이 둘은 동일하다.

파일 저장소

  • 파일 저장소는 블록 저장소 위에 구현된다.
    • 파일과 디렉터리를 관리하는 파일 시스템 기능을 포함한다.
  • SMB(Server Messge Block)/CIFS(Common Internet File System), 또는 NFS(Network File System)를 사용하여 제공된다.
    • 이러한 파일 저장소는 개별 블록에 대한 포멧과 관리 등의 작업을 고려할 필요가 없다.

객체 저장소

  • 객체 저장소는 데이터 저장 비용을 낮추기 위해 성능을 포기한다.
  • 실시간으로 수정 할 수 없는 콜드 데이터를 저장하는데 적합하다.
    • 데이터의 수정은 불가하고, 대신 전체 덮어쓰기를 지원하며 이를 위한 버전 관리 기능을 제공한다.

비교

9-1-type-of-storages 9-1-traits-of-storages

용어 정리

  • 버킷(bucket): 객체를 보관하는 논리적 컨테이너. 전역적으로 유일해야 한다.
  • 객체(object): 객체는 버킷에 저장하는 최소 단위로, 개별 데이터를 말한다.
    • 데이터: 페이로드(payload)라고도 하는 데이터의 실제 내용
    • 메타데이터: 객체를 기술하는 키-값 쌍
  • 버전(version): 한 버킷 내에서 같은 객체의 여러 버전을 관리할 수 있도록 한다.
  • URI: Uniform Resource Identifier. 객체 저장소에서 객체를 식별하는 고유한 식별자.
  • SLA: Service Level Agreement. 서비스 수준 동의서. 서비스 제공자와 사용자 간의 서비스 수준에 대한 계약.
    • AWS S3의 경우 아래와 같은 SLA를 만족한다고 한다.
      • 여러 AZ에 걸쳐 99.999999999%의 가용성(nine nines)
      • 하나의 AZ가 전체 소실되어도 복원이 가능
      • 연간 99.9%의 가용성 제공

1단계: 문제 이해 및 설계 범위 확정

  • 버킷 생성, 객체 업로드/다운로드, 객체의 버전관리, 버킷 내 목록 출력 기능 등
  • 아주 큰 객체(수 GB 이상)부터 소형 객체(수 KB 이하)까지 효율적으로 저장 가능
  • 연간 100PB 이상의 대규모 데이터 추가
  • 99.9999%(six nines)의 가용성
  • 99.99%(four nines)의 내구성

대략적인 규모 추정

  • 하드 디스크의 IOPS는 초당 100~150정도로 가정한다.
  • 1년간 데터 저장량은 100PB로 가정했다.
  • 디스크 용량 산출
    • 객체의 20%는 1MB 이하의 작은 객체이다. 이는 0.5MB로 가정한다.
    • 객체의 60%는 1~64MB 사이의 중간 크기 객체이다. 이는 32MB로 가정한다.
    • 나머지 20%는 64MB 이상의 큰 객체이다. 이는 200MB로 가정한다.
    • 각각의 객체의 메타데이터는 1KB로 가정한다.
    • 따라서 객체 하나의 평균 크기는 약 59.3MB = 60MB이다.
    • 결과적으로 1년에 저장하는 객체의 수는 대략 100PB / 60MB = 1000000000 / 60 = 16,666,666개이다.
profile
안녕하세요!

0개의 댓글

Powered by GraphCDN, the GraphQL CDN