Amazon S3

Amazon S3 Simple Storage Service

  • AWS S3 는 최고 수준의 확장성, 데이터 가용성, 보안 및 성능을 제공하는 객체 스토리지 서비스
  • 데이터 레이크, 클라우드 네이티브 애플리케이션 및 모바일 앱에서 접근/사용 가능
    • 데이터 레이크 구축
    • 중요 데이터 백업 및 복원
    • 최저 비용 데이터 아카이브
    • 클라우드 네이티브 애플리케이션 실행
  • 데이터는 버킷 이라는 리소스에 객체로 저장
  • 한 객체의 크기는 최대 5TB 까지 저장 가능
  • S3 Versioning 기능을 사용하여 저장된 객체의 모든 버전을 보존/검색/복원
  • 장애 재해 복구 대응을 위해 다른 AWS 리전의 S3 복제 기능 제공
  • S3 객체 잠금 기능으로 WORM(Write-Once-Read-Many) 정책 적용
  • AWS 다른 서비스를 이용하여 S3 리소스를 모니터링 및 제어 처리
  • 기본적으로 사용자가 직접 생성한 S3 리소스에 대한 접근 권한만 가지지만, IAM 등 AWS 서비스를 활용하여 권한 관리 가능
WORM (Write-Once-Read-Many) 정책
  • 데이터가 한번 저장되고, 정의한 보존 기간동안 객체 버전 삭제를 차단하여 데이터를 보호하는 보존 정책

S3 데이터 처리 및 조회

데이터 처리

S3 객체 Lambda

  • S3 객체 Lamdba 를 사용하여 S3 데이터 요청하면, 애플리케이션으로 반환될 때 데이터 수정 및 처리
  • S3 객체 Lamdba 는 AWS Lambda 함수를 사용하여 표준 S3 GET, HEAD, LIST 요청의 출력 처리 방식

데이터 조회

S3 Select

  • S3 에는 S3 Select 라는 데이터 쿼리하는 자체 기능 내장
  • S3 Select 쿼리 성능은 최대 400% 상승, 쿼리 비용 80% 절감 효과 제공
  • 쿼리 조회 대상은 전체 객체 대신 객체 데이터의 하위 집합을 검색하는 방식

Amazon Athena

  • Amazon Athena 는 데이터를 추출하여 별도 서비스에 로드할 필요 없이 S3 의 데이터를 쿼리 기능 제공

Amazon Redshift Spectrum

  • Amazon Redshift SpectrumAthena 와 동일하게 S3 데이터를 직접 쿼리 실행하는 방식이며, 복잡한 쿼리나 더 큰 데이터 집합 조회에 더 적합한 방식

S3 성능

  • S3 는 병렬 요청을 지원하여 컴퓨팅 클러스터의 몇 배만큼 S3 성능 확장 가능
  • 성능은 접두사에 따라 확장되고, 필요한 처리량을 실현하기 위한 접두사를 병렬로 추가 가능 (접두사 수 제한 X)
  • S3 의 성능은 데이터 추가에 초당 최소 3,500 개의 요청 지원하며, 데이터 검색에 초당 최소 5,500 개의 요청 지원
S3 일관성
  • S3 는 성능이나 가용성 변경없이, 강력한 쓰기 후 읽기 일관성 제공
  • 이러한 강력한 일관성은 애플리케이션의 변경 필요성을 없애고, 온프레미스 분석 워크로드의 마이그레이션 단순화, 추가 인프라의 필요성에 대한 비용 절감 효과 제공
  • S3 는 모든 요청에 대한 강력한 일관성을 제공하기 때문에, 새로운 객체 쓰기 또는 기존 객체 변경 후, 후속 읽기 요청은 즉시 객체의 최신 버전의 데이터 반환 처리 가능

Etc.

파티셔닝

  • 파티셔닝 은 데이터의 특정 속성 기반으로 S3 의 디렉토리(또는 접두사) 기준으로 데이터를 구성하는 작업
  • 데이터의 특정 속성을 파티션 키 라고 하며, 파티션 키는 날짜 또는 기타 시간 단위로 설정
  • 파티션 키는 둘 이상의 키로 묶을 수 있으며, 날짜 + 제품 카테고리 등을 활용하여 파티셔닝 가능

버킷팅

  • 버킷팅 은 데이터 세트의 레코드를 버킷 이라는 카테고리로 구성하는 방법
  • 데이터 버킷팅에서 속성 값이 동일한 레코드는 동일한 버킷으로 이동
  • 레코드는 각 버킷이 대략 같은 양의 데이터를 보유하도록 균등하게 분산

출처