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 Spectrum는Athena와 동일하게 S3 데이터를 직접 쿼리 실행하는 방식이며, 복잡한 쿼리나 더 큰 데이터 집합 조회에 더 적합한 방식
S3 성능
- S3 는 병렬 요청을 지원하여 컴퓨팅 클러스터의 몇 배만큼 S3 성능 확장 가능
- 성능은 접두사에 따라 확장되고, 필요한 처리량을 실현하기 위한 접두사를 병렬로 추가 가능 (접두사 수 제한 X)
- S3 의 성능은 데이터 추가에
초당 최소 3,500 개의 요청지원하며, 데이터 검색에초당 최소 5,500 개의 요청지원
S3 일관성
- S3 는 성능이나 가용성 변경없이, 강력한 쓰기 후 읽기 일관성 제공
- 이러한 강력한 일관성은 애플리케이션의 변경 필요성을 없애고, 온프레미스 분석 워크로드의 마이그레이션 단순화, 추가 인프라의 필요성에 대한 비용 절감 효과 제공
- S3 는 모든 요청에 대한 강력한 일관성을 제공하기 때문에, 새로운 객체 쓰기 또는 기존 객체 변경 후, 후속 읽기 요청은 즉시 객체의 최신 버전의 데이터 반환 처리 가능
Etc.
파티셔닝
파티셔닝은 데이터의 특정 속성 기반으로S3의 디렉토리(또는 접두사) 기준으로 데이터를 구성하는 작업- 데이터의 특정 속성을
파티션 키라고 하며, 파티션 키는 날짜 또는 기타 시간 단위로 설정 - 파티션 키는 둘 이상의 키로 묶을 수 있으며, 날짜 + 제품 카테고리 등을 활용하여 파티셔닝 가능
버킷팅
버킷팅은 데이터 세트의 레코드를버킷이라는 카테고리로 구성하는 방법- 데이터 버킷팅에서 속성 값이 동일한 레코드는 동일한 버킷으로 이동
- 레코드는 각 버킷이 대략 같은 양의 데이터를 보유하도록 균등하게 분산