S3(Simple Storage Service)란 무엇인가?
만약 당신이 AWS Solution Architect를 준비한다면 필수적으로 알고 있어야 하는 서비스로 많은 비중을 차지하는 문제가 주로 이 섹션에서 출제된다.
아마존에서 말하는 S3
Amazon S3는 업계 최고의 확장성, 데이터 가용성 및 보안과 성능을 제공하는 객체 스토리지 서비스 입니다. 어떤 규모 어떤 산업의 고객이든 이 서비스를 사용하여 웹 사이트, 모바일 어플리케이션, IoT 디바이스, 빅데이터 분석등 다양한 사용 사례에서 원하는 만큼 데이터를 저장, 보호 할 수 있다. Amazon S3는 사용하기 쉬운 관리 기능을 제공하므로 특정 비즈니스 조직 및 규정 준수 요구 사항에 따라 데이터를 조직화, 세부적인 액세스 제어를 구성할 수 있다.
Amazon S3는 99.999999999%의 내구성을 제공하도록 설계되어 있으며 전 세계 기업의 수백만 어플리케이션을 위한 데이터를 저장한다.
S3 살펴보기
- 객체 스토리지 서비스
- AWS에서 제공하는 파일 저장 서비스
- Bucket이라는 단위로 구분
- 버전관리 가능
- 99.999999999% 내구성
- Static Web 호스팅 기능
- 업로드와 업데이트/ 삭제의 데이터 일관성 모델이 다름(시험에 자주 출제됨)
- 여러 티어로 구성된다.(요금에 따라, 파일의 성질에 따라 효율적으로 사용이 가능하다.)
- 암호화 가능
- 보안 설정 가능
- 다른 유저/다른 계정과 공유 가능
- 다른 Region으로 복제 가능(한국 -> 미국)
- 수명주기 설정 가능
- 삭제 방지 기능(MFA)
- 파일 전송 Transfer Acceleration 가능
- Athena/Macie 등 서비스로 Query 및 검증 가능
S3 객체 스토리지 서비스(파일을 다루는 서비스)
- 객체 스토리지 서비스: 파일만 가능 <-> Block Storage Service(EBS, EFS등)
- 파일 설치 불가(이미지,동영상,워드등 업로드, 삭제, 업데이트만 가능하다)
- 무제한 용량
- 단 하나의 객체는 0byte에서 5TB용량(하나의 파일은 용량제한이 있지만 그 파일을 몇개 업로드하는지는 무제한)
- Bucket이라는 단위로구분
- 디렉토리 개념
- Bucket 이름은 Global Unique
- 즉 세계 어디에서도 중복된 이름이 존재할 수 없음
- Web Hosting시 도메인과 Bucket 명이 같아야함
- 99.999999999% 내구성
- 0.000000001 % 확률로 파일을 잃어버릴 수 있음(국내 복권 당첨될 확률의 1/122)
- 99.9% SLA(이것보다 못하면 돈을 돌려준다는 약속)가용성(티어에 따라 다름)
내구성 가용성의 차이
- 내구성: 파일이 없어지느냐 안없어지느냐
- 가용성: 실제로 내가 서비스 기간중 파일을 다운할 수 있는지, 사용할 수 있는지에 대한 여부(즉 사용중 0.1% 확률로 가용성이 불가하더라도 파일이 사라지거나 없어지는게 아님)
S3 API
- 파일 관련 API(업로드, 업데이트, 삭제 등)
- 업로드 성공 시 HTTP 200코드 반환
- 큰 용량의 파일의 경우 Multipart Upload 가능(큰 파일을 잘게 쪼갠 뒤 하나씩 업로드 해 S3에서 합침)(두가지 장점을 가짐 1. 업로드가 중간에 중지되더라도 나중에 이어서 업로드가 가능, 2. 분산해서 업로드 하기 때문에 속도가 더 빠르다)
- 다운로드는 Torrent 지원
- Bucket 관련 API(조회, 생성, 삭제)
- 기타 기능(Lifecycle, Replication 등)
S3 객체의 구성
- key: 파일의 이름(경로와 같은 개념)
- value: 파일의 데이터(실제 데이터)
- Version Id: 파일의 버전 아이디
- Metadata: 파일의 정보를 담은 데이터(S3 업로드시 value, metadata를 같이 업로드 가능하다)
- ACL: 파일의 권한을 담은 데이터
- Torrents: 토렌트 공유를 위한 데이터
S3 버저닝
- 모든 버전을 관리(삭제 포함)
- 활성화 해야함(기본적으로 비활성화)
- 수명주기 관리와 연동 가능
S3 Static Hosting
- 기본적으로 파일은 두가지 웹 URL을 가짐
- Static Web 호스팅 가능(정적인 데이터를 웹서버처럼 돌릴 수 있음)
- Html/JS 등으로 구성된 Static 사이트만 가능-> React 등
- 호스팅 비용이 비교적 저렴함
- Serverless 구성의 기초
- 동적 데이터는 AJAX 등으로 해결 가능
S3 일관성 모델(시험 응시시 중요함)
- Put(새로 생성): 읽기 후 쓰기(Read After Write)
- 파일을 올리고 성공한 즉시 읽기 가능
- 먼저 Put한 요청이 우선권을 가짐
- Update/Delete: 최종일관성(Eventual Consistency)
- 파일을 삭제하거나 업데이트 이후 일정시간 후에 결과가 반영됨(1초 미만)
- 원자성 확보 불가능
S3 티어
- S3 Standard
- 99.99% 가용성
- 99.999999999% 내구성
- 여러 장소에 분산 보관
- S3-IA(Infrequently Accessed)
- 자주 사용되지 않는 데이터를 저렴한 가격에 보관
- 데이터를 불러올 때마다 비용 지불
- S3-OneZoneIA
- IA와 같으나 하나의 AZ에만 저장됨
- 덜 중요하고 자주 사용되지 않는 데이터
- S3 Intelligent Tiering
- 머신러닝을 사용해 자동으로 티어 변경
- 퍼포먼스 손해/오버헤드 없음
- S3-Glacier
- 아카이브용 저장소
- 저렴한 가격
- 데이터를 가져오는데 분~ 시간 단위의 시간 소요
- S3-Glacier Deep Archive
- 매우 쌈
- 데이터를 가져오는데 12시간 정도 필요함
S3 보안설정
- Bucket Policy
- 버킷 단위(버킷 안에 있는 파일 하나하나 세세한 설정 불가능)
- JSON 형식
- ACL(Access Control List)
- Access Log 전송가능
- MFA를 활용해서 삭제 방지 기능
S3 암호화
- S3의 데이터는 총 3가지 암호화로 구성
- On Transit: SSL/TLS(HTTS)
- At Rest
- SSE S3: S3에서 알아서 암호화
- SSE KMS: KMS 서비스(AWS 암호 키 패스워드를 관리)를 이용해 암호화
- SSE C: 클라이언트에서 제공한 암호를 통해 암호화
- 클라이언트가 직접 암호화
S3 공유
- S3의 공유는 3가지 방법으로 가능
- Bucket Policy / IAM
- ACL
- IAM 크로스 어카운트
S3 Cross Region Replication
- 다른 Region으로 복제 가능
- 버저닝이 활성화 되어 있어야함(원본, 대상 모두)
- 동일한 Region으로 복제 불가능
- 복제 기능 활성화 전 데이터는 복제되지 않음
- 버전 삭제 혹은 파일 삭제는 복제되지 않음
S3 수명주기(시험에 잘 나옴)
- ~~시간이 지난 후 ~~을 하라는 명령
- 예: 30일이 지난 후 삭제
- 예: 30일이 지난 후 Glacier로 옮기기
- 버전과 연동 가능
- 예전 버전과 현재 버전에 대해 설정 가능
- 파일이 업로드 / 삭제 / 업데이트 되었을 때 Lambda 호출 가능
S3 Transfer Acceleration
- AWS의 네트워크를 활용해 각 Edge Location에서 더욱 빠른 업로드가 가능하다
S3 Athena
- S3를 SQL 언어로 조회할 수 있는 서비스
- SQL 쿼리 사용
- Serverless
- 로그를 조회하거나 분석하는데 주로 활용한다.
Reference
https://www.youtube.com/c/AAAWS/videos