SECTION 15. CloudFront& AWS Global Accelerator

‎김연수·2024년 6월 15일

SAA 자격증 공부

목록 보기
12/16

1. AWS CloudFront

  • Content Delivery Network(CDN) 서비스
  • 목적캐싱을 통해 사용자에게 좀 더 빠른 전송 속도를 제공
  • 세계 이곳저곳에 Edge Server(Location)을 두고 Client에 가장 가까운 Edge Server를 찾아 Latency를 최소화시켜 빠른 데이터를 제공

CloudFront at a high level

  • 엣지 로케이션이 HTTP 요청을 받으면 캐시 안에 있는지 확인다.
  • 캐시 안에 없다면 요청 결과를 얻기 위해 origin 으로 간다. 결과 검색하면 로컬 캐시에 캐싱한다.
  • 이후 다른 클라이언트가 같은 요청할 경우 origin으로 갈 필요가 없다.

s3을 오리진으로 사용할 때

  • 엣지 로케이션은 Private 네트워크를 통해 원본 s3 버킷에서 콘텐츠를 받는다.
  • s3 버킷은 Origin Access Control(OAC)로 보호받고, s3 버킷 정책으로 수정할 수 있다.

    OAC(origin access control): OAI(origin access identity)의 확장판, 기존 리전과 향후 추가될 모든 리전을 포함한 모든 AWS 리전에서 S3에 접근하는 것을 지원합니다. HTTP 메서드(GET, PUT, POST, PATCH, DELETE, OPTIONS 및 HEAD)를 지원하고, SSE-KMS로 암호화된 S3 객체 다운로드 및 업로드를 지원합니다.

CloudFront vs S3 Cross Region Replication

CloudFront

전세계 엣지 네트워크를 이용
파일이 캐시되어 TTL동안 유지
전세계를 대상으로 정적 컨텐츠를 사용하고자 할 때 유용

CRR - Cross Region Replication

복제를 원하는 각 리전에 설정되어야 함
거의 실시간으로 갱신된다 따라서 캐싱될 수 없다
읽기 전용으로만 설정 가능
일부 리전을 대상으로 동적 컨텐츠를 적은 지연시간으로 배포하고싶은 경우

2. ALB or EC2을 오리진으로 사용할 때

  • CloudFront가 직접 EC2인스턴스를 접근하는 경우 각각 Public 설정이 필요함
    - CloudFront에 private VPC 연결이 없기 때문에 보안 그룹도 필요함.
    - 엣지 로케이션의 모든 public ip를 허용해야 함.

  • 로드밸런서를 사용하는 경우 로드밸런서에 공개 설정이 되어있어야한다
    - 로드밸런서에 public IP를 받을 수 있도록 설정하면 된다
    - EC2 는 Private 설정이 되어있는데, 로드 밸런서와 EC2 사이에 Private VPC 연결이 있기 때문이다.

3. Pricing

Pricing

  • 엣지 포인트 마다 데이터 비용이 다르다.
  • 더 많은 데이터를 전송한다면 비용이 줄어든다.

Price Classes

  • 비용 절감을 위해 CloudFront를 분산할 엣지 로케이션의 수를 줄일 수 있다
    - Price Class All: 최고 성능 - 모든 리전
    - Price Class 200: 대부분의 리전을 사용할 수 있지만 비싼 지역은 제외
    - Price Class 100: 적은 비용의 지역만 이용 가능

4. Cache Invalidations 캐시 무효화

  • CloudFront는 항상 백엔드에 원본이 있으므로 우리가 백엔드 원본을 업데이트할 때 CloudFront는 업데이트 사항을 모름
    - 이후 TTL로 만료되면 다시 업데이트된 콘텐츠를 받는다

  • 전체 또는 일부의 캐시를 강제로 리프레시해서 캐시에 있는 TTL을 모두 지울 수 있다
    - CloudFront Invalidation을 실행해야함

  • 특정 파일의 경로 혹은 전체 파일의 경로를 전달해야함

  • 무효화는 단순히 캐시 데이터를 삭제하는 것

  • (사진 설명) s3 버킷에 파일 업데이트 하고, CloudFront에 /index.html, /images/* 를 무효화하라고 한다. 이것이 엣지 로케이션에 전달되고, 이후 GET/ index.html 요청이 오면 캐시에 해당 정보가 없으므로 s3 버킷에서 새로운 출처를 얻게 된다.

5. Global Accelerator

  • 글로벌 애플리케이션으로 글로벌 유저가 접근해야하는 경우
  • 지연시간을 최소화하기 위해 최대한 빨리 AWS 네트워크를 통하는 것이 좋다

Global Accelerator

  • Anycast IP 개념을 사용한다
    -2개의 Anycast IP가 사용자와 가장 가까운 엣지 로케이션으로 트래픽을 직접 전송한다
    -그리고 엣지 로케이션은 애플리케이션으로 트래픽을 전송한다.

    Anycast: 모든 서버가 동일한 IP주소를 가지며 클라이언트는 가장 가까운 서버로 라우팅된다

  • 클라이언트 캐시와 관계 없고 사용하는 두 개의 IP또한 변하지 않는다
  • Elastic IP, EC2 인스턴스, ALB, NLB, 공용 또는 사설
  • Health Checks
    -애플리케이션의 상태를 확인하고, 글로벌인지 확인한다.
    -상태 확인 실패 시 장애조치(failover)를 한다.
    -재해 복구에 뛰어나다.
  • Security
    - 클라이언트가 화이트리스트(명시적으로 허가) 해야하는 ip가 2개 뿐이다.

Global Accelerator vs CloudFront

  • 동일한 글로벌 네트워크를 사용 → 전 세계의 엣지 로케이션을 사용
  • DDoS 보호를 위해 둘다 쉴드와 통합

CloudFront

  • 이미지나 비디오처럼 캐시 가능한 내용
  • 동적인 컨텐츠에 대해 성능을 향상
  • 엣지 로케이션으로 부터 제공됨 ( 사용자들은 엣지로부터 제공 받는다 )

Global Accelerator

  • TCP나 UDP 상의 다양한 애플리케이션 성능 향상
  • 패킷은 엣지 로케이션을 통해 하나 이상의 AWS 리전에서 실행되는 애플리케이션으로 프록시됨
    -모든 요청이 애플리케이션 쪽으로 전달 / 캐싱은 불가능
    -엣지 로케이션으로부터 받는게 아님
  • 게임이나 IoT또는 Voice over IP같은 비 HTTP를 사용할 경우 유용
  • 글로벌하게 고정 IP 주소가 필요한 HTTP 사용 사례에 적합
  • 결정적이고 신속한 리전 장애 조치가 필요한 HTTP 사용사례에 적합

0개의 댓글