개발 블로그

CDN (Content Delivery Network) 이란? 본문

CDN (Content Delivery Network) 이란?

daehwan2 2023. 11. 30. 09:02

오늘은 CDN 에 대해서 정리를 해본다.
 
CDN 은 Content Delivery Network 의 약자이다.
번역을 그대로 하면 콘텐츠를 전달하는 네트워크 이다. 네이밍을 정말 잘한 것 같다. 이름에 모든 것이 담겨 있다.
 
조금 더 자세히 설명해보겠다.  
CDN은 콘텐츠( 예를 들면 html 파일, js 파일, 이미지 파일, 동영상 파일 등등)를 전달해주는 캐싱 서버이다. 
 
예를 들어 내 블로그 주소인 https://program-note.tistory.com/ 이 CDN 이 적용되어 있지 않다면,
아래와 같은 그림으로 사용자의 브라우저가 요청을 하고 응답 값을 받게 될 것이다. 그리고 받은 응답 값으로 잘 꾸며진 나의 블로그를 렌더링되고 사용자는 렌더링된 화면을 보게 될 것이다. 이게 CDN 이 적용되지 않았을 때의 과정이다.

 
 
여기서 만약 CDN 에 적용되어 있다면, 아래와 같은 과정으로 사용자는 나의 블로그를 보게 된다.
 

 
CDN 은 미리 내 블로그 서버로 부터 html, js, image 등의 캐싱 데이터를 받아놓는다. (캐싱)
사용자가 도메인으로 요청을 하면, 가장 가까운 CDN 서버를 찾아서 실제 요청을 하게 된다.
요청 받은 CDN 서버는 응답할 데이터가 캐싱되어 있다면(위 그림처럼), 바로 사용자에게 응답 값을 보내주고, 만약 데이터가 캐싱되어 있지 않다면 내 블로그 서버에 요청을 한 뒤 응답을 받고, 받은 응답 값을 사용자에게 보내준다.
 
 
실제 CDN 은 전세계에 분산되어 있고, 플랫폼에서 서비스를 제공중이다.
우리 회사에서도 프론트를 배포할 때 CDN 서비스로 AWS 의 CloudFront 를 사용 중이다.
구글링하면 특별히 설정할 것 없이 바로 적용할 수 있다. 만약 CloudFront 서비스를 사용하게 된다면, AWS 에서 미리 설치해놓은 CDN 서버로 바로 적용이 가능하다.
 

CDN 근데 왜 쓰는 걸까?

CDN 을 통해 얻는 이점은 먼저 실서버의 네트워크 요청이 줄어들기 때문에 서버의 부담이 줄어든다. 그리고 사용자는 각 CDN 으로 실제 요청이 일어나기 때문에, 디도스 공격을 방지할 수도 있다. ( CDN 을 제공하는 업체에서 CDN 에 디도스 공격의 방어책이 마련되어 있을 것이다. )
두번째로는 사용자 입장에서 응답 값을 빠르게 받을 수 있다. 예를 들어 서버가 사용자로 부터 엄청나게 멀리 떨어져 있다고 생각해보자. 이 때 CDN 이 적용되어 있지 않다면 서버와의 물리적 거리가 멀기 때문에 응답받는 시간이 느리게 될 것이고 이는 UX(사용자경험)을 해치게 된다. 근데 만약 CDN 이 적용 되어 있다면, 사용자와 가까이 있는 CDN 에 이미 응답 받을 데이터가 캐싱되어 있을 것이고 요청을 받은 CDN 은 사용자에게 바로 응답 값을 전해줄 수 있다. 그렇기 때문에 사용자 입장에서는 실서버와의 거리와 상관 없이 빠른 응답값을 받을 수 있다.

반응형
Comments