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