참고 자료
https://www.udemy.com/course/best-aws-certified-solutions-architect-associate/
1. Amazon CloudFront
- Content Delivery Network (CDN) 콘텐츠 전송 네트워크
- 콘텐츠를 서로 다른 엣지 로케이션에 미리 캐싱하여 읽기 성능을 향상시키는 것
- 사용자 경험 향상
- 전세계에 총 216개의 엣지 로케이션 (Point of Presence)를 보유하고 있음
- DDos 공격에서 보호받을 수 있으며(콘텐츠가 전세계적으로 분산되어 있기 때문), Shield, AWS 웹 애플리케이션 방화벽과 통합
🧐 CloudFront - Origins
S3 bucket
- 파일을 분산하고 엣지에 캐싱하는데 사용됨
- Origin Access Control (OAC)를 통한 강화된 보안
- OAC는 Origin Access Identity(OAI)를 대체함
- CloudFront를 통해 버킷에 데이터를 보내는 방법 (Ingress)으로 사용될 수 있다.
Custom Origin (HTTP)
- 애플리케이션 로드 밸런서
- EC2 인스턴스
- S3 웹사이트 (먼저 버킷을 활성화하여 정적 웹사이트로 설정해야 함)
- 원하는 모든 백엔드 HTTP
CloudFront at a high level
- 전세계에 퍼져있는 CloudFront의 엣지가 있고, 여기에 연결할 원본 (S3 혹은 HTTP 서버)가 있음.
- 클라이언트가 연결해서 엣지 로케이션에 HTTP 요청을 보내면 엣지는 이것이 캐싱되어 있는지 확인함
- 캐싱되어 있지 않는 경우에는 원본으로 가서 요청 결과를 가져오고, 이를 로컬 캐시에 저장해서 다른 클라이언트가 같은 콘텐츠를 같은 엣지에 요청할 시 사용함.
CloudFront - S3 as an Origin
- AWS 클라우드의 어떤 리전에 있는 S3 버킷이 원본. 그리고 전세계의 엣지 로케이션이 있음. 여기서는 LA를 예로 들 것임.
- LA 엣지에 접근하는 사용자는 LA 엣지가 직접 콘텐츠를 제공하게 됨. 하지만 먼저 내부 AWS 망을 통해 S3 버킷 원본을 받아옴
- 이 버킷은 OAS로 보호받으며, S3 버킷 정책에 의해서만 수정할 수 있음
CloudFront와 엣지 로케이션을 이용해 특정 리전에 속한 S3 버킷을 전세계의 엣지 로케이션으로 분산시킬 수 있음
CloudFront vs S3 Cross Region Replication
CloudFront:
- Global Edge network
- 파일은 TTL 동안 캐싱된다. (일반적으로 하루)
- 전세계적으로 사용 가능한 정적 콘텐츠에 적합함
S3 Cross Region Replication:
- 각 복제를 원하는 리전마다 설정해야 함 - 전세계를 대상으로 한 것이 아님
- 파일은 거의 실시간으로 갱신됨
- 읽기 전용
- 일부 리전을 대상으로 동적 콘텐츠를 낮은 지연 시간으로 제공할 때 적합함
CloudFront는 전세계에 걸친 콘텐츠 전송 네트워크이며, S3 교차 리전 복제는 다른 리전으로 버킷을 복제하는 것.
CloudFront – ALB or EC2 as an origin
ALB
- ALB는 퍼블릭으로 설정되어야 함.
- 백엔드의 EC2 인스턴스는 프라이빗 설정을 해도 상관 없음. 로드 밸런서와 인스턴스 간에 가상 프라이빗 네트워크가 설정되어 있기 때문.
- 단순히 EC2 인스턴스의 보안 그룹이 로드 밸런서를 허용하게 설정하면 됨.
- 사용자는 엣지 로케이션으로 접근하기 때문에 연결이 맺어질 수 있도록 애플리케이션의 공용 IP가 로드 밸런서의 보안 그룹 정책에 허용이 되어 있어야 함
EC2
- 사용자들이 CloudFront를 통해 접근하길 원함. 사용자들은 CloudFront 엣지 로케이션에 접근할 것이고, 애플리케이션이 EC2 인스턴스에 요청을 보낼 것임. 따라서 이 둘은 모두 퍼블릭으로 설정되어야 함.
- 그렇지 않으면 CloudFront에는 가상 프라이빗 클라이언트가 없기 때문에 EC2 인스턴스에 접근할 수 없게 됨.
- 엣지 로케이션의 모든 공용 IP가 EC2에 접근할 수 있도록 하는 보안그룹 역시 설정해주어야 함.
- CloudFront의 IP 목록: http://d7uri8nf7uskq.cloudfront.net/tools/list-cloudfront-ips
🌏 CloudFront Geo Restriction
- 사용자의 지역에 따라 배포 객체 접근을 제한할 수 있음
- Allowlist: 사용자가 승인된 국가 목록에 있는 경우에만 콘텐츠에 액세스할 수 있도록 허용
- Blocklist: 사용자가 차단된 국가 목록에 있는 경우 콘텐츠에 액세스하지 못하도록 차단
- "국가"는 서드 파티 Geo-IP DB를 사용하여 결정됨
- 사용 사례: 저작권 법률을 준수하여 콘텐츠에 대한 액세스를 제어함
💸 Pricing
https://aws.amazon.com/ko/cloudfront/pricing/
- CloudFront 엣지 로케이션은 전세계적으로 분포되어 있음
- 엣지 위치별 데이터 전송 비용은 다양함.
(왼쪽에서 오른쪽으로 갈 수록 비용이 비싸짐)
Price Classes
https://aws.amazon.com/ko/cloudfront/pricing/
- 비용 절감을 위해 CloudFront를 분산할 엣지 로케이션의 수를 줄일 수 있음
- 세 가지의 가격 등급이 있음
- 요금 계층 전체: 모든 지역 - 최상의 성능
- 요금 계층 200: 대부분의 지역, 가장 비싼 리전은 제외
- 요금 계층 100: 가장 저렴한 리전만 사용 가능 (북미, 유럽 엣지 로케이션 제공)
🤓 Cache Invalidations
- 백엔드 오리진을 업데이트할 때, CloudFront는 이 업데이트 사항을 알지 못하며, TTL이 만료된 후에서야 백엔드 오리진으로부터 업데이트된 콘텐츠를 받게 됨
- CloudFront Invalidation를 통해 전체 캐시 또는 일부 캐시를 강제로 새로고침하여 TTL을 모두 제거할 수 있음
- 모든 파일 (
*
) 또는 특정 경로 (/images/*
)를 무효화할 수 있음
2. AWS Global Accelerator
전세계 사용자가 직접 액세스하려는 글로벌 애플리케이션을 배포했다. 애플리케이션은 한 리전에 배치되어 있지만 사용자들은 전세계에 걸쳐있다. 사용자들이 애플리케이션에 접근할 때는 공용 인터넷을 통하게 되는데 라우터를 거치는 동안의 수많은 홉(hops)로 인해 상당한 지연이 발생할 수 있다. 따라서 지연 시간을 최소화하기 위해 AWS 네트워크를 통하는 것이 좋은데, 이를 위해 Global Accelerator를 사용할 수 있다.
🔎 Unicast IP vs Anycast IP
- 유니캐스트 IP: 하나의 서버가 하나의 IP 주소를 보유
- 애니캐스트 IP 모든 서버가 동일한 IP 주소를 가지며 클라이언트는 가장 가까운 서버로 라우팅된다.
🛣️ AWS Global Accelerator
- 애플리케이션을 라우팅하기 위해 AWS 내부 글로벌 네트워크를 활용
- 애플리케이션을 위해 2개의 애니캐스트 IP가 생성됨
- 애니캐스트 IP는 사용자와 가장 가까운 엣지 로케이션으로 트래픽을 직접 전송함
- 엣지 로케이션은 훨씬 안정적이고 지연 시간이 적은 사설 AWS 네트워크를 거쳐 애플리케이션 로드 밸런서로 트래픽을 전송함
- 탄력적 IP, EC2 인스턴스, ALB, NLB와 함께 작동하며 퍼플릭일 수도, 프라이빗일 수도 있음
- 안정적인 성능
- 가장 짧은 지연 시간과 신속한 리전 장애 극복을 위한 지능형 라우팅
- 클라이언트 캐시와는 문제가 없음 (IP가 변경되지 않기 때문)
- 내부 AWS 네트워크
- Health Checks
- Global Accelerator가 애플리케이션에 대해 상태 확인을 실행
- 애플리케이션을 글로벌하게 만들어 줌. (상태 확인을 실패하면 자동화된 장애 조치가 1분 안에 정상 엔드포인트로 실행됨_
- 재해 복구에 탁월함
- 보안
- 단 2개의 외부 IP만 화이트리스트에 등록하면 됨
- AWS Shield를 통한 DDos 보호 기능이 있음
❕ AWS Global Accelerator vs CloudFront
공통점
- Global Accelerator와 CloudFront는 둘 다 글로벌 네트워크를 사용하고 AWS가 생성한 전세계의 엣지 로케이션을 사용한다.
- 둘 다 AWS Shield와 통합하여 DDos 보호를 제공한다.
CloudFront
- 캐시 가능한 콘텐츠(이미지 및 동영상 등)의 성능을 개선함
- API 가속 및 동적 사이트 전달과 같은 동적 콘텐츠에도 적용됨
- 콘텐츠는 엣지에서 제공됨
Global Accelerator
- TCP 또는 UDP를 통해 다양한 애플리케이션의 성능을 개선함
- 패킷은 엣지 로케이션으로부터 하나 이상의 AWS 리전에서 실행되는 애플리케이션으로 프록시됨. 이 경우 모든 요청이 애플리케이션 쪽으로 전달되며 캐싱은 불가능함.
- UDP 기반의 게임, MQTT를 사용하는 IoT, 음성 통화 등과 같은 HTTP가 아닌 사용 사례에 적합
- 글로벌하게 고정 IP 주소가 필요한 HTTP 사용 사례에 적합
- 결정적이고 신속한 리전 장애 조치가 필요한 HTTP 사용 사례에 적합