CloudFront

개요

  • CDN(컨텐츠 전송 네트워크) 서비스를 제공한다.

  • 웹사이트의 컨텐츠를 서로 다른 엣지 로케이션에 미리 캐싱하여 읽기 성능을 높인다.

  • 전세계에 분포된 216개의 엣지 로케이션 덕분에 사용자들이 낮은 레이턴시로 접근할 수 있다.

  • 컨텐츠가 전체적으로 분산되어 있으므로 DDoS 공격에서 보호를 받을 수 있다.

  • 엣지 로케이션에 사용자가 원하는 데이터가 없다면 요청을 보내 조회한 후 데이터를 캐싱해둔다.

Origins

  • S3 버킷

    • S3 버킷에는 CloudFront만 접근할 수 있게 하고, CloudFront를 통해 파일을 분산하고 캐싱하도록 한다.

    • OAC(Origin Access Control, 원본 접근 제어) 방식으로 보안을 강화하고 OAI(Origin Access Identity)를 대체한다.

    • CloudFront는 S3에 파일을 업로드하기 위한 Ingress로 사용될 수 있다.

    • CloudFront과 엣지 로케이션을 이용해, 특정 리전에 속한 S3 버킷을 전세계의 엣지 로케이션으로 분산시킬 수 있다.

    • 교차 리전 복제 방식은 CloudFront 방식과 달리 전 세계를 대상으로 하는 것이 아니라 특정 리전을 대상으로 한다. 파일이 거의 실시간으로 갱신되며 캐싱이 되지 않는다. 따라서 일부 리전에 동적 컨텐츠를 낮은 지연시간에 제공하기 위해 사용된다.

  • Custom Origin (HTTP)

    • ALB나 EC2 인스턴스, 또는 S3 웹사이트, HTTP 애플리케이션이 원본이 될 수 있다.

    • 즉, 동적 데이터를 라우팅할 수도 있다.

    • EC2 인스턴스가 원본일 경우 EC2 인스턴스는 Public이어야 하며 Edge Location에서 Public IP를 통해 접근 가능해야 한다. CloudFront에는 VPC가 제공되지 않기 때문이다.

    • ALB가 원본일 경우 ALB는 Public이어야 하며 Edge Location에서 Public IP를 통해 접근 가능해야 한다. ALB에 연결된 EC2 인스턴스들은 Private이어도 된다.

    • S3 웹사이트의 경우 버킷을 활성화해서 정적 웹 사이트로 설정해야 한다.

동작 방식

  • 전세계에 퍼져 있는 CloudFront의 엣지가 있고 연결 대상 원본(S3 버킷이나 HTTP 서버)가 존재한다.

  • 클라이언트가 엣지 로케이션에 HTTP 요청을 보내면, 엣지는 캐싱 여부를 확인 후 캐싱되어 있지 않으면 원본으로 가서 요청을 보낸다. 요청 결과를 가져오면서 로컬 캐시에 저장을 한다.

지리적 제한 설정

  • GeoIP 데이터베이스를 사용하여 사용자의 IP를 해당 국가에 매핑한다.

  • 국가 별 허용 목록과 차단 목록을 정의할 수 있다.

  • 저작권 법에 따라 콘텐츠에 대한 접근을 제어하는 용도로 사용할 수 있다.

가격 등급

  • 엣지 로케이션 위치와 사용량에 따라 가격이 달라진다.

  • 10TB부터 시작하며, 사용량이 많을수록 저렴해진다.

  • 가격 절감을 위해 세 가지 등급 중 하나를 사용할 수 있다.

    • Price Class All : 모든 리전

    • Price Class 200 : 대부분의 리전이 해당된다. 특히 비싼 리전들만 제외된다.

    • Price Class 100 : 유럽, 아메리카 대륙 리전만 해당된다.

캐시 무효화

  • 원본 데이터를 업데이트하는 경우 CloudFront는 이를 제 때 반영하지 못할 수 있다.

  • 캐시 무효화를 통해 전체 혹은 부분 캐시를 없앨 수 있다.

  • 특정 경로의 데이터만 무효화할 수도 있고 전체 데이터를 무효화할 수도 있다.

Last updated