Cloud/AWS

CloudFront & Global Accelerator

Debin 2023. 7. 7.
반응형

CloudFront

  • CloudFront란 CDN, 컨텐츠 전송 네트워크를 의미한다.
  • CDN은 웹사이트의 컨텐츠를 서로 다른 엣지 로케이션에 미리 캐싱하여 읽기 성능을 높인다.
  • 네트워크 전체에 캐싱되므로 전세계 사용자들이 낮은 레이턴시로 접근할 수 있어서 사용자 경험을 증대시킬 수 있다.
  • 컨텐츠가 전체적으로 분산되어 있으므로 DDoS 공격에서 보호를 받을 수 있다.
  • 호주에 위치한 S3 버킷에 웹사이트를 만들었다 하더라도 미국에 있는 사용자는 CloudFront를 이용해 미국에 있는 엣지에 컨텐츠를 요청하게 된다. 그럼 CloudFront가 호주에서 이 컨텐츠를 페치해서 가져온다.
  • 그리고 미국의 다른 사용자가 똑같은 컨텐츠를 요청한다면, 이 컨텐츠는 호주에서 출발하지 않고 엣지에서 직접 컨텐츠를 제공받는다.
  • CloudFront의 원본 제공 방식은 2가지가 있다.

S3 사용

  • 먼저 S3 버킷으로, CloudFront를 통해 파일을 분산하고 캐싱할 수 있게 한다.
  • 버킷에는 CloudFront만 접근할 수 있게 보장한다.
  • 이를 가능하게 하는 것이 OAC라 불리는, Origin Access Control(원본 접근 제어)로 기존의 OAI(Origin Access Identity)를 대체한다.
  • CloudFront를 통해 버킷에 데이터를 보내는 방법도 가능한데, 이를 Ingress라고 한다.

Custom Origin (HTTP)

  • ALB, EC2 인스턴스, S3 웹사이트가 예시
  • 단 S3 웹사이트의 경우 버킷을 활성화해서 정적 웹 사이트로 설정해야 한다.
  • 그 외의 다른 HTTP 백엔드도 가능하다.

정리

  • 전세계에 퍼져 있는 CloudFront 엣지가 있고 여기에 연결할 원본이 존재(s3 버킷, http 서버)
  • 이제 클라이언트가 연결해서 엣지 로케이션에 HTTP 요청을 보내면, 엣지는 이것이 캐싱되어 있는지 확인한다.
  • 캐싱되어 있지 않을 경우에는, 원본으로 가서 요청 결과를 가져온다.
  • 그리고 결과를 가져오면서, 이를 로컬 캐시에 저장해 다른 클라이언트가 같은 컨텐츠를 같은 엣지에 요청할 시 사용한다.
  •  ALB와 EC2가 HTTP 백엔드에 포함됨.
  • CloudFront는 가상 프라이빗 클라우드가 없으므로 공용ip가 접근할 수 있는 보안 그룹을 설정해야 한다.
  • CloudFront과 엣지 로케이션을 이용해, 특정 리전에 속한 S3 버킷을 전세계의 엣지 로케이션으로 분산시킬 수 있다.

CloudFront와 CRR(교차 리전 복제) 차이점

  • CloudFront는 전세계의 엣지 네트워크를 이용한다.
  • 216개의 엣지 로케이션에 하루 동안 파일들이 캐싱된다.
  • 교차 리전 복제는 조금 다르다.
  • 여러분이 복제를 원하는 각 리전에 이 설정이 되어 있어야 한다. 즉 전세계를 대상으로 한 것은 아니다.
  • 파일은 거의 실시간으로 갱신된다. 즉 캐싱이 되지 않고, 또한 읽기 전용으로만 설정이 가능하다.
  • 이런 것은 일부 리전을 대상으로 동적 컨텐츠를 낮은 지연 시간으로 제공하고자 할 때 유용하다.
  • CloudFront는 전세계에 걸친 컨텐츠 전송 네트워크이며, 반면 S3 교차 리전 복제는 다른 리전으로의 버킷 복제다.

Cloud Geo Restriction(지리적 제한 설정)

  • 사용자들의 지역에 따라 배포 객체 접근을 제어할 수 있다.
  • 접근이 가능한 국가 목록을 만들거나, 반대로 접근이 불가능한 국가 목록을 만들어서 설정할 수 있다.
  • 이 국가는 서드 파티 지역 DB에서 설정한 것으로, 사용자의 IP가 어떤 국가에 해당하는지를 확인할 수 있다.
  • 사용사례는 컨텐츠 저작권법으로 인한 제한

Price Classes

  • CloundFront 엣지 로케이션은 전 세계에 고루 분포해 있으므로 엣지 로케이션마다 데이터 전송 비용이 다릅니다
  • CloudFront에서 더 많은 데이터가 전송될수록 비용은 낮아집니다
  • 비용 절감을 위해 여러분의 CloudFront를 분산할 전 세계 엣지 로케이션 수를 줄이는 방법이 있는데요
  • 최상의 성능을 제공하는 Price Class All (전세계 모든 엣지 로케이션 사용)
  • Price Class 200도 있습니다 대부분의 리전을 사용할 수 있지만 가장 비싼 리전은 제외되죠 (북미와 유럽 엣지 및 일부 리전 추가)
  • Price Class 100은 가장 저렴한 리전만 사용할 수 있습니다 (북미와 유럽 엣지)

Cache Invalidations (캐쉬 무효화)

  • CloudFront에는 항상 백엔드 Origin이 있다.
  • CloudFront 엣지 로케이션은 우리가 백엔드 Origin을 업데이트할 때 업데이트 사항을 모른다.
  • 캐시의 TTL이 만료되면 백엔드 Origin으로부터 업데이트된 콘텐츠를 받는다.

새 콘텐츠를 빨리 얻으려면?

  • 우리는 전체 또는 일부의 캐시를 강제로 새로고침해서 캐시에 있는 타임 투 리브(TTL)를 모두 제거할 수 있다.
  • 이를 위해 CloudFront 무효화를 실행해야 하는데, 쉽게 말해 캐쉬를 제거하는 것이다.
  • 이때 특정 파일의 경로 혹은 전체 파일의 경로를 알려줘야한다.

Global Accelerator

  • 글로벌 애플리케이션이고 글로벌 사용자들이 직접 접근하려고 하는데 우리 애플리케이션은 오직 한 리전에 배치되어 있다.
  • 사용자들이 애플리케이션에 접근할 때는 공용 인터넷을 통하게 되는데 라우터를 거치는 동안의 수 많은 Hop으로 인해 상당한 지연이 발생할 수 있습니다
  • 따라서 지연 시간을 최소화하기 위해 최대한 빨리 AWS 네트워크를 통하는 것이 좋다.
  • 이때 Global Accelerator를 사용한다.
  • Global Accelerator는 애니캐스트 IP 개념을 사용한다.
  • 애플리케이션을 라우팅하기 위해 AWS 내부 글로벌 네트워크를 활용한다.

유니 캐스트 & 애니캐스트

  • 유니캐스트 IP: 하나의 서버가 하나의 IP 주소를 가진다.
  • 애니캐스트 IP: 모든 서버가 동일한 IP 주소를 가지며, 클라이언트는 가장 가까운 서버로 라우팅된다.

개념

기본 개념은 다음과 같다.

  1. 공용 인터넷을 거쳐서 보내는 대신에 가장 가까운 엣지 로케이션과 통신한다.
  2. 엣지 로케이션으로부터 사설 AWS 네트워크를 거쳐 ALB로 곧장 연결된다.

특징은 다음과 같다.

  1. 애니캐스트 IP는 사용자와 가장 가까운 엣지 로케이션으로 트래픽을 직접 전송한다. 이것이 애니캐스트 IP의 장점.
  2. 그러면 엣지 로케이션은 훨씬 안정적이고 지연 시간이 적은 사설 AWS 네트워크를 거쳐 애플리케이션 로드 밸런서로 트래픽을 전송한다.
  3. Global Accelerator는 어떤 애플리케이션에 대해서도 전 세계의 유저들에게 두 개의 고정 IP 주소를 제공할 수 있다.
  4. 탄력적 IP, EC2 인스턴스, ALB, NLB (모두 공용 or사설) 등과 함께 동작한다.
  5. 지능형 라우팅으로 지연 시간이 가장 짧은 엣지 로케이션으로 연결되며 뭔가 잘못될 경우에는 신속한 리전 장애 조치가 이루어진다.
  6. 아무것도 캐시하지 않기에 클라이언트 캐시와도 문제가 없다.
  7. 우리가 사용하는 두 개의 애니캐스트 IP는 변하지 않는다.

헬스 체크

  • Global Accelerator가 애플리케이션에 대해 상태 확인을 실행한다. 그리고 애플리케이션이 글로벌한지 확인한다.
  • 한 리전에 있는 한 ALB에 대해 상태 확인을 실패하면 자동화된 장애 조치가 1분 안에 정상 엔드 포인트로 실행된다.
  • 상태 확인 덕분에 재해 복구에 특히 뛰어나다.
  • 클라이언트가 화이트리스트 해야 하는 단 두 개의 외부 IP만 존재하기 때문에 보안 측면에서도 매우 안전하다.
  • Global Accelerator를 통해 DDoS 보호도 자동으로 받게 된다.

Global Accelerator vs CloudFront

공통점

  • 둘 다 동일한 글로벌 네트워크를 사용하고 둘 다 AWS가 생성한 전 세계의 엣지 로케이션을 사용합니다

차이점

Cloud Front

  • CloudFront는 이미지나 비디오처럼 캐시 가능한 내용과 API 가속 및 동적 사이트 전달 같은 동적 내용에 대해 성능을 향상시킨다.
  • 이 내용은 엣지 로케이션으로부터 제공받는다.
  • 따라서 엣지 로케이션은 가끔 한 번씩 출처로부터 내용을 가져온다.
  • 대부분의 경우에 CloudFront는 캐시된 내용을 엣지로부터 가져와서 전달합니다
  • 즉 사용자들은 엣지로부터 내용을 받는 겁니다

Global Accelerator

  • Global Accelerator는 TCP나 UDP상의 다양한 애플리케이션 성능을 향상시킨다.
  • 그러나 패킷은 엣지 로케이션으로부터 하나 이상의 AWS 리전에서 실행되는 애플리케이션으로 프록시된다.
  • 이 경우에는 모든 요청이 애플리케이션 쪽으로 전달된다.
  • 캐싱은 불가능하다.
  • 따라서 게임이나 IoT 또는 Voice over IP 같은 비 HTTP를 사용할 경우에 매우 적합하다.
  • 글로벌하게 고정 IP를 요구하는 HTTP를 사용할 때도 매우 유용하다.
  • 또는 결정적이고 신속한 리전 장애 조치가 필요할 때도 좋다.
반응형

댓글