[AWS] Cloudfront란?
실전 프로젝트에서 HTTPS를 도입하기 위해 AWS의 ACM과 Cloudfront를 사용하였고, Github Actions를 사용하여 워크플로우 자동화 단계에 프로덕션 환경으로의 빠른 반영을 위해 Cloudfront 캐시를 무효화 해주는 단계를 추가했었다. 그런데 막상 Cloudfront에 대해서는 잘 모르고 있어 정리해 보고자 한다.
Cloudfront란?
아마존은 Cloudfront 서비스에 대해서 이렇게 설명하고 있다.
Amazon CloudFront는 뛰어난 성능, 보안 및 개발자 편의를 위해 구축된 콘텐츠 전송 네트워크(CDN) 서비스입니다.
CDN은 Content Delivery Network의 약자로, 해석 그대로 콘텐츠 전송 네트워크를 의미한다. 지리적으로 분산된 여러 서버가 있어 사용자로부터 가장 가까운 서버에서 콘텐츠를 전송하여 빠르게 받아볼 수 있다.
Cloudfront는 HTML, CSS, Javascript, 이미지 파일 등과 같이 정적 및 동적인 웹 콘텐츠를 사용자에게 더 빨리 배포할 수 있도록 지원하는 웹 서비스이다. Edge Location이라는 데이터 센터의 전 세계 네트워크를 통해 콘텐츠를 전송하며, 지연 시간이 가장 낮은 (사용자로부터 가장 가까이에 있는) Edge Location으로 요청이 라우팅되어 사용자에게 빠르게 전송할 수 있게 된다. 그래서 Cloudfront를 이용하면 아래의 이점들을 누릴 수 있다.
- 사용자가 통과해야 하는 네트워크의 수가 줄어들어 성능 향상에 도움이 된다.
- 첫 파일을 로드하는 데 소요되는 시간이 줄어든다.
- 데이터 전송 속도가 빨라진다.
Cloudfront 작동 원리
- 사용자가 엔드포인트에 접근하면 Edge Location으로의 요청이 발생한다.
- Edge Location은 요청이 발생한 데이터에 대하여 캐싱 여부를 확인한다.
- 사용자와 가까이에 있는 Edge Location에 캐싱된 데이터가 있다면 요청에 맞는 데이터를 응답한다.
- 사용자가 요청한 데이터가 캐싱되어 있지 않은 경우 요청이 Origin Server로 포워딩된다.
- 요청한 데이터를 Origin Server에서 받아온 후 Edge Location에 캐싱한 후 사용자가 요청한 데이터를 응답한다.
Origin Server는 원본 데이터를 가지고 있는 서버로, AWS의 S3 버킷이나 EC2 Instance 등이 이에 해당한다. 전송할 수 있는 데이터는 HTML, CSS, Javscript 및 미디어 파일뿐만 아니라 HTTP 통신으로 전송할 수 있는 데이터라면 모두 가능하다.
Cache
Cloudfront를 사용하면 캐싱를 통해 Origin Server에서 직접 응답해야 하는 요청의 수를 줄일 수 있다. 사용자와 가까운 Edge Location에 요청에 대해서 캐싱된 데이터가 있으면 Edge Location에서 제공하기 때문이다. 이처럼 Origin Server에서 응답해야 하는 요청의 수가 줄어들면 Origin Server의 부하가 줄어들고 지연 시간을 단축시킬 수 있다는 장점이 있다. AWS는 또한 Origin Server에 요청하는 일이 가능한 적어지도록 Cloudfront를 최적화 할 수 있는 Cloudfront Origin Shield 도 제공하고 있으니 참고하면 좋을 것 같다.
Edge Location의 캐시에 데이터를 얼마나 보관할지 설정할 수도 있으며, 기본 TTL은 24시간, 최소 만료 시간은 0, 최대 만료 시간은 없다.