반응형
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 주소를 가지며, 클라이언트는 가장 가까운 서버로 라우팅된다.
개념
기본 개념은 다음과 같다.
- 공용 인터넷을 거쳐서 보내는 대신에 가장 가까운 엣지 로케이션과 통신한다.
- 엣지 로케이션으로부터 사설 AWS 네트워크를 거쳐 ALB로 곧장 연결된다.
특징은 다음과 같다.
- 애니캐스트 IP는 사용자와 가장 가까운 엣지 로케이션으로 트래픽을 직접 전송한다. 이것이 애니캐스트 IP의 장점.
- 그러면 엣지 로케이션은 훨씬 안정적이고 지연 시간이 적은 사설 AWS 네트워크를 거쳐 애플리케이션 로드 밸런서로 트래픽을 전송한다.
- Global Accelerator는 어떤 애플리케이션에 대해서도 전 세계의 유저들에게 두 개의 고정 IP 주소를 제공할 수 있다.
- 탄력적 IP, EC2 인스턴스, ALB, NLB (모두 공용 or사설) 등과 함께 동작한다.
- 지능형 라우팅으로 지연 시간이 가장 짧은 엣지 로케이션으로 연결되며 뭔가 잘못될 경우에는 신속한 리전 장애 조치가 이루어진다.
- 아무것도 캐시하지 않기에 클라이언트 캐시와도 문제가 없다.
- 우리가 사용하는 두 개의 애니캐스트 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를 사용할 때도 매우 유용하다.
- 또는 결정적이고 신속한 리전 장애 조치가 필요할 때도 좋다.
반응형
댓글