CDN은 무엇일까?
CDN?
Contents Delivery Network는 분산된 서비스 환경에서 인터넷 컨텐츠를 빠르게 전달해 주기 위해 사용하며, 여기에는 HTML, Javascript 파일, 이미지, 비디오 등의 메타컨텐츠가 포함된다.
CDN은 분산된 다수의 서버로 구성될 수 있으며, 보통 특별한 로직이 필요치 않기 때문에 필요한 메타 컨텐츠들을 저장 및 캐싱하여 서버에 접속하는 사용자들에게 빠르게 컨텐츠를 전달해 줄 수 있다. 최근에는 OTT와 같은 영상 스트리밍 컨텐츠에 적용하여 부하 분산 및 서버로부터의 빠른 컨텐츠 제공 등의 이유로 CDN이 사용되고 있다.

CDN의 동작 방식
Static Caching(Push 방식)
원본 서버가 새로 업데이트되는 컨텐츠를 서비스 제공자가 원하는 시점에 모든 CDN 서버로 전송한다. 따라서 CDN은 항상 서비스 제공자가 정의한 최신 컨텐츠를 제공할 수 있으며 이 과정에서의 오류 감지 및 대응이 쉬우며, CDN을 유지하기 위해 자동화 작업 또한 구축하기 쉽다.
Dynamic Caching(Pull 방식)
CDN 노드는 컨텐츠를 항상 보관하고 있지 않으며, 항상 최신 버전의 데이터를 가지고 있지 않는다. CDN서버에 설정된 조건(별도의 유저 요청 혹은 cronjob 등)이 CDN 노드에서 발동되면 원본 서버에서부터 CDN 컨텐츠를 다운로드하여 저장하고 유저에게 서빙한다. 이 데이터는 일정 시간 후에는 삭제되기도 한다. 때문에 시간적 문제로 인하여 최신 컨텐츠를 제공하지 않는 CDN 노드가 생길 수 있으며, 이를 위한 감지 작업을 위해 별도의 인프라를 구축하여야 한다.
VS Web Hosting
CDN은 웹 호스팅이 아니다. CDN은 웹 호스팅에서의 컨텐츠의 캐싱 및 전달의 역할을 수행한다.
웹 호스팅 서비스는 특정 IDC 혹은 서버 클러스터에 묶여 있다. 하지만 CDN은 필요에 따라 다른 국가, 다른 IDC, 클라우드 인프라에 올라갈 수 있으며 필요로 하는 수에 따라 CDN 노드의 증감이 있을 수 있다.
CDN을 사용함으로서 웹 호스팅 서비스에 부담되는 부하를 줄일 수 있으며, 실제 유저들이 더 빠르게 컨텐츠를 다운로드할 수 있다. 물리적 거리가 가장 가까운 CDN에서 데이터를 다운로드하는 만큼 실제 유저가 체감하는 컨텐츠 로딩 속도를 개선할 수 있다.
또한 서비스 제공을 위한 웹 서버와 분리되어 있기 때문에 DDos와 같은 공격에서부터 웹 호스팅 서버를 보호할 수 있다.