CDN

2021. 8. 1. 21:47·Computer Science/Terminology and Concepts

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

'Computer Science > Terminology and Concepts' 카테고리의 다른 글

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
'Computer Science/Terminology and Concepts' 카테고리의 다른 글
  • What is JSON File ?
  • Service worker
  • PWA
  • SPA - CSR/SSR/SSG
JTB
JTB
웹/앱 개발 정보를 공유하고 있습니다.
  • JTB
    JTechBlog
    JTB
  • 전체
    오늘
    어제
    • All About Programming;) N
      • Computer Science
        • Terminology and Concepts
        • Network
        • Operating System
        • Database
        • Data Structure
      • Frontend
        • Javascript Essentials
        • Perfomance Optimization
        • JS Patterns
        • Next.js
        • Flutter
      • Backend
        • Node.js
      • DevOps
        • Docker & Kubernetes
      • Coding Test N
        • LeetCode N
        • Programmers
      • Tech Books & Lectures
        • Javascript_Modern JS Deep d..
        • Network_IT 엔지니어를 위한 네트워크 입문
      • Projects
        • PolyLingo_2025
        • Build Your Body_2024
        • JStargram_2021
        • Covid19 Tracker_2021
        • JPortfolio_2021
      • BootCamp_Codestates
        • TIL
        • TILookCloser
        • Pre Tech Blog
        • IM Tech Blog
        • Daily Issues and DeBugging
        • First Project
        • Final Project
        • Sprint Review
        • Good to Know
        • Socrative Review
        • HTML & CSS
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 글쓰기
    • 관리
  • 공지사항

  • 인기 글

  • 태그

    TCP/IP
    leetcode
    database
    Binary Tree BFS
    Operating System
    Data Structure
    커리어
    VoiceJournal
    Network
    스코프
    이벤트
    polylingo
    Time complexity and Space complexity
    딥다이브
    How memory manage data
    자바스크립트 딥다이브
    testing
    자바스크립트
    CPU scheduling algorithm
    DOM
    mobile app
    프론트엔드 성능 최적화 가이드
    JavaScript
    모던 자바스크립트 Deep Dive
    Shared resources
    need a database
    structure of os
    Threads and Multithreading
    js pattern
    indie hacker
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
JTB
CDN
상단으로

티스토리툴바