CloudFront
- Content Delivery Network (CDN) - 컨텐츠 전송 네트워크
- 컨텐츠를 엣지에 캐시하여 읽기 성능을 향상
- 이용자 경험 향상
- 전 세계 216개 지점 (엣지 로케이션)
- DDoS 보호 (전 세계적으로 애플리케이션이 배포되기 때문), AWS Shield, AWS Web Application Firewall와 통합
CloudFront - Origins
-
S3 버킷
- 엣지에 파일을 배포하고 캐시하는 용도로 사용
- CloudFront **Origin Access Control(OAC)**를 사용하여 보안 강화
- OAC는 Origin Access Indentitiy (OAI)의 대체
- CloudFront는 S3에 파일을 업로드하기 위한 ingress로 사용될 수 있음
-
Custom Origin (HTTP)
- Application Load Balancer
- EC2 Instance
- S3 웹사이트 (먼저 반드시 버킷을 정적 S3 웹사이트로 활성화해야함)
- 원하는 HTTP 백엔드 뭐든지
CloudFront vs Cross Region Replication
- CloudFront
- 글로벌 엣지 네트워크
- TTL 기반으로 파일이 캐시됨 (아마 1일)
- 어디서든 사용 가능해야 하는 정적 컨텐츠에 유용함
- S3 Cross Region Replication
- 복제가 일어나길 원하는 각 리전마다 직접 세팅해주어야 함
- 거의 실시간으로 파일이 업데이트됨
- 읽기 전용
- 일부 지역에서 낮은 레이턴시로 사용해야 하는 동적 컨텐츠에 유용함
CloudFront - ALB or EC2 as an origin
CloudFront - Geo Restriction
- 내 배포에 액세스할 수 있는 대상을 제한할 수 있음
- Allowlist: 허용한 나라 목록에 포함된 이용자들만 컨텐츠에 액세스 가능
- Blocklist: 금지된 나라 목록에 포함되지 않은 이용자들만 컨텐츠에 액세스 가능
- 대상 국가의 경우 써드파티 Geo-IP 데이터베이스를 통해 결정됨
- 사례: 컨텐츠 액세스를 제어하는 저작권법
CloudFront - Pricing
- CloudFront 엣지 로케이션은 전 세계에 분포
- 각 엣지 로케이션 마다 데이터 비용이 다름
CloudFront - Price Classes
- 비용 감축을 위해 엣지 로케이션의 갯수를 줄일 수 있음
- 3개의 Price class가 존재
- Price Class All: 모든 리전 - 최고 성능
- Price Class 200: 대부분의 리전, 제일 비싼 리전들은 제외
- Price Class 100: 가장 저렴한 리전만
CloudFront - Cache Invalidations
- 내가 백엔드 오리진을 업데이트했을 경우, CloudFront는 그것을 알 방도가 없기 때문에, 오직 TTL이 만료되고 나서야 갱신된 컨텐츠를 제공하게 됨
- 다만, CloudFront Invalidation을 통해서 강제로 전체 또는 일부 캐시를 갱신(refresh)할 수 있음 (TTL을 우회)
- 모든 파일(
*
), 또는 특정 경로(/images/*
)에 대해 무효화 할 수 있음
Global Accelerator
- 배포된 애플리케이션에 직접 접근하고자 하는 글로벌 이용자들은, 많은 홉(hop)으로 인해 레이턴시가 길어질 수 있는 공용 인터넷을 통해 전송됨.
- 이 때, 레이턴시를 최소화하기 위해 AWS 네트워크를 거쳐 최대한 빠르게 이동하고자 함
Unicast IP vs Anycast IP
- Unicast IP: 하나의 서버는 하나의 IP를 가짐
- Anycast IP: 모든 서버가 동일한 IP를 가지며, 클라이언트는 가장 가까운 서버로 라우트됨
Global Accelerator - Overview
- AWS 내부 네트워크를 활용하여 애플리케이션으로 라우팅
- 애플리케이션에 대한 2개의 Anycast IP를 생성
- Anycast IP는 엣지 로케이션으로 트래픽을 직접 전송
- 엣지 로케이션은 애플리케이션으로 트래픽을 전송
Global Accelerator - Description
- 퍼블릭/프라이빗 상관없이 Elastic IP, EC2 인스턴스, ALB, NLB과 함께 사용할 수 있음
- 일관된 성능
- 지능적인 라우팅을 통한 낮은 레이턴시와 빠른 리전 내 장애 복구
- 클라이언트 캐시와 관련한 문제 없음
- 내부적으로 AWS 네트워크 사용
- 헬스 체크
- Global Accelerator는 애플리케이션에 대한 헬스체크를 수행함
- 애플리케이션이 글로벌화 될 수 있도록 도와줌 (unhealthy 상태인 경우 1분 이하로 장애 복구)
- 이러한 헬스체크 덕에 재해 복구(disaster recovery)에 유용함
- 보안
- 오직 2개의 외부 IP만 화이트리스트에 추가하면 됨
- AWS Shield 덕에 DDoS 보호
Global Accelerator vs CloudFront
-
둘다 AWS 글로벌 네트워크과 그것의 엣지 로케이션을 사용함
-
두 서비스 모두 AWS Shield를 통한 DDoS 보호를 할 수 있음
-
CloudFront
- 캐시 가능한 컨텐츠 모두에 대한 성능 향상 (이미지나 비디오)
- 동적 컨텐츠 (API 가속 및 동적 사이트 전송)
- 컨텐츠가 엣지를 통해 제공됨
-
Global Accelerator
-
TCP나 UDP를 거치는 넓은 범위의 애플리케이션
-
하나 이상의 AWS 리전에 실행되는 애플리케이션으로 엣지에서의 패킷을 프록시해줌
-
non-HTTP 사례에 유용함 - 게이밍 (UDP), IoT (MQTT), 또는 Voice over IP(VoIP)
-
정적인 IP 주소들을 필요로 하는 사례에 적합함
-
결정론적(deterministic)이고 빠른 지역 장애 복구가 필요한 사례에 적합함
-