CDN
- 콘텐츠 전송 네트워크(Content Delivery Network)를 의미하는 CDN은 전세계에 분산된 서버 네트워크를 의미하며 사용자와 물리적으로 가까운 위치에서 컨텐츠를 제공
- 통신에 참여하는 호스트 간에 중간 서버를 두어 성능을 향상(서버 과부하 방지, 통신 지연 단축)
- 대표적인 CDN 서비스로는 CloudFront, CloudFlare 등이 있음
CDN에서 Push 방식과 Pull 방식의 차이점
Push
- 원본 서버가 콘텐츠를 미리 CDN 서버로 전달하는 방식
- 적절한 시기에 정확한 콘텐츠 제공 가능하지만, 지속적으로 업데이트를 해줘야 하므로 관리 비용이 상대적으로 높음
Pull
- CDN 서버가 원본 서버로 요청을 보내 콘텐츠를 가져오는 방식
- 클라이언트가 요청을 보내는 경우, CDN에 원하는 콘텐츠가 없다면 원본 서버로부터 콘텐츠를 가져와서 업데이트 하는 방식
- 초기 요청에서는 원본 서버에서 콘텐츠를 가져오는 작업을 수행해야 하므로 응답 속도가 저하될 수 있음
CDN을 사용시 고려해야 할 점
- CDN 사용 시 비용, 만료 시간, CDN 장애 대응, 콘텐츠 무효화를 고려해야 함
비용
- CDN은 주로 제 3 사업자에게 비용을 지불하고 사용하므로, 비용 대비 효과를 고려하여 도입해야 함
- 성능 향상이 필요한 콘텐츠만 캐싱하는 등의 비용 절감 노력이 필요함
만료 시간
- 콘텐츠의 만료 시간이 길다면 신선도가 떨어지며, 짧다면 원본 서버로의 요청이 빈번해짐
CDN 장애 대응
- CDN에서 콘텐츠를 응답할 수 없는 경우, 클라이언트에서 원본 서버로부터 직접 콘텐츠를 가져오도록 구성할 수 있음
콘텐츠 무효화
- 오브젝트 버저닝을 사용하거나 CDN 서비스에서 제공되는 API를 사용할 수 있음