컨텐츠 전달 네트워크(CDN: Content Delivery Network)
Edge Location 에서의 컨텐츠 분배 및 캐시(판독 능력 향상)
많은 엣지 포인트, DDOS 공격 보호 제공
판독: 컴퓨터의 중앙처리장치가 기억되어 있는 데이터를 읽거나, 데이터를 플로피디스크 같은 입력 장치에서 기억 장치로 옮기는 과정
서버간의 거리가 먼 컨텐츠를 요구하는 경우
첫 컨텐츠를 전달받은 특정 서버의 엣지 로케이션에서 컨텐츠를 캐싱하며
이 후의 동일한 컨텐츠의 요청은 빠른 속도로 응답해줄 수 있음
1.클라이언트가 HTTP 요청, 엣지 로케이션에서 요청을 받음
2.엣지 로케이션은 Origin(S3, HTTP) 으로 받은 요청을 포워드함
3.엣지 로케이션은 Origin 에서 받은 응답 데이터를 캐시
4.이 후 응답 데이터를 클라이언트에 전달
5.이 후 동일한 요청에 대해서 캐싱 데이터를 응답하거나 없는 경우 1~4번 반복
S3 버킷에 대한 엣지 로케이션(CloudFront)의 요청은 IAM 역할 OAI 필요
IAM 역할을 이용해 S3 버킷을 엑세스한 후 버킷 정책이 이 역할의 엑세스를 허용하면
파일을 클라우드 프론트로 전달함
EC2 인스턴스는 HTTP 를 통한 공용 엑세스가 가능해야함
ALB(ELB) 는 공용으로 엣지 로케이션으로 연결이 가능해야 하지만
ALB -> EC2 는 사설로 설정되어 있어도 상관 없음
분산으로의 엑세스 제한
국가간의 접근 제한이 필요한 경우 IP 를 이용하여 허용/거절 설정할 수 있음
1.단순한 설정의 S3 Bucket 생성
2.index.html, jpg(index.html 에서 호출하는 이미지) Upload
3.CloudFront 에 Origin Domain 에 S3 Bucket 설정
4.Origin Access -> Lagacy access identities -> Create new OAI
5.Bucket Policy -> Yes ... 클릭
6.Default root object 에 index.html(위 업로드한 파일) 설정
7.Create Distribution
8.CloudFront -> Distribution domain name 에 내용 복사
9.브라우저에 붙여놓고 웹페이지가 정상적으로 그려지는지 확인
10.S3 Bucket -> permission -> CloudFront 에서 설정한 정책 확인
클라우드프론트는 엣지 로케이션으로 전세계에 분포되어 있음
그러나 엣지 로케이션의 위치마다 가격 측정이 다름
비용 절감을 위해 클라우드프론트 분할의 3가지 가격 등급
클라우드프론트에는 백엔드 오리진이 있고 캐시의 TTL 만료시 백엔드 오리진으로
업데이트된 콘텐츠를 받을 수 있는데 사용자에게 변경된 컨텐츠를 당장 제공하고 싶을 때
일부의 캐시를 강제로 새로고침하여 제공할 수 있음
이 때 특정 파일의 경로를 제공해야함 *, /images/*
경로를 제공하여 캐시를 제거하고 특정 사용자의 요청이 다시 오게되면
클라우드프론트는 캐시가 제거되어 파일이 없는 것을 확인하고 파일을 백엔드에
요청하게되어 변경된 컨텐츠를 제공해줄 수 있게됨
Global Accelerator 란 애플리케이션을 배포하고 전세계에서 접근하는 경우
배포는 하나의 리전에 되어 있고 거리가 먼 클라이언트의 접근은
공용 인터넷을 통해 들어오게 되는데 여러번의 hops 을 지나는 경우가 발생
이 때 지연 문제 또는 요청이 끊키는 문제가 발생할 수 있으며
이 문제를 해결하기 위해 빠르게 AWS 네트워크에 접근하여 해결하는 것
탄력적 IP, EC2 인스턴스, ALB, NLB 와 함께 작동하며 공용, 사설 가능
지능형 라우팅으로 가장 짧은 엣지 로케이션 연결과 트래픽 전달
장애가 발생하는 경우 신속한 장애 조치 해결
엣지 로케이션 다음 네트워크는 AWS 내부 네트워크를 이용하고
리전에 있는 애플리케이션의 상태 확인 후 응답이 없으면 자동화된 장애 조치 실행 가능
1.Global accelerator Dashboard -> Create accelerator
2.accelerator 이름 설정 -> Next
3.port, protocol 설정 -> Next
4.region, 트래픽에 대한 가중치, health check 설정 -> Next
5.endpoint type(ALB, NLB, EC2, 탄력 IP), endpoint, 가중치 설정
6.Create
생성시 브라우저에 DNS name 입력 후 정상적으로 페이지 출력되는지 확인
여러개의 리전의 인스턴스를 endpoint 로 등록한 경우
네트워크 접속 경로에 따라 근처 리전의 인스턴스에 접속되는지 확인 가능