CDN은 웹 콘텐츠 로드/배포 시 지연을 최소화하기 위해 사용하는 분산된 서버의 그룹이다. 프록시 서버에 웹 페이지, 이미지 등과 같은 콘텐츠를 복사해 캐싱해 놓고 사용자의 요청 시 해당 사용자에게 물리적으로 가까운 서버에서 콘텐츠를 제공하는 형태로 운영된다. 웹 상 다양한 미디어 콘텐츠가 공유되면서 CDN의 중요성이 대두되기 시작했다.
CDN은 ATM과도 같은 개념으로 생각할 수 있다. 출금을 원할 때마다 사용자들이 은행을 방문하는 수고를 덜어주기 위해 은행은 도시 곳곳에 ATM을 설치한다. 이제 사용자들은 자신의 집에서 먼 은행 대신 바로 길 건너 모퉁이의 ATM기만 찾아가면 언제든지
이번에는 실제 사례로 CDN의 작동 방식을 이해해보자. 부산의 사용자가 영국에 서버를 둔 웹사이트를 방문했다고 가정하자. 해당 웹사이트에서 비디오와 같은 콘텐츠를 로드하기 위해서는 먼저 요청을 전송하고 응답을 받아야 하는데, 이러한 소통은 말 그대로 바다를 건너서 이루어지는 것이라 속도가 느릴 수밖에 없다. 만약 웹사이트 측에서 영국 서버의 콘텐츠들을 전세계 곳곳의 서버에 캐싱해놓았다면 사용자는 영국보다 훨씬 가까운 곳에서 콘텐츠를 받을 수 있고, 따라서 콘텐츠에 훨씬 빠르게 접근할 수 있다. 이렇게 서버들을 분산해서 위치시킨 곳들을 PoP(Points of Presence)라고 부른다.
CDN을 사용하지 않을 때는 서버와의 물리적 거리가 늘어날 수록 시간 지연이 증가하는 모습을 보인다.
CDN을 사용할 경우 사용자의 요청은 글로벌 서버 로드 밸런서라는 글로벌 레벨의 DNS 서비스가 CDN의 DNS 서버 중 하나로 전달된다. 글로벌 서버 로드 밸런서는 최고 성능을 낼 수 있는 CDN 프록시 서버, 즉, 엣지(Edge) 주소를 선택하여 요청을 전달한다.
이후 사용자는 해당 엣지에 HTTP 요청을 하고, 엣지 서버는 사용자가 원하는 콘텐츠가 자신이 이미 가지고 있는지 확인한다. 만약 캐싱된 콘텐츠가 있다면 사용자에게 바로 넘겨주고, 그렇지 않다면 먼저 같은 region 그룹의 엣지 서버에 해당 콘텐츠가 있는지 묻는 메세지를 전송한다. 이때도 콘텐츠를 전달 받지 못한다면 원본 서버(Origin Server)에 요청을 전송하여 사용자에게 콘텐츠를 전달해준다. 주의할 점은 CDN은 주로 정적 콘텐츠 전달에 특화되어 있다는 것이다. 정적 콘텐츠는 누가 언제 요청을 하든 내용이 변하지 않는 콘텐츠를 일컫는다. 이미지, CSS 파일, 자바스크립트 라이브러리, 비디오, 정적 HTML 페이지 등이 대표적인 예이다. 동적 콘텐츠의 경우 엣지 서버는
그런데 엣지 서버에 캐싱된 웹 콘텐츠가 콘텐츠의 가장 최신 버전과 일치함을 어떻게 보증할까? 이 문제를 해결하기 위하여 CDN은 TTL(Time-to-Live) 개념을 도입하였다. TTL값은 캐싱된 콘텐츠가 얼마나 오랫동안 서버에 머물 수 있는지를 결정한다. 다만 TTL값은 캐싱된 콘텐츠가 최신 버전과 같다고 항상 보장하지는 않는다. TTL값은 캐싱된 콘텐츠를 최신 버전이라고 상정할 기간을 임의로 지정한 값이기 때문이다. 또한, TTL값이 지나지 않아도 콘텐츠에 대한 요청 불충분 등의 이유로 콘텐츠가 캐시에서 탈락하는 경우도 있다.
해당 화면은 레딧 웹 어플리케이션 화면으로, 화면의 에러 메세지는 레딧의 CDN 서버가 모종의 이유로 원본 서버에 접근하지 못하여 콘텐츠를 로드하지 못한 상황을 보여준다.
웹 페이지, 이미지 등 콘텐츠에 대한 웹 사용자들의 수요가 폭발적으로 증가하여 CDN의 필요성이 대두하였다. 이후 Netflix 등 주문형 비디오 서비스의 성장으로 CDN에 대한 관심이 더욱 증가하게 되었다. 현재 비디오 스트리밍 사이트, 전자 상거래 플랫폼 등 다양한 호스트들이 CDN을 이용하여 사용자들에게 자사의 콘텐츠를 전달하고 있다.
현재 AWS, GCP 등 클라우드 서비스들은 자신들이 이미 보유한 글로벌 네트워크 인프라를 활용하여 클라우드 CDN를 제공하고 있다. 유명한 서비스로는 AWS의 CloudFront, 구글의 Google Cloud CDN 등이 있다.
장점
단점
proxy server, global server load balancer, edge server, caching
참고 사이트
https://www.cdnetworks.com/ko/what-is
https://www.cloudflare.com/ko-kr/learning/cdn/how-cdns-reduce-bandwidth-cost/https://www.akamai.com/glossary/what-is
https://www.reddit.com/r/explainlikeimfive/comments/2jdzdw
https://www.reddit.com/r/webdev/comments/qk39tv/
https://stackoverflow.com/questions/42865428/do-akamai-edge-servers-share-cached-content-or-go-to-
https://www.cloudflare.com/ko-kr/learning/cdn/glossary/time-to-live-ttl/
https://www.linkedin.com/advice/1/what-benefits-drawbacks-using-cdn-web-performance-skills-web-design#:~:text=Drawbacks of a CDN&text=A CDN can be expensive,overage fees%2C and minimum commitments.