일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- cloudfront
- Google Image Crawler
- 구글 이미지 다운
- 어플
- 리액트
- 리액트네이티브
- 프로젝트
- three.js
- react mociking
- 똥피하기
- 프론트엔드
- 토이프로젝트
- React
- Google Image Crawler Chrome Extension
- extension
- Chrome Extension
- 네이버 로또
- ReactNative
- 2024년 개발자회고
- chrome extension typescript boiler plate
- 로또 몰카
- 2024년회고
- 나락퀴즈
- 사이드 프로젝트
- 개발자
- 디지몬상테스트
- react-three-fiber
- 프론트 개발자
- react-mocking
- 로또 몰래카메라
- Today
- Total
개발 블로그
CDN (Content Delivery Network) 이란? 본문
오늘은 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 은 사용자에게 바로 응답 값을 전해줄 수 있다. 그렇기 때문에 사용자 입장에서는 실서버와의 거리와 상관 없이 빠른 응답값을 받을 수 있다.
'웹' 카테고리의 다른 글
웹에서 MVC 패턴과 MPA, SPA, CSR, SSR 에 대하여 (0) | 2023.12.25 |
---|---|
DNS 란? DNS 뜻 쉽게 설명하기 (4) | 2023.12.03 |
프록시(Proxy) 서버란? Forward Proxy, Reverse Proxy, 로드밸런서 (2) | 2023.11.29 |
동기, 비동기, 블로킹, 논블로킹 가장 명확하고 쉽게 정리해보자 (2) | 2023.11.28 |
git 프로젝트 세팅 방법 및 실무에서 사용하는 명령어 정리, vscode 확장프로그램 추천 (2) | 2023.11.26 |