🌍
CDN(콘텐츠 전송 네트워크)이란
전 세계 여러 지역에 콘텐츠 사본을 저장해두고, 이용자와 지리적으로 가장 가까운 서버에서 콘텐츠를 전달하는 분산 서버 네트워크입니다.
원본 서버(오리진)가 미국에 한 대만 있다면 한국 이용자의 요청도 태평양을 건너 왕복해야 해서 느립니다. CDN은 이미지, 동영상, CSS·JS 파일처럼 자주 바뀌지 않는 콘텐츠의 사본을 세계 각지의 "엣지 서버"에 미리 뿌려두고, 이용자의 요청이 오면 가장 가까운 엣지 서버가 대신 응답해 지연시간을 크게 줄여줍니다.
🏢
오리진 서버와 엣지 서버
실제 콘텐츠가 처음 만들어지는 원본 서버를 오리진, 이용자와 가까운 곳에서 사본을 제공하는 서버를 엣지(PoP)라고 부릅니다.
이용자의 요청이 엣지 서버에 도착했을 때 원하는 콘텐츠 사본이 이미 저장(캐시)되어 있으면 "캐시 히트"로 즉시 응답하고, 없으면 "캐시 미스"로 오리진 서버까지 요청을 전달해 콘텐츠를 가져온 뒤 이후 요청을 위해 엣지에도 저장해둡니다. 전 세계에 흩어진 이 엣지 서버들의 위치를 흔히 PoP(Point of Presence)라고 부릅니다.
⚡
CDN을 쓰는 이유
로딩 속도 개선뿐 아니라, 트래픽이 특정 서버에 몰리는 것을 분산시키고 대규모 DDoS 공격을 흡수하는 방패 역할도 합니다.
속도 면에서는 물리적 거리가 줄어 왕복시간(RTT)이 짧아지고, 안정성 면에서는 갑작스러운 트래픽 폭증(플래시 크라우드)이나 DDoS 공격을 오리진 서버 대신 CDN의 대규모 엣지 네트워크가 먼저 받아 흡수해줍니다. 결과적으로 오리진 서버의 부하와 대역폭 비용도 함께 줄어드는 효과가 있습니다.
🔄
정적 콘텐츠와 동적 콘텐츠 캐싱의 차이
이미지·동영상·CSS 같은 정적 콘텐츠는 캐싱 효과가 크지만, 개인화된 동적 콘텐츠는 캐싱이 까다롭습니다.
로그인 상태나 사용자마다 달라지는 페이지는 그대로 캐싱하면 다른 사람의 정보가 노출될 위험이 있어, CDN은 응답 헤더의 캐시 정책(Cache-Control 등)을 보고 캐싱 여부와 유지 시간을 판단합니다. 최근에는 엣지 서버에서 가벼운 코드를 직접 실행하는 "엣지 컴퓨팅" 기능으로 일부 동적 처리까지 CDN 단에서 처리하는 경우도 늘고 있습니다.
🗑️
캐시 무효화(퍼지)
원본 콘텐츠가 바뀌었는데 엣지 서버에 옛날 사본이 남아있는 문제를 해결하기 위한 것이 캐시 무효화(퍼지) 기능입니다.
웹사이트 로고를 새로 바꿨는데도 방문자에게 예전 로고가 계속 보인다면 CDN 캐시가 아직 갱신되지 않았을 가능성이 큽니다. 이럴 때 CDN 관리 콘솔에서 특정 파일이나 전체 캐시를 강제로 삭제(퍼지)하면, 다음 요청부터 엣지 서버가 오리진에서 새 콘텐츠를 다시 받아와 저장합니다. 파일명에 버전 번호를 붙이는 방식으로 무효화 없이 새 버전을 바로 배포하는 기법도 널리 쓰입니다.
🧭
가장 가까운 서버를 찾는 원리 (Anycast)
전 세계 여러 대의 서버가 같은 IP 주소를 공유하는 애니캐스트(Anycast) 라우팅 덕분에, 이용자의 요청은 자동으로 네트워크상 가장 가까운 서버로 전달됩니다.
일반적인 인터넷 주소(유니캐스트)는 하나의 IP가 하나의 서버를 가리키지만, 애니캐스트는 여러 지역의 서버가 동일한 IP를 광고하고 라우터들이 최단 경로를 계산해 자동으로 가장 가까운 서버로 트래픽을 보내줍니다. 이 덕분에 이용자는 별도 설정 없이도 항상 가까운 CDN 서버에 연결됩니다.