AWS CloudFront란?
AWS CloudFront는 AWS의 CDN(Content Delivery Network) 서비스다.
CDN(Content Delivery Network) 이란?
클라이언트의 콘텐츠 요청으로 서버에서 받아온 콘텐츠를 캐싱하고 이후 같은 요청이 왔을 때, 캐싱해뒀던 데이터를 제공하는 서비스이다.
물리적으로 거리가 먼 곳에도 빠르게 요청을 처리할 수 있고 결과적으로 서버의 부하를 낮출 수 있다.
Edge Location(Pop) / Regional Edge Cache(REC)
Edge Location은 CloudFront 서비스가 콘텐츠를 캐싱하고 클라이언트에게 제공하는 지점 혹은 캐시 서버를 의미한다.
만약, 사용자가 요청한 콘텐츠의 캐시가 Edge Location에 있다면 멀리 있는 서버에 직접 요청이 아닌 가까운 Edge Location에 저장된 캐시를 불러올 수 있다.
Regional Edge Cache는 사용자가 접근할 수 있는 글로벌하게 배포되어 있는 CloudFront 위치이다.
Origin과 Edge Location 사이에 위치해있는데, 콘텐츠가 캐시가 유지될 정도로 자주 사용하지 않아도 캐시는 더 오랫동안 남아있으며, Edge Location 보다 캐시 스토리지 용량이 더 크다.
Regional Edge Cache(REC)로 인해서 CloudFront가 Origin에게 요청하는 것을 줄여준다.
CloudFront 동작 순서
1. 사용자가 어플리케이션에 요청을 한다.
2. DNS는 사용자에게 적합한 Edge Location으로 라우팅 한다.
3. Edge Location에서 캐시를 확인하고 있으면 이것을 사용자에게 반환한다.
4. 없으면 가장 가까운 REC로 캐시가 있는지 요청한다.
5. 없으면 CloudFront는 오리진으로 요청을 전달한다.
6. 오리진은 '오리진 > REC > Edge Location > CloudFront가 사용자에게 전달' 수순을 밟는다. (캐시도 추가된다)
7. REC에 캐시가 있다면 REC는 콘텐츠를 요청한 Edge Location으로 반환한다.
8. REC로부터 콘텐츠의 첫 번째 바이트가 도착하는 즉시 Edge Location은 이를 사용자에게 반환한다.
7. Edge Location은 나중을 위해 이 콘텐츠 캐시를 저장한다.
*그 이후 콘텐츠는 TTL(패킷의 유효 기간)값 동안 Edge Location에 캐싱되어 낮은 지연시간으로 콘텐츠를 요청할 수 있다. 참고로 오리진(Origin)은 콘텐츠가 위치하고 있는 근원을 말한다 (ex. EC2 Instance, S3 Bucket, On-Premise etc...).
CloudFront의 정적(Static) / 동적(Dynamic) 콘텐츠 처리
CloudFront는 다른 CDN과 다르게 정적, 동적 콘텐츠 모두 처리한다.
정적 콘텐츠는 일반적으로 변경될 가능성이 적고, 모든 사용자에게 동일한 버전을 제공해도 문제가 없는 것들을 의미한다.
(ex. 이미지, CSS 파일, JavaScript 파일 등)
동적 콘텐츠는 사용자의 요청, 또는 시간에 따라 변화하는 콘텐츠를 의미한다. 즉, 모든 사용자에게 동일하게 보이지 않고, 개인화되거나 실시간으로 업데이트되는 정보를 의미한다.
(ex. 실시간 주식 시세, 로그인 후 보이는 콘텐츠, 댓글, 날씨 정보 등)