article thumbnail image
Published 2023. 5. 30. 22:01

CloudFront

  • Content Delivery Network (CDN) → CDN을 본다면 CloudFront라고 생각하면 된다
  • 서로 다른 엣지 로케이션에 미리 캐싱하여 읽기 성능을 높이는 것
    • 우리의 컨텐츠가 네트워크 전체에 캐싱되므로 적은 지연시간으로 UX 향상
  • 전세계 216개의 엣지 로케이션으로 구성됨 → 지속적으로 추가 중이다
  • 컨텐츠가 전체적으로 분산되어 있어 DDOS에 대해 보호받을 수 있다
  • 호주에 S3 버킷에 웹사이트를 만들었다 하더라도 CloudFront를 이용해 엣지에 컨텐츠를 요청하여 캐싱됐는지 확인하고 없다면 캐싱 있다면 가져옴

 

CloudFront의 원본 제공 방식

S3 bucket

  • CloudFront를 활용해 파일 분산, 캐싱
  • 버킷에는 CloudFront만 접근할 수 있도록 보장할 수 있다
    • Origin Access Control(OAC)로 기존의 OAI를 대체한다
  • CloudFront를 통해 버킷으로 데이터를 보내는 것도 가능하며 Ingress라고 함

 

Custom Origin (HTTP)

사용자 정의 원본을 쓸 수 있다

  • 애플리케이션 로드 밸런서
  • EC2 인스턴스
  • S3 웹사이트(버킷을 통한 정적인 배포가 되어있어야함)
  • 모든 백엔드 HTTP 방식으로 가능

 

CloudFront at a high level - 진행방식

일반적인 DNS와 비슷하다

  • 캐싱되어있는 경우 그대로 리턴
  • 캐싱되어있지 않은 경우 CloudFront의 엣지에서 Origin으로 요청 결과를 가져온다
  • 이후 로컬 캐시에 저장해서 같은 요청 다른 클라이언트에게 캐싱된 결과를 보내준다

 

CloudFront S3를 오리진으로 사용하는 경우

  • 내부 Private AWS 망을 통해 버킷 원본을 받아온다
    • 이때 버킷은 OAS로 보호받으며 S3 버킷 정책으로 수정할 수 있다
  • 어느 리전에 있는 사용자에게도 마찬가지로 동작한다
    • 원본이 없는경우 AWS 사설 서비스망을 통해 요청.. 이후 캐싱..

CloudFront vs S3 Cross Region Replication

CloudFront

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

 

CRR - Cross Region Replication

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

 

CloudFront - ALB or EC2가 원본으로 사용되는 경우

  • CloudFront가 직접 EC2인스턴스를 접근하는 경우 각각 Public 설정이 필요함
    • CloudFront만 허용하는 OAC처럼 설정하려면 보안그룹을 설정해야한다
    • 이 경우 CloudFront의 IP들의 목록을 보며 직접 설정해야할 필요가 있다

 

 

  • 로드밸런서를 사용하는 경우 로드밸런서에 공개 설정이 되어있어야한다
    • EC2 인스턴스의 보안그룹이 로드밸런서를 허용할 수 있도록만 하면 private 설정 가능
  • 로드밸런서에 public IP를 받을 수 있도록 설정하면 된다

 

CloudFront 지리적 제한 설정

  • 사용자들의 지역에 따라 배포 객체 접근을 제어할 수 있다
  • 접근이 가능한 국가목록을 만들거나 접근이 불가능한 국가 목록을 설정할 수 있다
  • 서드 파티 지역 DB에서 설정한 것으로 사용자 IP가 어떤 지역인지 알 수 있담
  • 컨텐츠 저작권법으로 인한 제한이 필요한 경우 사용

 

CloudFront - Pricing

요금과 가격 등급

  • 엣지 로케이션은 전세계 분포되어 있으므로 엣지 로케이션마다 데이터 전송 비용이 다름
  • 전송 데이터가 많을수록 비용이 싸다

 

CloudFront - Price Classes

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

 

CloudFront 캐시 무효화(Cache Invalidations)

  • CloudFront는 항상 백엔드에 원본이 있으므로 우리가 백엔드 원본을 업데이트할 때 CloudFront는 업데이트 사항을 모름
    • 이후 TTL로 만료되면 다시 업데이트된 콘텐츠를 받는다
  • 전체 또는 일부의 캐시를 강제로 리프레시해서 캐시에 있는 TTL을 모두 지울 수 있다
    • CloudFront Invalidation을 실행해야함
  • 특정 파일의 경로 혹은 전체 파일의 경로를 전달해야함
  • 무효화는 단순히 캐시 데이터를 삭제하는 것

 

AWS Global Accelerator

  • 글로벌 애플리케이션으로 글로벌 유저가 접근해야하는 경우
  • 멀면 멀수록 상당히 많은 홉수로 지연시간이 상당히 많이 발생한다
    • 심하면 연결이 끊길 수도 있음
  • 지연시간을 최소화하기 위해 최대한 빨리 AWS 네트워크를 통하는 것이 좋다

 

 

Unicast IP vs Anycast IP

Unicast

하나의 서버는 하나의 IP 주소를 가지고 있다

Anycast

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

 

AWS Global Accelerator 동작

  • Anycast IP 개념을 사용한다
    • 사용자와 가장 가까운 엣지 로케이션으로 트래픽을 직접 전송한다
  • 내부 글로벌 네트워크를 활용하기 위해 가장 가까운 AWS 네트워크와 통신한다
  • 이후 엣지 로케이션이 훨씬 안정적이고 빠른 AWS 사설 네트워크를 거쳐 ALB로 트래픽 전송
  • Elastic IP, EC2 인스턴스, ALB, NLB, 공용 또는 사설
  • 안정적이고 지연시간이 가장 짧은 엣지 로케이션과 연계
  • 클라이언트 캐시와 관계 없고 사용하는 두 개의 IP또한 변하지 않는다

 

Health Checks

  • Global Accelerator가 애플리케이션에 대해 상태 확인
  • 애플리케이션이 글로벌인지 확인한다
  • 어떤 리전에 ALB에 대해 상태 확인을 실패하면 자동화된 장애 조치가 1분안에 정상 엔드포인트로 실행됨
  • 재해 복구에 특히 뛰어남

 

Security

  • 클라이언트가 화이트 리스트 해야하는 IP가 2개 뿐
  • DDoS보호도 자동으로 받게 된다 AWS Shield

 

Global Accelerator vs CloudFront

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

 

CloudFront

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

 

Global Accelerator

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

 

'TIL > AWS' 카테고리의 다른 글

AWS 통합과 메시징: SQS, SNS, Kinesis, Active MQ  (0) 2023.06.01
AWS 스토리지 추가기능  (0) 2023.05.30
AWS S3 보안  (0) 2023.05.29
고급 Amazon S3  (0) 2023.05.28
Amazon S3  (0) 2023.05.28
복사했습니다!