CDN이란 웹 콘텐츠를 세계 곳곳에 있는 여러 서버에 분산하여 저장하는 분산 서버 네트워크 시스템이다.

사용자가 웹사이트에 접속했을 때, 아래와 같은 일이 발생한다.
- DNS 서버는 사용자의 위치를 기준으로 가장 가까운 엣지 서버의 IP 주소를 반환
- 엣지 서버는 요청된 컨텐츠가 캐싱되어 있는지 확인, 없다면 오리진 서버에서 최신 컨텐츠를 가져온다
- 엣지 서버는 사용자에게 컨텐츠를 제공
CDN 무효화
엣지 서버와 오리진 서버의 정합성을 위해 캐시 무효화와 같이 CDN 또한 무효화 작업이 필요하다.
무효화한다고 해서 CDN에 새로운 컨텐츠를 넣는게 아니라 캐시를 삭제시켜 Cache MISS가 발생하도록 유도한다.
CDN 무효화 뿐만 아니라 Cache Busting / URL Versioning과 같은 방식으로도 관리한다.
URL Versioning은 아래와 같이URL에 버전을 명시하거나 hash값을 넣어 컨텐츠가 바뀔때마다 구분하는 방식이다.
/profile.jpg?v=2
app.b029fa2.js
혹은 HTTP 캐시를 활용하여 TTL 만료에 의해 자연스럽게 캐시가 무효화된다.
Cache-Control: public, max-age=3600CDN 도입 근거
국내 서비스여도 CDN을 사용할 수 있으며 우선 2가지를 기억하자.
- 정적 자원을 캐싱하여 Origin 서버나 스토리지의 부하를 줄일 수 있다.
- 글로벌 서비스로 확장하면 사용자와 가까운 Edge 서버에서 응답하여 지역별 Latency를 줄일 수 있다.
추가적으로 다음과 같은 이유로 CDN 도입을 고려할 수 있다.
- 정적 자원 요청이 많은 서비스에서는 CDN 캐싱을 통해 Origin의 요청 수와 데이터 전송량을 줄여 비용을 절감할 수 있다.
- 스토리지에 대한 직접 접근을 제한하고 CDN을 통해서만 접근하도록 구성하면 Origin을 외부 요청으로부터 보호할 수 있다.
