관리 메뉴

Dev Blog

CDN 본문

Web Development/General Tech Knowledges

CDN

Nomad Kim 2021. 8. 1. 21:47

CDN

Content Delivery Network 

웹페이지, 이미지, 동영상 과 같은 컨텐츠를 서버에서 사용자에게 전송하는 것

 

기존 단 하나의 서버의 문제점

  1. 클라이언트가 겪는 불편함: 전 세계에서 서버에 요청을 보내는 경우, 각 나라와의 서버의 거리가 멀 경우(물리적인 이유), 서버에서 컨텐츠를 받아오는 시간이 오래걸린다. 
  2. 서버가 겪는 불편함: 수많은 요청들을 처리해야 한다는 점. 

 

CDN 서버는 컨텐츠 전달이라는 용도에 특화되어 서버의 요청 처리를 분산한다. CDN 업체가 전세계 곳곳에 서버를 두고 있다면, 요청을 클라이언트에게 가장 빠르게 서비스를 제공할 수 있는 CDN 서버에서 해당 요청을 처리하는 것이다. 이 CDN 서버에는 해당 서비스 사이트의 각종 이미지, 기타 정적 요소들이 저장, 캐싱 되어있기 때문에 클라이언트가 보다 빠르게 사이트를 이용할 수 있다.

브라우저는 먼저 DNS(Domain Name System) 에서 사이트의 서버 아이피를 조회하고 요청을 보내 사이트에 접속하는데, CDN 을 사용할 경우, DNS 에서 Original Server 가 아니라 EDGE Server(CDN 서버) 로 연결해주는 것이다. 단지 물리적으로 가까운 CDN 에 연결해주는 것이 아니라, 특정 지역에 요청이 집중이 될 경우, 각 엣지들이 잘 돌아가고 있는지 꾸준히 Health Check 를 하여 가장 빠르게 서비스(컨텐츠)를 제공할 수 있는 CDN 서버에 연결을 주선한다. 

 

  • 정적 캐싱: 캐싱할 컨텐츠들을 미리 각 엣지에 보내는 것-> 무거운 컨텐츠에 적합.
  • 동적 캐싱: 사용자가 요청을 보낼 때마다 보낼 컨텐츠가 해당 엣지에 존재하는지 여부를 먼저 확인한 후 있다면(cache hit) 바로 사용자에게 보내고, 없을 경우(cache miss) 그 때 서버에 요청해서 받아온다. -> 가벼운 컨텐츠에 적합.

 

  • 정적 컨텐츠: HTML, CSS, 자바스크립트 파일이나 이미지처럼 내용이 고정된 것
  • 동적 컨텐츠: 최신 정보 불러오기 같은 API 요청처럼 해당 시점의 데이터베이스 변수 등에 따라 내용이 변할 수 있는 것.

 

동적 컨텐츠 일 경우 캐싱이 까다로울 수 있는데,

1) 동적 컨텐츠를 바이트 단위로 분석하여 바뀐 부분만 새로 받아와 속도를 높이기도 하고

2) 서버에서 사용자까지 전달되는 경로를 최적화하기도 하고 

3) 데이터를 압축하거나 handshake 등의 과정을 간소화,

4) 지정된 시간에 한해 캐싱할 수 있도록 하는 등 효율적으로 컨텐츠를 받아올 수 있도록 한다. 

 

데이터가 캐시에 얼마나 남아있을지 지정하는 값을 Time To Live, TTL 이라고 하는데 같은 사이트나 서비스에서도 컨텐츠의 종류마다 각각 적합한 TTL 을 지정할 수 있다. 이처럼 CDN 업체들은 캐싱을 컨트롤할 수 있는 많은 옵션들을 제공한다. 

CDN 업체: Cloudflare, Akamai, CloudFront(AWS), Azure CDN 서비스 

 

CDN 장점(좋은 CDN 업체일 경우)

 

  1. CDN 을 사용하면 서버로 직접 요청들이 들어오지 않기 때문에 *대역폭 비용이 크게 절감된다. 대역폭을 넓게 설정할 필요가 없기에 서버 호스팅 비용이 절감되는 것이다. 비용 절감 뿐만 아니라 가용성과 안정성도 향상된다. 본 서버에 과부하로 인한 오류의 위험성이 줄고 한 CDN 엣지에 이상이 생겨도 빠르게 다른 엣지로 연결되기 때문에 보다 안정적인 서비스를 사용자들에게 제공할 수 있다. 
  2. 보안: **Ddos 공격(서버에 과부하를 주어 )이 있을 경우, CDN 서버는 정상적인 요청과 공격 요청을 구분해 내고, 특정 시점의 요청 수를 제한하기도 하고, 집중된 요청들을 수많은 엣지들로 분산시키는 등 DDoS 를 무력화시킬 방안을 갖추고 있다. 
  3. 컨텐츠의 암호화: 엣지들과 사용자 간의 연결에 최신의 검증된 인증 방식들을 사용하기 때문에 본 서버에서 구현한 인증서의 보안 등급이 낮더라도 방문자(Client) 들은 CDN 에서 제공하는 강력한 보안을 누릴 수 있다. 

 

*bandwidth(대역폭): The maximum amount of data transmitted over an internet connection in a given amount of time. Bandwidth is often mistaken for internet speed when it's actually the volume of information that can be sent over a connection in a measured amount of time – calculated in megabits per second (Mbps).

**분산 서비스 거부(DDoS: Distributed DoS attack) 공격:  인터넷 트래픽의 폭주로 공격 대상이나 그 주변 인프라를 압도하여 공격 대상 서버나 서비스, 네트워크의 정상적인 트래픽을 방해하는 악의적인 시도를 말한다. 

 

참고

웹서비스에 필수! CDN이 뭔가요?: https://youtu.be/_kcoeK0ITkQ

'Web Development > General Tech Knowledges' 카테고리의 다른 글

What is JSON File ?  (0) 2021.09.09
Service worker  (0) 2021.09.03
PWA  (0) 2021.08.01
SPA - CSR/SSR/SSG  (0) 2021.08.01
DOM/CSSOM/BOM/Virtual DOM  (0) 2021.07.31
Comments