거리가 곧 지연이다
데이터도 물리 법칙을 따릅니다. 서울에 있는 사용자가 미국에 있는 서버에 직접 접속하면, 요청과 응답이 태평양을 왕복하는 동안 빛의 속도로도 어쩔 수 없는 지연이 쌓입니다. 거리가 멀수록 이 지연은 커지고, 거치는 네트워크 장비가 많을수록 더해집니다. CDN(Content Delivery Network)은 콘텐츠의 사본을 사용자와 가까운 곳에 미리 가져다 두어 이 물리적 거리를 줄이는 기술입니다.
방식은 단순하면서도 강력합니다. 전 세계 곳곳에 엣지 서버라 부르는 거점을 두고, 그곳에 콘텐츠를 복제해둡니다. 사용자가 무언가를 요청하면 멀리 있는 원본 서버 대신 가장 가까운 엣지가 응답합니다. 한국 사용자는 한국이나 인근의 엣지에서, 유럽 사용자는 유럽의 엣지에서 같은 콘텐츠를 받는 식입니다. 거리가 짧아진 만큼 응답이 빨라집니다.
캐싱이 작동하는 방식
CDN의 핵심은 캐시입니다. 처음 어떤 콘텐츠에 대한 요청이 들어오면, 엣지 서버는 아직 사본이 없으므로 원본 서버(오리진)에서 가져와 사용자에게 전달하면서 동시에 자기 저장소에 보관합니다. 그다음부터 같은 콘텐츠를 찾는 요청은 오리진까지 갈 필요 없이 엣지에서 곧바로 응답합니다.
캐시 히트와 미스
요청한 콘텐츠가 엣지에 이미 있어 바로 응답할 수 있으면 캐시 히트, 없어서 오리진까지 다녀와야 하면 캐시 미스라고 합니다. 히트 비율이 높을수록 사용자는 빠르게 받고 오리진은 한가해집니다. 그래서 CDN 운영의 상당 부분은 이 히트 비율을 끌어올리는 데 집중됩니다. 어떤 콘텐츠를 얼마나 오래 캐시에 둘지 정하는 규칙이 그 성패를 가릅니다.
정적 콘텐츠와 동적 콘텐츠
이미지, CSS, 자바스크립트 파일처럼 한번 만들면 잘 바뀌지 않는 정적 콘텐츠는 캐싱 효과가 큽니다. 누구에게나 같은 내용을 주면 되니 한 번 받아두면 오래 재사용할 수 있습니다. 반대로 로그인한 사용자마다 다르게 보이는 동적 콘텐츠는 캐싱이 까다롭습니다. 그래서 최근에는 엣지에서 간단한 로직을 직접 실행해 동적 콘텐츠 일부를 사용자 가까이서 만들어내는 방식으로 이 한계를 넘으려 합니다.
속도 외의 이점들
CDN은 단순히 빠르게만 만들어주는 도구가 아닙니다. 운영 전반에 여러 이점을 더합니다.
오리진 부하 감소
엣지가 요청의 상당수를 대신 받아내므로, 오리진 서버가 직접 처리하는 트래픽이 크게 줄어듭니다. 같은 규모의 사용자를 더 적은 서버 자원으로 감당할 수 있게 되고, 갑작스러운 트래픽 폭증에도 오리진이 직격탄을 맞지 않습니다. 비용과 안정성을 동시에 얻는 셈입니다.
전송량 최적화
CDN은 파일을 압축하고, 코드에서 불필요한 공백과 주석을 제거하며, 이미지를 적절한 형식으로 바꾸는 등 실제로 오가는 데이터 양 자체를 줄입니다. 같은 콘텐츠라도 더 작게 만들어 보내면 그만큼 전송 시간이 짧아집니다. 모바일이나 느린 회선에서는 이 차이가 특히 크게 체감됩니다.
요청이 엣지로 향하는 과정
사용자의 요청이 어떻게 가까운 엣지로 향하는지는 그 자체로 흥미로운 설계입니다. 핵심은 애니캐스트라는 방식입니다. 전 세계의 여러 엣지 서버가 같은 IP 주소를 공유하고, 네트워크가 사용자에게서 가장 가까운 엣지로 알아서 요청을 흘려보냅니다. 사용자는 하나의 주소로 접속할 뿐인데, 실제로는 자신과 가장 가까운 거점에 닿게 됩니다.
이 구조 덕분에 사용자는 어디서 접속하든 별도 설정 없이 최적의 경로를 탑니다. 또 특정 엣지가 과부하거나 장애를 일으키면 네트워크가 자연스럽게 다음으로 가까운 엣지로 요청을 우회시킵니다. 주소 하나로 전 세계를 덮으면서도 유연하게 흐름을 바꿀 수 있다는 점이 애니캐스트의 강점입니다.
캐시는 얼마나 오래 두는가
엣지가 콘텐츠를 얼마나 오래 보관할지는 만료 규칙으로 정합니다. 너무 오래 두면 원본이 바뀌었는데도 옛 사본을 계속 내보낼 위험이 있고, 너무 짧게 두면 자꾸 오리진에 다시 물어보느라 캐싱 효과가 줄어듭니다. 그래서 자주 바뀌지 않는 파일은 길게, 수시로 갱신되는 콘텐츠는 짧게 잡는 식으로 콘텐츠 성격에 맞춰 조절합니다. 원본이 갱신되면 기존 사본을 강제로 비우는 무효화 기능도 함께 씁니다.
오리진을 지키는 방패
CDN은 사용자에게 빠른 응답을 주는 동시에, 원본 서버를 외부로부터 가리는 방패 역할도 합니다. 사용자는 엣지하고만 통신하고 오리진의 실제 주소는 드러나지 않으므로, 공격자가 원본을 직접 겨냥하기가 어려워집니다. 엣지가 앞에서 모든 요청을 받아내며 원본을 한 겹 숨겨주는 셈입니다.
이 구조는 운영에도 여유를 줍니다. 원본 서버를 점검하거나 교체하는 동안에도 엣지에 캐시된 콘텐츠는 계속 제공되므로, 사용자는 그 변경을 거의 느끼지 못합니다. 앞단이 충격을 흡수해주는 덕분에 뒷단을 더 자유롭게 다룰 수 있게 되는 것입니다.
가용성과 공격 방어
콘텐츠가 여러 데이터센터에 흩어져 있다는 사실 자체가 강력한 안전장치입니다. 한 엣지가 장애를 일으켜도 다른 엣지가 요청을 받아내므로 서비스가 쉽게 끊기지 않습니다. 또한 트래픽이 여러 지점으로 분산되는 트래픽 분산 구조 덕분에, 한곳을 겨냥한 대규모 공격 트래픽도 여러 거점으로 흩어져 흡수됩니다.
이 분산 흡수 능력은 공격 방어의 핵심 무기가 됩니다. 한 서버를 마비시키려는 트래픽이 전 세계 엣지로 나뉘어 들어오면, 그 충격이 분산되어 어느 한 곳도 무너뜨리기 어려워집니다. 이 원리는 DDoS 완화 전략에서 다시 핵심 방어선으로 다룹니다. CDN의 신뢰성 메커니즘은 Cloudflare Learning의 CDN 개요 문서에 정리돼 있습니다.