본문 바로가기
Infra, Cloud/AWS

[AWS] CloudFront

by 광진구뚝배기 2024. 3. 27.

시작하는 말

회사가 SaaS 전환을 시작하게 되면서, 다른 리전에서도 애플리케이션을 사용해야하는 상황이 발생했다. 이를 해결하기 위해 선택한 서비스가 바로 CloudFront 였다. 과거에는 단순히 공부할 때만 다루던 주제였지만, 실무 작업을 통해 실제로 사용하면서 완전히 이해하게 되었다. 이를 토대로 CloudFront에 대해 설명하려고 한다.

 

CloudFront 를 설명하기에 앞서, CDN 부터 간략히 설명을 하도록 하겠다.

 

CDN

 

Content Delivery Network (CDN)은 지리적 제약 없이 전 세계 사용자에게 빠르고 안전하게 콘텐츠를 전송하는 기술이다.

 

어떻게 다른 리전들에 애플리케이션을 배치하지 않고도 빠른 전송을 실현할 수 있는지 궁금해 CDN에 대해 알아보게 되었다. 그 해답은 바로 캐싱 원리였다.

 

CDN은 각 지역에 캐시 서버(PoP : Points of presence)를 분산 배치하여, 사용자의 요청을 받으 원본 서버가 아닌 근처에 위치한 캐시 서버가 콘텐츠를 전달하는 원리를 기반으로 동작한다.

 

프론트엔드 작업을 할 때, 제이쿼리와 같은 라이브러리를 링크 src로 불러온 적이 있을 것이다. 이는 바로 CDN 서비스를 활용한 예시인 것이다. CDN을 통해 웹페이지에서 필요한 라이브러리 파일을 전 세계적으로 분산된 캐시 서버에서 빠르게 가져올 수 있으며, 이로인해 웹 페이지의 로딩 속도가 향상되는 것이다.

 

AWS 에서 CloudFront 라는 제품이 나오기 이전, CDN을 제공하던 제품으로는  Akamai, Cloudflare등이 있다.

 

CloudFront

 

CloudFront는 AWS에서 제공하는 CDN 서비스로, 웹 콘텐츠를 사용자에게 빠르고 안정적으로 전달하는 웹 서비스이다. 이 서비스는 캐싱 기능을 통해 정적(.html, .css, .js 등) 및 동적 웹 콘텐츠를 사용자에게 제공하며, 전 세계 곳곳에 Edge Server를 배치하여 사용자에게 가장 가까운 서버에 데이터를 제공한다.

 

사용자의 요청이 발생하면 Edge Server에서 캐시된 컨텐츠를 전달하고, 필요시 Origin Server에서 컨텐츠를 가져와 캐싱한다. 이런 캐시된 콘텐츠는 일정 기간 동안 유효하며, 만약 정적 콘텐츠가 변경되었다면 이를 반영하기 위해 캐시를 다시 로드하거나 갱신해야한다.

 

또한, Regional Edge Cache 기능을 통해 리전 수준에서 캐시 기능을 제공하여 Origin Server와 Edge Server 사이에서 콘텐츠 요청을 최적화한다.

 

* Edge Server(=Edge Location) : CDN의 핵심 구성 요소 중 하나로, 사용자와 가장 가까운 위치에 배치된다.

  Origin Server : Edge Location에 캐싱된 콘텐츠를 가져오는 원본 서버다.

  Regional Edge Cache : 리전 수준의 캐싱 기능을 제공하는 것으로, Origin Server와 Edge Server 사이에 위치해 오리진에 요청을 줄인다.

 

트래픽 구성

 

# 헤더 기반 (Header-based)

특정 HTTP 요청의 헤더값을 기준으로 트래픽을 분산하는 방식이다. 사용자의 특정 속성이나 특징에 따라 트래픽을 라우팅할 수 있다. 예를들어 User-Agent(사용자 에이전트) 헤더를 기반으로 특정 디바이스 유형에 대한 요청을 처리하거나, 사용자가 원하는 언어 또는 지역에 따라 다른 콘텐츠를 제공할 수 있다.

 

# 경로 기반(Path-based)

요청된 URL 경로를 기준으로 트래픽을 분산하는 방식이다. 이는 서로 다른 경로에 대해 서로 다른 엔드포인트로 트래픽을 보내는데 사용한다. 경로기반 분배는 서비스의 다양한 요구 사항에 따라 다른 서비스 또는 콘텐츠를 제공하는데 유용하다. 실제로, 내가 결제서비스를 구축 개발 하는 업무를 맡았을 때, 웹훅 처리시에 북미와 한국에 대해 각각 찾아가야하는 경우가 생겨 난감한 적이 있었다. 이때 CloudFront를 사용하면 쉽게 해결이 되는 것이다.

 

# 가중치 기반(Weight-based)

다중 엔트포인트간 트래픽을 가중치에 따라 분산하는 방식이다. 각 엔듶인트에는 가중치가 할당되며, 해당 가중치에 따라 트래픽이 분배된다. 이는 서로 다른 엔드포인트 간에 트래픽을 균형있게 분산하거나, 특정 엔드포인트에 대한 트래픽을 우선적으로 처리하는데 사용된다.

 

 

참고자료

 

AWS 공식문서

https://somaz.tistory.com/184

반응형

'Infra, Cloud > AWS' 카테고리의 다른 글

[AWS] RDS 와 애플리케이션의 VPC 분리 이유  (0) 2024.04.13
[AWS] NLB - Network Load Balancer  (0) 2024.03.23
[AWS] ALB - Application Load Balancer  (0) 2024.03.19
AWS 서버 구축하기  (1) 2021.06.29

댓글