CDN(콘텐츠 전송 네트워크)은 Content Delievery Network 약자로 지리적 제약 없이 전세계 사용자에게 빠르고 안전하게 컨텐츠를 전송 하는 기술입니다. CDN을 사용하면 HTML 페이지, 스타일시트, JavaScript등 콘텐츠를 로드하는데 필요한 자산을 빠르게 전송할 수 있습니다.
- 웹사이트 로드 시간 개선
사용자와 가장 가까운 CDN서버에서 콘텐츠를 제공하므로 웹사이트 로드시간이 빨라지게 됩니다. - 대역폭 비용 절감
웹사이트 호스팅용 대역폭 소비비용은 웹사이트를 운영할때 발생하는 대표적인 비용입니다. CDN은 캐싱을 통해 원본 서버가 제공해야 하는 데이터양을 감소 시키므로 웹사이트 소유자의 호스팅 비용을 줄일 수 있습니다. - 콘텐츠의 가용성 및 이중화
대규모 트래픽이나 네트워크 장애로 웹사이트가 멈출 수 있는데 CDN은 분산되어 있기 때문에 더 많은 트래픽을 처리할 수 있고 하드웨어 장애를 견딜 수 있습니다.
AWS의 CloudFront서비스를 이용하면 손쉽게 CDN서비스를 구축할 수 있습니다. AWS는 전세계에 300개 이상의 Edge locations를 구축했습니다. Edge locations는 CloudFront 서비스가 콘텐츠를 캐싱하고 Client에게 제공하는 지점 혹은 캐시 서버를 의미합니다. 그리고 Reginal edge caches라는 서버가 또 있는데 오리진과 Edge locations 사이에 위치해 있습니다. 상대적으로 덜 인기 있는 컨텐츠들의 캐싱이 남아있고 Edge locations보다 캐시 스토리지 용량이 더 큽니다. 이 REC덕분에 CloudFront가 오리진에 요청하는것을 줄여줍니다.
콘텐츠는 TTL(Time To Live)값 동안 Edge locations에 캐싱되어 낮은 지연시간으로 콘텐츠를 요청할 수 있습니다.
- 유저가 웹사이트나 애플리케이션에 접속해 정적 콘텐츠를 요청합니다.
- DNS가 요청을 제일 가까운 Edge location으로 라우팅합니다.
- Edge locations에 캐싱이 되어 있는지 확인하고, 캐싱이 되어있으면 유저에게 리턴합니다.
- 캐싱이 되어 있지 않으면 오리진 서버에 컨텐츠를 요청하고 오리진 서버는 컨텐츠들을 edge location으로 보냅니다. 오리진으로부터 첫번째 바이트들이 도착하면 바로 유저에게 컨텐츠를 전달하고 edge location에 컨텐츠를 캐싱합니다.