본문 바로가기
프로그래밍/웹개발(WEB)

CDN(Contents Delivery Network)이란 무엇인가

by imfireguy 2022. 1. 4.
반응형

CDN(Contents Delivery Network) 이란?

단어 그대로 해석을 해본다면 콘텐츠 전송 네트워크입니다. 

 - 지리적(물리적)으로 떨어져 있는 유저들에게 콘텐츠를 더 빠르게 제공하기 위한 기술입니다. 

 - 느린 응답속도 / 다운로딩 타임을 극복하기 위한 기술 입니다.

 

▼사용 예를 보겠습니다. 

 

ex) 쇼핑몰을 운영하고 있다고 가정해 보겠습니다. 그런데 어느 날 기가 막힌 할인 이벤트를 기획하고 많은 유저들이 방문하는 게 예상되었습니다. 

 

하지만 만약에 CDN 서비스를 이용하지 않는다면 많은 유저들이 쇼핑몰을 방문하게 되고 내 서버에서 이미지를 보여주게 된다면 느리게 처리되어서 유저들의 불만과 함께 유저 이탈이 생길 거 같습니다.

 

하지만 CDN 서비스를 이용하게 된다면 유저가 쇼핑몰에 방문하였을 때 물리적으로 가까운 CDN 서버에서 각각의 유저에게 빠르게 이미지를 호출하고 보여주게 되어서 원활한 서비스 이용이 가능해집니다.

 

즉 CDN 서비스는 유저가 원격지에 있는 서버(Origin Server)로 부터 Content(ex Web Object, Video, Image, Music, Document 등)를 다운로드할 때 가까이 있는 서버에서 받는 것보다 시간이 오래 걸립니다.

 

그러므로 유저와 가까운 곳에 위치한 Cache Server에 해당 Content를 저장(캐싱)하고 Content 요청 시 Cacge Server가 응답을 주는 기술입니다.

 

CDN 장점

1. 웹사이트 로딩 속도 개선
2. 인터넷 회선 비용 절감
3. 콘텐츠 제공의 안정성

CDN을 사용하지 않는 경우

 

콘텐츠를 담고 있는 서버(Origin Server)들은 모든 유저의 요청에 일일이 응답해야 합니다. 

이것은 막대한 트래픽을 발생시키고 트래픽이 많이 증가하거나 부하가 발생되는 경우 장애가 발생할 확률이 높아집니다.

 

CDN을 사용하는 경우

CDN을 사용함으로써 사용하지 않는 경우 반대로 서버의 과도한 트래픽 부하 및 장애 확률을 낮출 수 있어 유저에게 보다 빠르고 쾌적한 서비스 제공도 가능합니다.

 

CDN 작동원리

1. 최초 요청은 서버로부터 콘텐츠를 가져와 고객에게 전송하며 동시에 CDN 캐싱 장비에 저장됩니다.

2. 두 번째 이후 모든 요청은 CDN 업체에서 지정하는 해당 콘텐츠 만료 시점까지 CDN 캐싱 장비에 저장된 콘텐츠를 전송합니다.

3. 자주 사용하는 페이지에 한해서 CDN장비에서 캐싱이 되며, 해당 콘텐츠 호출이 없을 경우 주기적으로 삭제됩니다.

4. 서버가 파일을 찾는 데 실패하는 경우 CDN 플랫폼의 다른 서버에서 콘텐츠를 찾아 엔드유저에게 응답을 전송합니다.

5. 콘텐츠를 사용할 수 없거나 콘텐츠가 오래된 경우, CDN은 서버에 대한 요청을 프락시로 작동하여 향후 요청에 대해 응답할 수 있도록 새로운 콘텐츠를 저장합니다.

 

※ CDN은 도메인 혹은 일부 페이지에 적용이 가능합니다.

 (단, 도메인에 적용하는 경우 일부 안정적이지 못한 CDN 서비스의 사용 시 CDN 서비스가 죽는 경우 홈페이지도 같이 안 나오는 경우도 있었습니다.)

 

CDN 필요기술

1. Load Balance

- 유저에게 콘텐츠 전송 요청(Delivery Request)을 받았을 때, 최적의 네트워크 환경을 찾아 연결하는 기술, GSLB(Global Server Load Balancing)이라고도 합니다.


- 물리적으로 가장 가깝거나 여유 트래픽이 남아 있는 곳으로 접속을 유도하는 기술입니다.

 

※ GSLB(Global server Load Balancing)

DNS(도메인 이름을 IP주소로 변환하는 서비스) 서비스의 발전된 형태라고 할 수 있습니다.

 

※ DNS와 GSLB 차이점

1-1. health check(서버 상태 체크)
DNS : 서버의 상태를 알 수 없어서 서비스 접속에 실패하는 유저도 생길 수 있습니다.


GSLB : 서버의 상태를 모니터링(주기적으로 health check를 수행) 하고 실패한 서버의 IP는 응답에서 제외하므로, DNS보다 훨씬 강력한 기능을 제공합니다.

1-2. 로드밸런싱
DNS : Round Robin 방식을 사용하므로 정교한 로드 밸런싱이 힘듭니다.


GSLB : 서버의 로드를 모니터링하기 때문에 로드가 적은 서버의 IP를 반환하는 식으로 정교한 로드밸런싱을 할 수 있습니다.

1-3. 레이턴시(지연 또는 대기시간) 기반 서비스
DNS : Round Robin 방식을 사용하여 유저는 네트워크상에서 멀리 떨어진 위치의 서버로 연결할 수도 있습니다.


GSLB : 각 지역별로 서버에 대한 레이턴시(latency) 정보를 가지고 있기 때문에 유저가 접근을 하면, 유저의 지역으로부터 가까운(더 작은 레이턴시를 가지는) 서버로 연결을 합니다.

1-4. 위치기반 서비스
DNS : 유저는 Round Robin기반으로 서버에 연결됩니다.


GSLB : 유저의 지역정보를 기반으로, 해당 지역을 서비스하는 서버로 연결할 수 있습니다.

 

※ Round Robin 방식

간단하게 설명하자면 들어오는 순서대로 할당받아서 서버에 진입한다 생각하시면 됩니다.

 

2. 콘텐츠를 배포하는 기술

콘텐츠의 수정 삭제가 일어났을 때 이를 관리할 수 있는 기술이 필요합니다.

 

3. 트래픽을 감지하는 기술

 - 통계자료를 고객에게 제공하기 위해 필요합니다.
 - 트래픽을 분산하기 위해서 필요합니다.

 

CDN 캐싱 방식

1. Static Caching(정적 캐싱)

– Origin Server에 있는 Content를 운영자가 미리 Cache Server에 복사 미리 복사해 두기 때문에 사용자가 Cache Server에 Content를 요청 시 무조건 Cache Server에 존재합니다.


– 대부분의 국내 CDN에서 이 방식을 사용( ex. 게임 파일 다운로드 등)

 

2. Dynamic Caching(동적 캐싱)

– Origin Server에 있는 Content를 운영자가 미리 Cache Server에 복사하지 않습니다.


– 사용자가 Content를 요청 시 해당 Content가 없는 경우 Origin Server로부터 다운로드하여 전달합니다.
  (Content가 있는 경우는 캐싱된 Content 사용자에게 전달)


– 각각의 Content는 일정 시간 이후 Cache Server에서 삭제될 수도 있습니다. (계속 가지고 있을 수도 있음)

 

CDN 서비스가 가능한 콘텐츠

디지털화될 수 있는 모든 데이터가 CDN으로 사용 가능합니다. 

동영상, 오디오 스트림, 앱, 게임, OS 업데이트와 같은 소프트웨어 다운로드, 문서 등등 가능합니다.

 

CDN 서비스 이용방법

1. CDN 이용 시 소스코드상에서 이미지 링크나 리다이렉트 등 CDN을 서비스를 이용할 도메인을 호출하는 경우 도메인의 주소를 CDN 업체 장비의 주소로 이미지를 호출하는 경로로 변경합니다.
ex) 기존의 <img src= "https://www.itworldyo.com/~~~~">  => <img src= "CDN 업체 서버 도메인">

2. 서비스 신청 대상 도메인이 서버(Origin Server)를 바라보게끔 CDN장비 주소로 연결해주는 작업을 해야 합니다.
(CDN 서비스 신청 시 CDN 서비스를 이용할 도메인의 네임서버 레코드를 CDN 서비스 업체에서 제공하는 도메인 주소 또는 IP주소로 연결을 해야 합니다.)

예를 들어 https://www.itworldyo.com 이 CDN 서비스를 신청하고 싶은 도메인이라면 네임서버 A레코드를 CDN 업체 도메인. co.kr으로 변경 작업을 합니다.


브라우저 주소창에 https://www.itworldyo.com 입력했을 때 발생되는 요청을 CDN 업체 서버로 가게 해주는 작업입니다.


기존 https://www.itworldyo.com에 연결된 A레코드 IP값과 도메인 정보를 보내주면 CDN 업체 측에서 변경에 필요한 CNAME을 줍니다.
이에 따라 DNS상에서 CNAME을 각각의 도메인에 적용하여 수정해줘야 줍니다.

 

※ CNAME 레코드

캐노니컬 네임 레코드(Canonical Name record), 줄여서 CNAME 레코드(CNAME record)는 하나의 도메인 네임(에일리어스)을 다른 이름(표준 형식의 이름)으로 매핑시키는 도메인 네임 시스템(DNS)의 리소스 레코드의 일종입니다.

하나의 IP 주소로부터 여러 개의 서비스를 실행할 때(예: 각기 다른 포트로 각각 구동되는 FTP 서버와 웹 서버 등) 편리함을 입증할 수 있습니다. 

이를테면 ftp.example.com과 www.example.com를 (IP 주소를 가리키는) A 레코드를 보유한 example.com의 DNS 엔트리를 가리킬 수 있습니다. 그러면 IP 주소가 변경이 될 경우 네트워크 안의 한 지점에서 변경사항을 기록하기만 하면 됩니다.

CNAME 레코드는 무조건 다른 도메인 네임을 가리켜야 하며 직접 IP 주소를 가리켜서는 안 됩니다.

반응형

댓글