1. 클라우드 스토리지 (Cloud Storage) 개요
- 정의: 클라우드 컴퓨팅 제공업체를 통해 데이터와 파일을 인터넷에 저장하는 모델. 사용자는 퍼블릭 인터넷 또는 전용 프라이빗 네트워크 연결을 통해 스토리지에 액세스 가능.
- 클라우드 사용 시 이점: 비용 효율성, 민첩성 향상, 더 빠른 배포, 효율적인 데이터 관리, 확장성
- 스토리지 종류: File Storage, Block Storage, Object Storage (사용자가 데이터를 어떻게 읽고 쓰는지 인터페이스 관점에서 구분)
2. 스토리지 유형별 상세 분석
① Block Storage (예: Amazon EBS)
- 역할: 물리적 하드웨어(HDD, SSD)와 비슷한 역할을 수행하며 이를 흉내 냄. 가상머신(EC2)은 이를 자신의 하드디스크라고 생각함
- 특징: 스토리지 어디에 저장되어 있는지 등의 세부 작업은 직접 하지 못함(물리적 디바이스 관리는 OS가 담당)
- 데이터 처리: 데이터를 Block 형태로 Read/Write 함. 빠른 속도를 위해 각 블록에 고유 식별자(ID#)를 부여
- 기타: 백업 기능을 제공하기도 하며 SAN(Storage Area Network) 역할을 수행
② File Storage (예: Amazon EFS)
- 역할: 데이터를 파일 단위의 계층 구조로 저장함. 애플리케이션에 가장 널리 사용되는 유형
- 특징: 데이터를 파일 단위로 다루며 직접 데이터를 관리함(서버 기능도 수행). NFS, NAS 기술 사용 가능함. 로컬 하드 드라이브와 유사한 접근 방식을 가짐
- 사용 시나리오: 블록 스토리지에 '서버'가 추가된 느낌으로, 여러 서버나 사용자가 동일 파일 시스템에 동시 접근하거나 네트워크를 통한 파일 공유가 필요할 때 사용
③ Object Storage (예: Amazon S3)
- 역할: 대용량 미디어 파일, 이미지, 백업 등 비정형 데이터 저장을 위한 스토리지
- 특징: 데이터를 오브젝트(파일+메타데이터) 단위로 다룸. 전송된 형식 그대로 객체 데이터로 저장하며, 사용자가 직접 메타데이터 지정 가능
- 접근 방식: 객체는 '보안 버킷'이라는 공간에 저장되며, HTTP 프로토콜 기반 REST API 호출을 통해 접근
- REST API란? HTTP의 장점을 살려 자원을 이름으로 구분하고 상태를 주고받는 API 방식.
- 사용 시나리오: 정적 웹 콘텐츠 호스팅, 전 세계 데이터센터 분산, 저렴한 비용으로 장기 보관 시 유리
3. Amazon S3 (Simple Storage Service) 심화
- 주요 특징: 확장성이 뛰어나 저장 용량을 신경 쓸 필요가 없으며, 버전 관리/암호화/복제 기능으로 데이터를 보호. 사용한 만큼만 비용을 지불
- 구성 요소:
- 버킷(Bucket): 최상위 디렉토리(컨테이너). 폴더와 유사함. 무제한 객체 저장 가능. 계정당 최대 100개 생성 가능. 전 세계에서 유일한 이름을 가져야 함
- 객체(Object): 버킷 안의 파일. 크기는 최대 5TB. Key(이름)와 버전 ID로 식별됨.
- 객체의 상세 구성: Key(이름), Value(데이터), Version ID, Metadata(수정일, 타입, 소유자, 사이즈), 태그, 액세스 제어 정보.
- 태그 활용 보안: *
s3:ExistingObjectTag: 기존 객체에 특정 태그가 있는지 확인.
s3:RequestObjectTagKeys: 허용할 태그 키 제한
s3:RequestObjectTag: 허용할 태그 키 및 값 제한
- 예시: environment: production 태그가 있는 객체만 읽기 허용 가능.
- URL 형식 예시:
https://awsinaction.s3.ap-southeast-2.amazonaws.com/img/cat.png
- 버킷명:
awsinaction / 리전: ap-southeast-2 / 키네임: img/cat.png
4. S3 보안 및 관리 기능
데이터 암호화
- 서버 측 암호화 (Server-Side Encryption): AWS가 자동으로 보호. 업로드 시 암호화, 다운로드 시 복호화
- 종류: SSE-S3(기본), SSE-KMS, DSSE-KMS, SSE-C.
- 요청 헤더 예시:
"x-amz-server-side-encryption": "AES256"
- 클라이언트 측 암호화: 내 로컬 컴퓨터에서 암호화 후 업로드. 제3자에게 노출을 원천 방지하나 관리 복잡성이 높음
액세스 제어 (Access Control)
- 기본값은 Private임 (통째로 퍼블릭 설정 안 됨)
- IAM: 사용자/역할 기준. 내 계정 내 유저가 무엇을 할 수 있는지 제어
- ACL: 계정 단위 기준. 다른 AWS 계정에 대해 읽기/쓰기 권한 부여
- 버킷 정책: 버킷/객체 기준. 단일 버킷 내 모든 객체 권한을 세부 구성(IP나 도메인 제한 가능).
- CORS: 출처가 다른 서버 간의 리소스 공유를 허용(Access-Control-Allow-Origin 헤더 사용).
- Pre-signed URL: 임시 URL 발급. 특정 시간 동안만 권한 없는 사용자에게 액세스 부여. 생성자가 유효한 권한을 보유해야 함.
스토리지 관리

- 버전 관리: 업데이트 시 버전이 추가됨. 실수로 삭제/덮어쓰기 시 복원 가능. 한 번 활성화 시 비활성화 불가.
- 객체 복제: 동일 리전(SRR) 또는 타 리전(CRR)에 비동기 자동 복제. 배치 복제는 기존 객체 복제 시 사용.
- 스토리지 클래스: 요구사항에 맞는 클래스 선택 가능.
- 수명 주기(Lifecycle):
- 전환 작업: 일정 기간 후 저렴한 클래스로 이동 (30일 뒤 IA, 60일 뒤 Glacier 등).
- 만료 작업: 일정 기간 후 객체 자동 삭제.

5. Amazon CloudFront (CDN)
- 정의: 글로벌 콘텐츠 전송 네트워크 서비스. 짧은 지연 시간과 빠른 속도로 데이터 전송. S3 앞단에서 보안 기능 제공
- CDN 원리: 여러 서버에 데이터를 분산 캐싱하여 사용자에게 가장 가까운 서버에서 배포
- 주요 인프라:
- Edge Location: 원본 서버의 데이터를 캐싱하여 사용자에게 제공하는 지리적 거점
- Regional Edge Caches(REC): 오리진과 엣지 사이의 캐시 계층. 엣지에 없으면 REC를 먼저 확인하여 오리진 부하를 줄임.
- 동작 방식: 요청 → 엣지 확인 → 캐시 있으면 응답 / 없으면 오리진 포워딩 → 엣지 캐싱 후 응답.
- Origin Server: S3(정적) 및 EC2/ELB(동적) 연결 가능. 동적 콘텐츠는 TTL 동안 수정사항이 안 보일 수 있으므로 주의 필요.
- 보안 및 전송 최적화:
- HTTPS 지원: 오리진이 지원 안 해도 CloudFront에서 설정 가능.
- 지리적 제한: 특정 지역 접근 제한 가능.
- Signed URL: 특정 파일 하나에 대해 허용된 사용자만 접근 허용 (유료 결제 등)
- Signed Cookie: 다수의 파일에 대한 액세스 제공 (로그인한 유료 회원 등)