개인 블로그 프로젝트에 사용할 이미지를 가져오는 방식을 AWS S3과 CloudFront 를 활용하기로 결정하면서 cdn에 대해 알아보았다.
CDN?
CDN(Content Delivery Network)은 지리적으로 분산된 서버들을 연결한 네트워크로서 웹 컨텐츠의 복사본을 사용자에 가까운 곳에 두거나 동적 컨텐츠(예: 라이브 비디오 피드)의 전달을 활성화하여 웹 성능 및 속도를 향상할 수 있게 합니다.
CDN 사용 시 장점
가까운 CDN 서버를 사용하여 웹 사이트 방문자에게 더 가까운 웹 콘텐츠 배포를 가능하게 함으로써 방문자는 더 빠른 웹 페이지 로딩 시간을 경험할 수 있다.
원본 서버가 요청에 응답할 때마다 대역폭이 소모된다. CDN은 원본 서버가 제공해야 하는 데이터의 양을 줄여 웹 사이트 소유자의 호스팅 비용을 줄일 수 있다.
많은 양의 웹 트래픽 또는 하드웨어 오류는 정상적인 웹사이트 기능을 방해하고 다운 타임으로 이어질 수 있다. CDN의 분산 된 특성 덕분에 많은 원본 서버보다 더 많은 웹 트래픽을 처리하고 하드웨어 오류를 더 잘 견딜 수 있습니다. 어떤 이유로 하나 이상의 CDN 서버가 오프라인 상태가 되면 다른 운영 서버가 웹 트래픽을 선택하여 서비스를 중단 없이 유지할 수 있다.
CDN이 트래픽 급증을 처리하는 동일한 프로세스는 DDoS 공격을 완화하는 데 이상적이다. CDN은 여러 중간 서버 간에 로드를 분산하여 오리진 서버에 미치는 영향을 줄임으로써 트래픽 급증을 처리할 수 있다.
CDN이 과부하를 막는 방법
CDN은 업체가 CDN 서비스를 운영하기 위해 세계 각지에 설치한 각 서버인 엣지(edge)를 이용한다. edge들은 컨텐츠를 전송하는데 특화된 서버로 오리진 서버 에서 제공하고자 하는 컨텐츠(웹페이지, 이미지, 영상 등)들을 각국의 edge에 캐싱(저장)해서 요청이 일어난 지역의 응답을 edge가 대신 하도록 한다. 트래픽이 각 edge로 분산되서 오리진 서버의 과부하를 막을 수 있게 됩니다.
CDN을 통해 전송할 수 있는 인터넷 콘텐츠
정적 콘텐츠
변경되지 않는 결과 값을 응답한다. (js, css, img)
정적 데이터는 수정, 처리 또는 생성할 필요가 없으며 CDN에 저장하는 데 이상적이다.
동적 콘텐츠
사용자의 위치, 로그인 시간 또는 사용자 기본 설정에 따라 다른 결과값을 응답한다. (날씨, 뉴스, 채팅 등)
CDN동작 방식
참고