CDN(Content Delivery Network & Content Distribution Network)이란?
- Content(이하 컨텐츠)를 효율적으로 전달하기 위해 여러 노드를 가진 네트워크에 데이터를 저장하여 제공하는 시스템
- 지리, 물리적으로 떨어져 있는 사용자에게 컨텐츠를 더 빠르게 제공할 수 있는 기술
- 느린 응답속도 / 다운로딩 타임을 극복하기 위한 기술
- 컨텐츠를 배포하기 위한 최적화된 네트워크
- 컨텐츠 딜리버리 서버 웹 페이지가 현재 어디에서 불려지는지, 웹 페이지를 불러오려고 하는 사용자가 어디에 거주하는지에 근거하여 컨텐츠 웹 페이지에 딜리버리해주는 분산 네트워크
- 컨텐츠 서버를 중심으로 여러 곳에 분산 배치한 서버를 통해 효율적으로 컨텐츠를 배포하는 구조

온라인 게임의 경우 OBT나 정식 서비스 시작 시점에 클라이언트 다운로드 수요가 급격히 증가한다.
CDN이 없을 경우 하나의 서버에 많은 유저들이 동시간대에 몰리게 되 다운로드 속도가 급격히 감소하거나 심한경우 서버다운이 발생하기도 한다.
CDN을 통해 부하 현상을 막을 수 있다.
예를 들어 서울에 rebitly.com 서버가 있다.
미국에서 이 컨텐츠를 이용하기 위해서는 약 10,000KM를 이동하여 컨텐츠를 배포해야 한다.
이때 미국에서 컨텐츠 서버를 배치한다면 직접 컨텐츠를 제공받을 수 있다.
CDN의 작동 원리
- 최초 요청은 서버로부터 컨텐츠를 가져와 고객에게 전송하며 동시에 CDN 캐싱 장비에 저장한다.
- 두번째 이후 모든 요청은 CDN캐싱장비의 컨텐츠 만료 시점까지 저장된 컨텐츠를 전송한다.
CDN 장점
- 웹사이트 로딩 속도 개선
- 인터넷 회선 비용 절감
- 컨텐츠 제공의 안정성
- 웹사이트 보안 개선
CDN을 사용하지 않는다면?
- 컨텐츠를 담고 있는 Origin Server(이하 오리진 서버)들은 모든 사용자의 요청에 일일이 응답해야 한다.
- 이는 막대한 트래픽을 유발하고
- 트래픽이 과도하게 증가하거나 부하가 끊임없이 들어오는 경우 장애가 발생할 확률도 크다.
CDN을 사용한다면?
- 서버의 트래픽 부하 및 비용을 줄이고
- 사용자에게 빠른 서비스 제공도 가능하다.
- 장애 확률도 낮춰 줄 수 있으며
- 장애 발생 시 연결된 다른 CacheServer (이하 캐시 서버)를 통해 서비스 제공이 가능하다.

CloudFront 란?
- AWS에서 제공하는 CDN 서비스
- 전 세계에 배치된 Edge location(엣지 로케이션)을 이용하여 효율적인 컨텐츠 배포 구조를 제공하는 것
- 전세계 AWS 각 리전의 로케이션에 리소스의 복사본을 미리 로드해놓고, 사용자들이 짧은 지연 시간에 파일을 받을 수 있도록 해줌

용어 정리
-
Edge Location (엣지 로케이션) : 컨텐츠들이 캐시(Cache)에 보관되는 장소
-
전세계 각 지역마다 설치되어 있는 서버의 컬렉션 개념으로 컨텐츠 내용을 캐시에 저장하여 보관된 내용을사용자에게 뿌려주는 기능을 하는 서버이다.
예를 들어 은행을 가지 않고 ATM 기계를 통해 인출 가능한 것과 마찬가지
-
처음 웹사이트에 접속 시 캐시에 들어있지 않다면 Edge Location과 웹사이트 호스팅 즉 Origin 과 정보를 주고 받은 후 정보를 엣지 로케이션 캐시에 넣고 유저들에게 컨텐츠를 제공한다. 컨텐츠는 캐시에 들어 있기 때문에 사용자가 똑같은 웹사이트 방문시 더 이상 오리진이 아니라 엣지 로케이션에서 뿌려지게 되므로 latency는 줄고 안전하다. 하지만 캐시는 영구적이지 않다.
-
Origin (오리진) : 원래 컨텐츠가 들어있는 곳, 웹 서버가 호스팅되어지는 곳.
- S3, EC2인스턴스 등이 오리진이 될 수 있음. 물리적 지역
-
Distribution (분산) : CDN에서 사용되며, Edge Location들을 묶고 있다는 개념