본문 바로가기
개발자 준비/네트워크

CDN

by osul_world 2022. 2. 21.
728x90

CDN


개요


사이드 프로젝트의 로직 구현이 마무리되고 남은건 안정화 작업이다.

이제부터 공부해야할 가장 중요한 키워드는 바로 대규모 트래픽 처리이다.

데이터 통신 기술이 발달하면서 전 세계적으로 유튜브, 넷플릭스 등 수 많은 데이터들이 전송되는 세상에 살고 있다.

 

이렇게 폭발적으로 증가하는 데이터를 최대한 지연 없이 효율적으로 전달하고 물리적 거리의 한계를 극복하기 위해 CDN이라는 기술이 등장하게 된다.

 

 

CDN이란?(Content Delivery Network, CDN)


CDN은 Content Delivery Network의 약자로서 지리적인 제약 없이 전 세계 사용자에게 빠르고 안전하게 컨텐츠 전송을 할 수 있는 기술을 말한다.

 

이를 통해서 컨텐츠의 병목현상을 피할 수 있다.

직역 그대로 컨텐츠의 빠르고 효율적인 전송을 돕는 '컨텐츠 전송 네트워크'를 뜻한다.

 

 

 

CDN의 원리


CDN(Content Delivery Network)은 물리적으로 떨어져 있는 사용자에게 컨텐츠를 더 빠르게 제공하기 위해 고안된 기술이다.

만약 우리나라에 있는 사람이 미국에 있는 서버로부터 이미지나 파일 등을 다운받으려고 한다면 시간이 오래 걸릴 것이다.

 

 

서버를 여러 곳에 분산시켜 리소스를 캐싱해두고 사용자의 컨텐츠 요청이 들어오면 사용자와 가장 가까운 위치에 존재하는 서버로 매핑시켜 요청된 콘텐츠의 캐싱된 내용을 내어주는 방식으로 빠르게 데이터를 전송할 수 있게 된다.

CDN 업체는 세계 곳곳에 서버를 가지고있다.

이 곳곳에 분산된 서버들을 CDN Edge Server 라고 한다.

 

 

[중요] CDN 서버는 미러 사이트 서버와 달리 컨텐츠 리소스 제공에만 특화되어있다.

미러 사이트 처럼 오리진 서버 전체 기능을 복사한 서버가 아니다.

리소스만 캐싱되어있다.

 

 

CDN 서버에는 오리진 서버의 각종 이미지,정적요소 등이 캐싱되어있는 것이다.

 

CDN 동작 구조

원래 웹은 클라이언트가 서버 주소를 입력하면 이를 가지고 DNS(도메인 네임 서버)로 부터 IP를 받아와서 해당 서버로 접속한다.

 

  1. 클라이언트가 서버로 요청을 보낸다.
  2. 이 요청은 모든 CDN Edge Server들을 관리하는 CDN에게 전달된다.
  3. CDN은 가장 빠르게 서비스를 제공할수있는 CDN Edge Server로 요청을 우회해준다.
  4. 이때, 물리적 거리 뿐 아니라 CDN Edge Server의 상태도 고려해서 가장 빠른 서버를 선택한다.
  5. CDN Edge Server는 Origin Server로 부터 받은 캐시데이터를 사용해 리소스를 빠르게 제공한다.

 

 

CDN Edge Server는 Origin Server로 부터 어떻게 캐싱 되는가

정적 캐싱 & 동적 캐싱 으로 구분된다.

 

정적 캐싱

  • Origin Server 에 있는 Content를 운영자가 미리 CDN Edge Server에 복사 해두어 사용자가 CDN Edge Server에 Content 요청 시 무조건 CDN Edge Server에 있다

 

  • 대부분의 국내 CDN에서 이 방식을 사용 (게임 클라이언트 다운로드 등)

 

 

동적 캐싱

  • Origin Server에 있는 Content를 운영자가 미리 CDN Edge Server 에 복사하지 않음

 

  • 사용자가 Content를 요청 시 해당 Content가 없는 경우 Origin Server 로부터 다운로드 받아 전달한다. 있는 경우에는 캐싱된 Content전달

  • 각각의 Content는 일정 시간 이후 CDN Edge Server 에서 삭제 될 수도 있다.

 

 

상황에 맞게 선택해서 캐싱하면된다.

가벼운 컨텐츠는 동적 캐싱을 사용해도 무방하지만 동영상이나 규모가 큰 파일들은 정적 캐싱을 해야한다.

 

 

그런데 동적 컨텐츠는 어떻게 캐싱해야할까?

사용자나 입력에 따라 결과가 다른 API 컨텐츠는 매번 데이터가 다르기 때문에 CDN Edge Server에 캐싱해두기 힘들다.

많은 CDN 업체들이 바이트 단위로 분석한다던가 하는 방식으로 동적 리소스 전달속도를 개선해서 서비스를 제공하고있다.

또한 초단위로 응답이 요구되지않는 컨텐츠는 일정 간격마다 캐싱이 업데이트 되도록 설정하면된다.

페이스북 친구 온라인 오프라인 표시 등

이런 작업을 할수있도록 CDN 업체들은 관리 콘솔을 제공해준다.

 

이 부분은 따로 자세히 다루도록 하겠다.

 

 

CDN의 장점


물리적 거리 극복 + 부하 분산

Origin Server로 직접 요청이 오지않고 여러대의 CDN Edge Server로 요청을 분산 시켜 처리하기 때문에 대용량 트래픽에도 서버가 받는 부하가 적다.

 

세계 곳곳에 존재하는 CDN Edge Server들을 이용해 물리적 거리를 극복하고 어디서든 빠른 응답을 유지할수있다.

 

 

CDN업체에 나가는비용도있지만 본서버 돌리는 비용도 줄어든다.

서버로직접 요청되지 않기 때문에 대역폭 비용이 크게 절감된다.

대역폭이란?

''한번에 얼마나 많은 데이터가 이동할수있는가'' 이다.

도로의 넓이를 생각하면 이해가 쉽다.

 

반면에 얼마나 빠르게 이동하는가는 전송속도라고 한다.

 

 

즉, Origin Server로 직접 요청이 오지않고 CDN Edge Server로 요청이 가기 때문에 대역폭을 넓게 설정할 필요가없다.

이런측면에서 서버호스팅 비용이 절감된다.

 

 

가용성과 안전성도 증가된다.

본서버가받는 부담이덜어지니까 과부하로인한 오류도줄어들고 하나의 엣지가 이상이생겨도 다른 엣지로 연결되기떄문에 보다 안정적인 서비스를 제공할 수 있다.

 

하지만 헬스체크가 필수적이다.

잘돌고있는지 꾸준히 관리를해준다.

 

 

보안

여러대의 좀비컴퓨터로 서버를 공격해 한번에 많은 트래픽을 발생시켜 서버를 다운시키는 DDos 공격을 방어할수있다.

요청을 분산처리를 하기때문에 조금더 버틸수있고 CDN에 정상적인 요청과 비정상적인 요청을 구분해내어 특정시점의 요청수를 제한하거나 집중된 요청을 분산시키는 등

Ddos에대해 무력화시킬방법을가지고있다.

 

 

정리

세계 곳곳에 여러대의 CDN Edge Server를 두고 Origin Server를 대신해서 요청에 대한 리소스를 응답한다.

CDN Edge Server는 Origin Server로 부터 캐싱된 리소스만 가지고있다.

로직등의 기능은 가지고있지 않다.

 

 

  1. 세계 어디서 요청이 와도 가장 빠르게 처리할수있는 CDN Edge Server로 요청을 우회시켜 물리적 거리의 한계를 극복
  2. 대용량 트래픽을 여러대의 CDN Edge Server로 분산시켜 서버 부하를 낮춤
  3. 보안을 강화시킬수있음
  4. 서버 비용 절약
  5. 안정성 및 가용성 증가

 

 

 

Reference


https://www.youtube.com/watch?v=_kcoeK0ITkQ

https://cwangg897.tistory.com/93

CDN이란 무엇인가 (velog.io)

728x90

'개발자 준비 > 네트워크' 카테고리의 다른 글

JWT란(Feat. Stateless)  (0) 2022.04.10
WebServer 와 WAS(Web Application Server)  (0) 2021.12.22
[서버] (5) 스케일 어빌리티  (0) 2021.12.13
[서버] (4) 호스팅 & 클라우드 컴퓨팅  (0) 2021.12.13
[서버] (3) DNS  (0) 2021.11.26