[AWS/Docker] AWS CloudFront

Hyo Kyun Lee·2022년 7월 19일
0

AWS/Docker

목록 보기
13/20
post-custom-banner

1. CloudFront

Content Delivery Network, cdn이라고도 한다.
데이터 요청이 들어왔을때, 해당 요청에서 가장 가까운 곳에서 미리 저장한 컨텐츠를 응답하는 과정이다. 데이터 전송 속도가 그만큼 빨라진다.

이 CloudFront를 이해하는데 가장 필요한 개념은 Cache와 CDN이고, CloudFront 기술을 구현하는데 핵심적으로 사용되는 개념이기도 하다.

2. Cache

기본적으로 웹 페이지 응답은 정적 웹페이지를 응답하는 Web server, 사용자 요청에 따른 동적 웹페이지를 응답하는 Servlet level의 백엔드(Spring에서는 Servlet Container)를 통해 이루어진다.

그러나 Application 구조상 반드시 백엔드를 거친 동적 웹페이지 응답 절차를 통해 response가 이루어지며, 응답시 많은 시간이 소요될 수 있는 구조이다.

그러나, 사용자가 요청이 별로 없거나 동적인 페이지 구성이 없다면 이를 "캐싱"하여 훨씬 더 빠른 응답을 할 수 있도록 구성할 수 있다.
→ 이러한 캐싱(컨텐츠 저장)만을 담당하는 server를 Cache server라 한다.

즉, 컨텐츠 응답 후, 해당 컨텐츠를 일시적으로 보관하여 재요청시 저장된 결과를 전송하여 매우 빠른 응답을 할 수 있도록 한다.

3. CDN

Content Delivery Network, AWS CloudFront 서비스의 핵심 요소 중 하나이다.

우리가 클라우드 컴퓨터의 Region을 서울로 지정하였다면, 해당 서버나 데이터, 파일 등은 기본적으로 서울 Region의 데이터 센터에 보관되어 있을 것이다.

자연스럽게 다른 지역(미국, 영국 등 다른 국가)에서 들어오는 요청들을 해당 데이터 센터 근처(서울 Region)의 컴퓨터가 담당할텐데, 물리적 거리가 엄청나므로 응답까지 소요시간이 매우 길어질 수 있다.

이때 Content Delivery Network를 통해, 요청이 이루어진 가장 가까운 컴퓨터 및 데이터 센터에서 응답을 하게 하여, 응답속도를 개선할 수 있다.

4-1. CloudFront 적용 후의 응답 과정

기존 서버(Origin)가 가지고 있는 데이터나 응답, 컨텐츠 등은 CloudFront에게 분산되어 저장된다.

최초 발생한 Client의 모든 요청은 CloudFront를 거쳐 Origin에게 전달되는데, Origin의 응답이 다시 CloudFront를 거쳐 Client에게 최종적으로 전달된다.

이때 해당 data가 CloudFront에 저장이 되는 것이고, 이 CloudFront는 전세계적으로 분포하고 있기 때문에 Distribution으로 명명하고 있다.

4-2. CloudFront 적용 시 문제점

CloudFront는 origin data 변경시 반영하는 시간이 꽤 오래 걸린다.

따라서 속도 측면에서는 빨라졌지만, 최종적으로 CloudFront가 origin data를 실시간으로 반영할 수 있도록 Caching 조치(=Cache Control)가 반드시 필요하다.

5. Cache control

기본적으로 CloudFront 사용시, 웹 서버를 거치지 않고 바로 CloudFront 서버에서만 전송-응답이 이루어지기 때문에 일정 시간 이후에 Origin과 Distribution이 소통할 수 있는 명령을 기재해주어야 한다.

  • object caching, cache-control : max-age = 60(해당 시간동안 캐싱 지속 유지
    → 이에 대한 정보를 view의 header 정보에 기재하여 전송한다.
    → cache invalidation, cache 정보가 없으면 origin가 다시 소통을 하여 data를 다시 받는(refresh, 재반영) 과정을 하는 원리를 이용한다.

※ Web browser에서 cache 사용시 FrontCloud도 거치지 않고, web에 저장되어있는 cache만 거칠 수 있다. 이 경우, TTL 설정(cache를 live할 시간)을 통해 FrontCloud cache를 반드시 거치도록 구성이 가능하다.

6. CDN Control

client가 응답받을때, 접속하는 server 및 클라우드 컴퓨터와의 물리적 거리에 상관없이 항상 빠르게 응답을 받을 수 있도록 설정하는 핵심 요소가 바로 CDN이다.

7. 참고자료

생활코딩 - CloudFront
https://www.inflearn.com/course/aws-2/unit/16286?tab=curriculum

post-custom-banner

0개의 댓글