1. Storage
Storage
: (클라우드) 스토리지는 클라우드 컴퓨팅 제공 업체를 통해 데이터와 파일을 인터넷에 저장할 수 있는 클라우드 컴퓨팅 모델을 말함
Block Storage
: 데이터베이스 또는 전사적 자원 관리 시스템과 같은 엔터프라이즈 애플리케이션을 위해 지연 시간이 짧고, 빠른 데이터 액세스를 제공하는 스토리지 (ex: Amazon EBS)
- 데이터를 블록 형태로 저장
- 빠른 저장 및 검색을 위해 블록에 고유한 식별자 부여
File Storage
: 데이터를 파일 및 폴더의 계층 구조로 저장하는 데이터 스토리지 (ex: Amazon EFS)
- 어플리케이션에 가장 널리 사용되는 유형
- 네트워크 환경에서의 파일 기반 스토리지는 NAS 기술 사용
- 여러 서버나 사용자가 동일한 파일 시스템에 동시 접근하는 경우 등 사용
Object Storage
: 대용량 미디어 파일, 이미지, 백업 등의 비정형 데이터를 저장하기 위한 데이터 스토리지 (ex: Amazon S3)
- 전송된 형식 그대로를 객체 데이터로 저장
- 객체는 보안 버킷이라는 저장 공간에 저장
- HTTP 프로토콜 기반 REST API 호출을 통해 접근
2. Amazon S3
Amazon S3
: 데이터를 버킷 내 객채로 저장하는 객체 스토리지 서비스
- 버킷(최상위 디렉토리)와 객체(디렉토리 내에 저장되는 파일)로 구성
버킷
: S3에 저장된 객체에 대한 컨테이너
- 버킷에는 객체를 무제한으로 저장 가능
- 한 계정당 최대 100개의 버킷 생성 가능
- AWS 전역에서 단 하나만 존재, 리전과 관계없이 전역적으로 유일한 이름 사용
객체
: S3에 저장되는 기본 객체
-
객체는 하나 이상의 버킷에 저장, 각 객체의 크기는 최대 5TB
-
객체 데이터와 메타 데이터(이름-값 페어 집합)로 구성
-
S3내 모든 객체는 버킷+키+버전 조합으로 고유하게 식별 가능
-
키: 객체에 할당한 이름, 버킷 내 객체에 대한 고유한 식별자
-
버전 ID: 버킷에 객체를 추가할 때 Amazon S3가 생성하는 문자열
-
메타데이터: 객체 관련 정보를 저장하기 위한 이름-값 페어 세트, 사용자가 직접 지정 가능
-
값: 저장하는 콘텐츠(임이의 바이트 시퀀스)
-
태그: 저장된 객체를 분류하기 위해 사용하는 정보
-
액세스 제어 정보: 저장하는 객체에 대한 액세스를 제어하기 위한 정보

데이터 암호화
- 서버측 암호화(SSE): 데이터를 받는 애플리케이션 혹은 서비스 서버가 해당 데이터를 암호화하는 것
- 클라이언트측 암호화(CSE): 전송 및 저장 시 보안을 보장하기 위해 로컬에서 데이터 암호화
액세스 제어
- 리소스 기반 정책: S3 버킷과 같은 리소스에 연결하는 JSON 정책 문서. 리소스에 접근하기 위해 필요한 권한을 정의
- 자격 증명 기반 정책: 자격 증명이 무슨 작업을 어느 리소스, 어느 조건에서 수행할 수 있는지를 제어하는 정책. 사용자가 수행할 수 있는 작업 정의
- CORS: S3를 사용하여 정적 웹 사이트를 호스팅하는 경우 CORS(Cross-Origin Resource Sharing) 구성을 통해 액세스 제어, CORS는 웹 브라우저의 한 도메인이 다른 도메인의 리소스를 요청할 때 해당 리소스에 대한 액세스를 선택적으로 허용
- Pre-Signed URLs: 미리 서명된 URL을 사용하여 버킷 정책 업데이트 없이 S3 객체 액세스 허용
버전 관리
: 한 버킷에 여러 버전의 객체를 보관, 실수로 삭제되거나 덮어써진 객체 복원 가능
- 버킷의 버전 관리를 활성화하면 저장되는 객체에 대해 고유한 버전 ID 자동 생성
- 한 번 활성화하면 비활성화 불가
객체 복제
: 객체 복제를 통해 하나 이상의 대상 버킷에 대한 객체를 동일하거나 다른 AWS 리전에 비동기적으로 자동 복제 가능
- S3 리전 간 복제(CRR): 서로 다른 리전 버킷에서 새 객체를 복제하는 경우
- S3 동일 리전 복제(SRR): 동일한 리전 버킷에서 새 객체를 복제하는 경우
- S3 배치 복제: 기존 객체를 온디맨드 옵션으로 다른 버킷에 복제하는 경우. 위 두 가지 방법과 달리 필요할 때 트리거 시켜서 복제.
클래스
: S3 버킷의 각 객체에는 그와 연결된 스토리지 클래스가 존재하며, 사용자는 사용 사례 및 요구 사항에 맞게 스토리지 클래스를 선택
- 자주 액세스, 짧은 지연시간 필요: S3 Standard, S3 Express One Zone, Reduce Redundancy
- 자주 액세스하지 않음: S3 Standard-IA, S3 One Zone-IA
- 객체 아카이빙을 위한 저비용: S3 Glacier
수명주기
: 객체를 효율적으로 저장 및 관리하기 위해 S3 객체 그룹에 적용할 작업을 정의하는 수명 주기 구성
- 전환 작업: 객체가 다른 스토리지 클래스로 전환되는 시기 정의
- 만료 작업: 객체가 만료되는 시기 정의. 객체가 만료되면 S3가 해당 객체 자동 삭제
3. Amazon CloudFront
Amazon CloudFront
: 짧은 대기 시간과 빠른 전송 속도로 최종 사용자에게 데이터, 동영상, 애플리케이션 및 API를 안전하게 전송하는 CDN(글로벌 콘텐츠 전송 네트워크) 서비스
- 엣지 로케이션이라고 하는 데이터 센터의 전 세계 네트워크를 통해 콘텐츠를 제공
- Client의 콘텐츠 요청으로 서버에서 받아온 콘텐츠를 캐싱하고 이후 같은 요청이 왔을 때, 그 캐싱해 둔 것을 제공하는 서비스
- CloudFront를 통해 서비스하는 콘텐츠를 사용자가 요청하면 지연 시간이 가장 낮은 엣지 로케이션으로 요청이 라우팅되므로 가능한 최고의 성능으로 콘텐츠가 제공됨
- CDN(Content Delivery Network): 콘텐츠 전송 네트워크로, 웹사이트의 원래 서버와 달리 사용자에게 더 가까이에 있는 서버로부터 컨텐츠를 배포하는 방식
- Edge Location: 사용자에게 더 가까운 지리적 위치에 콘텐츠를 저장하는 데이터 센터
- REC(Regional Edge Caches): 오리진과 엣지 로케이션 사이에 존재하는 캐시 계층. 엣지 로케이션에서 캐시 미스가 발생했을 때, 오리진 서버 대신 리전 엣지 캐시로부터 콘텐츠를 검색하여 더 빠른 응답 시간을 제공함
CloudFront 동작 방식
- 사용자가 어플리케이션에 요청
- DNS는 사용자에게 적합한 Edge Location으로 라우팅
- Edge Location에서 캐시를 확인 후 사용자에게 반환
- Edge Location에 없으면 가장 가까운 REC로 캐시가 있는지 확인 요청
- REC에 없으면 CloudFront는 origin server로 요청
- 오리진은
오리진 > REC > Edge Location > CloudFront > 사용자 수순을 밟음
- REC에 캐시가 있다면 REC는 콘텐츠를 요청한 Edge Location으로 반환
- REC로부터 콘텐츠의 첫 번째 바이트가 도착하는 즉시 Edge Location은 이를 사용자에게 반환
- Edge Location은 나중을 위해 이 콘텐츠 캐시를 저장
Origin Access Identity(OAI)
: CloudFront가 S3 버킷과 같은 origin에 안전하게 접근할 수 있도록 하는 고유 식별자
- CloudFront를 통해서만 origin에 저장된 콘텐츠에 접근할 수 있도록 제한
CloudFront 기능
- HTTPS 지원: Origin에서 https 지원을 해주지 않아도 CloudFront 안에서 https 통신을 지원하도록 구성 가능
- 특정 지역 콘텐츠 접근 제한 기능(지리적 제한 기능)
- Signed Url: 허용된 사용자에게만 접근할 수 있는 signed url 제공. 개별 파일에 대한 access 제공(파일 하나당 하나의 url)
ex: 쿠키를 구운 독자만 웹툰을 미리 볼 수 있도록 URL을 제공
- Signed Cookie: 다수의 파일에 대한 access 제공(다수의 파일에 하나의 signed cookie)
ex: ID/PW를 입력해 로그인 한 유료 회원에게 유료 콘텐츠를 모두 제공