💡 CDN: Content Delivery Network
의 약자로 지리적 제약 없이 콘텐츠를 효율적으로 제공하는 기술이다.
CDN은 세계 각지에 캐시 서버를 두는데 이를 통해 지리적 제약 없이 사용자들에게 빠르게 콘텐츠를 제공할 수 있다.
예를 들어 미국 사용자가 한국에 호스팅 된 사이트에 접속한다면 한국의 서버에 요청을 보내는 것이 아닌 가장 가까운 미국 서버에 요청을 보내 빠르게 콘텐츠를 제공 받을 수 있다.
장점
CDN의 장점은 아래와 같다.
- 세계 각지에 서버가 있기에 사용자들은 지리적 제약 없이 빠르게 콘텐츠를 제공받는다.
- 서버가 여러대이기 때문에 많은 사용자들이 한 서버에 몰린다면 다른 서버로 분산시켜 병목현상을 해결할 수 있다.
- 원본 서버에 요청이 줄어 대역폭 비용과 호스팅 비용 절감이 가능하다.
- 하나의 서버에 오류가 발생해도 다른 서버가 이를 대체하여 서비스가 중단되지 않아 가용성이 높다.
- CDN업체에서 디도스 공격에 대한 여러 방안들이 있어 보안이 우수하다.
동작 방식
요청한 콘텐츠는 어떻게 사용자에게 도달할까?
- 사용자가 웹사이트의 콘텐츠를 요청한다.
- CDN은 이 요청을 받아들이고, 사용자와 가장 가까운 캐시 서버에서 콘텐츠를 찾는다.
- 캐시서버에 콘텐츠가 캐시되어 있지 않은 경우, 캐시 서버는 원본 서버에서 콘텐츠를 가져와 캐시한다.
- 캐시 서버는 콘텐츠를 사용자에게 전송한다.
정적, 동적 콘텐츠
캐싱 여부에 따라 콘텐츠는 정적, 동적 2가지로 구분될 수 있다.
정적 콘텐츠
누가 언제 요청을 해도 항상 같은 결과값을 응답한다. (js, css, img)
수정, 처리, 생성할 필요가 없어서 CDN에 저장하는 데 이상적이다.
동적 콘텐츠
누가 언제 요청을 하느냐에 따라 다른 결과값을 응답한다. (날씨, 뉴스, 채팅 등)
동적 콘텐츠의 전달 속도를 높히는 방법이 있다.
- 컨텐츠를 byte단위로 분석해 변경된 부분만 새로 받아온다.
- 서버에서 사용자까지의 경로를 최적화한다.
- 데이터를 압축한다.
- handshake 과정을 간소화한다.
CDN 활용 분야
- 웹 사이트 및 애플리케이션
- 비디오 스트리밍
- 대용량 미디어 파일을 안정적 효율적으로 제공
- 게임
- 소셜 미디어
- 전자 상거래
- 클라우드 서비스