본문 바로가기
AWS

AWS CloudFront

by PudgeKim 2022. 6. 27.

CloudFront는 기본적으로 Cache서버의 기능을 합니다. 그런데 이 Cache 서버가 전세계에 퍼져있기 때문에 CDN의 기능도 한다고 볼 수 있습니다.

간단한 예를 들면 제가 운영하는 서버가 미국 아마존 서버에 위치해 있다고 가정해보겠습니다.

그럼 서울에 있는 유저들은 물리적인 거리때문에 응답시간이 지연될 것입니다. 서울에서 접속하는 유저들이 소수라면 굳이 비용을 지불하면서까지 서울쪽에 Cache 서버를 두지는 않을 것입니다. 그러나 서울을 포함해 아시아지역에서 많은 유저들이 생겨난다면 이 때 CloudFront를 이용하여 아시아 지역에 Cache 서버를 두면 최초 접속시에는 미국 서버로부터 응답을 받겠지만 이후에는 가까운 Cache서버로부터 응답을 받을 가능성이 높아져서 보다 빠른 응답을 받을 수 있습니다.

 

그럼 CloudFront를 이용한 규모 있는 트래픽을 처리하기 위한 아키텍쳐를 알아보겠습니다.

로드밸런서가 위치해 있는 경우 CloudFront는 로드밸런서 뒤에 위치하게 됩니다.

아래 같은 그림을 띄게 됩니다. (로드밸런서의 경우 아래 해당 링크를 참고) https://up-to-date-items.tistory.com/251

 

다음은 AWS상에서 CloudFront를 이용할 때 몇가지 중요한 점을 알아보겠습니다.

 

1. AWS의 Route 53을 사용한 경우

도메인을 얻기 위해 AWS의 Route 53 서비스를 사용한 경우 Route 53의 레코드를 편집하여 라우팅 대상을 변경해주어야 합니다.

예를 들어 CloudFront를 도입하기 전에 Route 53과 로드밸런서를 연결시켜준 상태였다고 가정해봅시다. CloudFront를 도입하게 되면 CloudFront의 위치는 Route 53과 로드밸런서 사이에 위치하게 되므로 Route 53에서 특정 도메인으로 유저가 요청했을 때 해당 요청을 CloudFront로 전달해주도록 바꾸어야합니다.

Route 53 설정에서 레코드 편집으로 들어가서 위 그림에서 빨간줄이 그어진 CloudFront 배포에 대한 별칭으로 바꾸어 주어야합니다.

(이후 CloudFront를 로드밸런서와 연결시켜주어야겠죠?)

 

 

2. TTL 설정 관련

CloudFront에서는 TTL을 따로 설정해줄 수 있습니다.

각 TTL의 의미를 알아보겠습니다.

먼저 Default TTL은 캐시를 적용할 시간을 나타냅니다. 예를 들어 Default TTL을 10초로 두었다면 유저는 10초 동안은 원래 서버에 요청하는 대신 캐시된 데이터를 응답받게 됩니다. (즉, 10초 동안은 해당 데이터에 변경이 일어나도 유저가 캐시된 데이터를 응답 받았다면 데이터의 변화를 알아차리지 못합니다.)

 

Minimum TTL과 Maximum TTL은 자신이 운영하는 서버코드에 TTL을 따로 적용시켜주었을 때 사용됩니다.

예를 들어 자신이 작성한 코드에 TTL을 3초로 지정하고, AWS CloudFront상에서 Minimum TTL을 5초로 지정했다면 TTL은 5초로 적용됩니다. 

코드에 TTL을 30초로 지정하고 CloudFront상에서 MaximumTTL을 20초로 지정했다면 TTL은 20초로 적용됩니다.

코드에 적용한 TTL이 CloudFront의 Minimum TTL과 Maximum TTL 사이에 있다면 코드에 적용한 TTL이 그대로 적용됩니다.

 

 

3. HTTPS를 사용한 경우 CloudFront에도 HTTPS를 설정해주어야합니다.

운영하는 서버가 HTTPS를 사용하는 경우 AWS Certificate Manager에서 발급받은 인증서를 토대로 CloudFront에도 HTTPS를 적용시켜주는 것을 잊지말아야합니다.

'AWS' 카테고리의 다른 글

AWS Lambda 개념  (0) 2022.07.03
AWS KMS  (0) 2022.06.29
AWS Fargate을 활용한 배포 흐름#1  (0) 2022.06.27
AWS 로드밸런서  (0) 2022.06.26
[AWS VPC] Private Subnet에서 외부 접속을 하는 원리  (0) 2022.06.21