에듀테크 프로젝트 대시보드
CDN (콘텐츠 전송 네트워크)
유튜브 영상, 게임 패치, 웹사이트 이미지가 지구 반대편에서도 빠른 이유 · 엣지 서버 · 지연 시간 · 캐시 적중
인터넷의 데이터도 빛(전기 신호)의 속도를 넘지 못한다. 광섬유 안에서 신호는 대략 초속 20만 km로 이동하는데, 이건 "빠르다"기보다 1000 km마다 편도 약 5 ms가 무조건 더 붙는다는 뜻이다. 게다가 중간 라우터를 거칠 때마다 처리 지연이 쌓인다.
서울 사용자가 미국 버지니아의 서버에 접속하면 왕복(RTT)만 180~200 ms가 걸린다. 웹페이지 하나를 열 때 이미지·CSS·JS를 수십 번 주고받으므로, 이 왕복 지연이 그대로 몇 배로 곱해져 체감 속도를 망친다. 서버를 사용자 근처로 옮기는 것이 가장 확실한 해결책이고, 그걸 대신 해주는 것이 CDN이다.
지도의 주황색 점(엣지 서버)을 눌러 사용자 위치를 바꿔보자. "요청 보내기"를 누르면 패킷이 이동하는 경로와 캐시 HIT/MISS, 그리고 실제 걸린 시간이 표시된다. CDN을 꺼보면 매번 원본까지 갔다 오는 차이를 볼 수 있다.
사용자를 근처 엣지로 보내는 방법(GSLB, Global Server Load Balancing)은 크게 두 가지다.
| 방식 | 동작 | 특징 |
|---|---|---|
| DNS 기반 | cdn.example.com을 조회하면, CDN의 DNS 서버가 요청자 위치에 따라 다른 엣지 IP를 응답 |
구현이 간단하지만, DNS 캐시·리졸버 위치 때문에 정확도가 떨어질 수 있음 |
| Anycast | 같은 IP 주소를 전 세계 여러 엣지가 동시에 광고(BGP). 라우팅이 알아서 가장 가까운 곳으로 보냄 | 장애 시 자동 우회, 매우 빠른 전환. Cloudflare·Google이 주로 사용 |
엣지 서버는 콘텐츠를 영원히 갖고 있지 않는다. 각 응답에는 유효 기간(Cache-Control: max-age = TTL)이 붙는다.
정적 파일(이미지, JS, 폰트, 동영상 조각)은 잘 안 바뀌므로 TTL을 길게 줘서 적중률을 높인다.
자주 바뀌는 HTML은 TTL을 짧게 주거나, 바뀔 때 파일 이름에 해시를 넣어(app.9f3c1a.js) 새 URL로 만든다.
# 엣지가 사용자에게 돌려준 응답 헤더 예시 HTTP/2 200 content-type: image/webp cache-control: public, max-age=31536000, immutable # 1년, 안 바뀜 age: 84213 # 엣지가 이 복사본을 가진 지 84213초 x-cache: HIT # 원본까지 안 갔다! (MISS면 원본 왕복 발생) x-served-by: edge-icn-seoul-3 # 서울 엣지가 응답
사용자 근처 응답으로 지연 시간 감소. 원본 서버는 "MISS일 때만" 일하므로 트래픽 폭주(플래시 크라우드)에도 버틴다.
수백 개 엣지가 공격 트래픽을 나눠 흡수한다. 원본 IP를 숨기고, 엣지에서 악성 요청을 걸러낸다.
원본에서 나가는 트래픽(비싼 egress)이 캐시 적중률만큼 줄어든다. 적중률 95%면 원본 대역폭은 1/20.
요즘 CDN은 엣지에서 작은 코드(이미지 리사이즈, A/B 테스트, 인증)까지 실행한다. 로직도 사용자 곁으로.