[AWS Cloud Clubs] 6. Storage

akim·2024년 5월 14일

AWS Cloud Clubs

목록 보기
5/6

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 동작 방식

  1. 사용자가 어플리케이션에 요청
  2. DNS는 사용자에게 적합한 Edge Location으로 라우팅
  3. Edge Location에서 캐시를 확인 후 사용자에게 반환
  4. Edge Location에 없으면 가장 가까운 REC로 캐시가 있는지 확인 요청
  5. REC에 없으면 CloudFront는 origin server로 요청
  6. 오리진은 오리진 > REC > Edge Location > CloudFront > 사용자 수순을 밟음
  7. REC에 캐시가 있다면 REC는 콘텐츠를 요청한 Edge Location으로 반환
  8. REC로부터 콘텐츠의 첫 번째 바이트가 도착하는 즉시 Edge Location은 이를 사용자에게 반환
  9. 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를 입력해 로그인 한 유료 회원에게 유료 콘텐츠를 모두 제공
profile
학교 다니는 개발자

0개의 댓글