CDN

CDN 기초

SALEE 2022. 5. 28. 16:54
728x90

CDN(Contents Delivery Network)

  • 이미지 동영상 같은 IP 기반의 컨텐츠를 전송

 

CDN이 태어난 이유

  • 땅이 넓어서 (Ex. 미국). 사용자에 가까운 쪽에 시스템 구축해서 전송할 수 있게
  • 국내의 경우는 ISP 연동망의 영향을 최소화하기 위해

 

CDN 서비스 이용 고객

  • 이미지 서비스 이용 고객
  • 동영상 라이브 서비스 이용 고객
  • 게임 파일 배포
  • 네비게이션 파일 맵 정기 업데이트

 

POP

  • 주요 도시의 CDN 서비스에 필요한 서버

 

IX(Internet Exchange)

  • ISP 사업자 (KT, SK 브로드밴드, LG 유플러스) 간 맞물리는 구간
  • 과거에는 각각 ISP 간의 이해 관계 때문에 투자 차이에 의해서 ISP 간의 접점 부근에 품질 이슈가 발생했음

 

국내 CDN 서비스 초기

  • CDN 사업자가 ISP의 CDN 서비스 각각의 IDC POP 운영
  • 각 ISP 별로 CDN 운영 (토폴로지 구성) - 현재는 네오텍만 이 형태로 운영

 

Big Traffic

  • 자체적으로 서버를 운영하면서 트래픽을 소화하기에는 어려운 대규모 서비스를 위해서 CDN을 이용

대규모 CDN 서비스를 처리하기 위해서는 각각 CDN 서버들을 그룹으로 묶고 POP 운영 - GSLB를 통해서 각각의 서버와 POP 간의 로드밸런싱

 

CDN을 왜 쓰는지 요약

  • 대규모의 트래픽을 보다 빠르고 안정적이게 처리, 비용 절감

 

CDN의 기본 원리

 

CDN

  • CDN = DNS + HTTP + Cache

 

CDN 기본 구조

  1. 사용자(End User)가 웹사이트의 이미지를 보려고 할 때
  2. CDN 서버에 HTTP 요청
  3. CDN 서버는 Origin 서버(웹 서버 - 이미지 원본 서버) HTTP 요청

 

Cache

  • 엑세스하는 데이터나 프로그램 명령을 반복해서 검색하지 않고도 즉각 사용할 수 있도록 저장하는 영역

 

CDN에서의 Cache

  • Cache Miss
    • CDN 서버에서 Cache가 되어 있지 않고, 또다른 원본 서버로 요청
  • Cache Hit
    • CDN 서버에서 이미 저장되어 있는 상태
  • 원본 서버를 거치지 않아서 시간 절약

 

CDN POP

  • 여러 대의 서버의 하나의 IDC에 그룹으로 묶어서 서비스

 

Multi-POP

  • 하나의 IDC에 POP을 운영하는게 아니라, CDN 서비스를 위해서는 이중화 삼중화(특정 IDC의 가능 불능 상황 방지)
  • First Mile - Origin 서버와 CDN 서버가 있는 구간 (Origin - CDN)
  • Middle Mile - IX 구간 (CDN - CDN)
  • Last Mile - CDN Edge 서버에서 End User 간 구간 (CDN Edge - User)

 

CDN 서비스 품질 보장 구간

 

DNS Flow

  • CDN 서비스를 위해서는 CDN에서 제공하는 도메인을 CNAME 처리 해야함
    • CNAME 처리 (CDN에서 제공하는 LB로 가세요)

일반적인 DNS WorkFlow에서 CDN 서비스 하기 위해서는 CDN에서 제공하는 DNS의 CNAME 처리 (CDN 쪽으로 LB 요청을 바꿔주세요)

  1. 사용자가 Local DNS(LDNS) 통해서 DNS 요청 (컨텐츠 요청) - CDN에서 제공하는 LB로 바꿔주세요
  2. LDNS가 CDN 쪽에서 제공하는 LB로 물어봄 (컨텐츠 어디있나요)
  3. GSLB 쪽은 CDN에서 Cache 서버의 헬스 상태를 수시로 체크 (각각의 Cache 서버가 정상적인지, 가용한지) - 정상적으로 응답 가능한 서버로 안내
  4. LDNS는 End User한테 해당 서버 IP를 전달
  5. End User가 해당 서버 IP를 통해서 CDN 쪽에 컨텐츠 요청

 

ISP 토폴로지 (KT 사용자는 KT 서버 통해서 컨텐츠 전송)

  • 각각의 토폴로지를 어떻게 확인할까 - LDNS 정보를 이용해서 확인
  • GSLB에는 DNS 요청이 어느 LDNS 통해서 왔는지 (KT,LG,SK) 확인 가능

8.8.8.8 (구글 제공 DNS) or CloudFlare(1.1.1.1) 같은 글로벌 업체가 제공하는 DNS 사용하는 경우에는 토폴로지 형태로 구현되어 있지 X
반드시 LDNS (KT,LG,SK)

 

HTTP

  1. 첫 번째 사용자는 HTTP Get으로 CDN 서버에 요청
  2. CDN 서버는 자료가 없으니까 HTTP로 Origin 서버에 요청
  3. Origin 서버는 정상적인 컨텐츠 전달 (200 응답)
  4. CDN 서버는 로컬 디스크에 응답 받은 컨텐츠 저장 & End User에게 200 응답 하면서 Miss 정보를 같이 전달 (Miss 전달은 선택적)
  5. CDN 서버가 Origin으로 요청하는 과정이 없고, 기존에 저장되어있는 콘텐츠를 바로 200으로 응답 (HIT)

 

IMS(If-Modified-since)

  • CDN Cache 서버에 저장되어 있는 콘텐츠의 Max-Age(TTL)이 만료되어 Origin에 콘텐츠가 변경되었는지 확인하는 요청

 

304 Response

  • 콘텐츠를 갱신하지 않고 기존에 저장되어 있는 콘텐츠 전송 (Not Modified)

 

컨텐츠가 변경되었다면?

  • Origin 서버는 304 응답을 하지 않고, 새로 바뀐 파일을 변경 해서 200 응답과 함께 전달

CDN 서버에서는 유효 기간이 지나지 않으면, Origin 서버에서 파일이 변경된 사실을 모름

 

Purge (=Flush, 캐시 무효화)

  • 고객 운영자가 Origin 서버의 컨텐츠가 변경되었으면 CDN 쪽으로 Purge(Cache 서버의 데이터를 삭제)해줘야지만, CDN 서버는 변경된 파일을 Origin으로 다시 요청하여 변경된 사실을 인지

 

Response Time (속도 성능 이슈 트러블 슈팅의 기초)

  • Response Time = DNS Lookup + TCP Connection + Time To First Byte + Contents Download
  1. 도메인을 조회하고 (DNS Lookup)
  2. 서버에 연결한 다음 (TCP Connection)
  3. 첫 번째 Byte를 다운받고 (Time To First Byte)
  4. 나머지 Data를 다운받음. (Contents Download)
    • HTTP로 서비스한 것 보다 CDN에서 자원을 많이 소모 (SSL HandShake 과정에 의해서 CPU Job 소모 & 데이터 암호화에도 CPU 사용)
  5. HTTPS (사용자와 CDN Cache 서버 간 데이터 암호화)

 

HTTPS Response Time

  • Response Time = DNS Lookup + TCP Connection + SSL HandShake + Time To First Byte + Contents Download

 

One Time URL (One Time Token)

  • 컨텐츠를 전송하는데 있어서, 사용이 인가된 정상적인 User에게만 컨텐츠 전송
  • 인증되지 않은 사용자의 다운로드를 방지하기 위해 One Time URL 제공
  • 사용자는 One Time URL Key를 통해서 CDN 서버에 요청
  • CDN 서버는 전달받은 키를 통해서 트래픽을 정상적으로 Delivery
  • 특정 파일의 해쉬된 쿼리스트링(? 뒤의 파라미터) 값이 올바르면 전달
  • AWS POP을 이루는 모든 리전과 Edge는 AWS 전용 회선으로 연결

 

1차 캐시 (=쉴드, 미들 캐시, 릴레이 캐시)

  • Origin 보호를 위해 Origin으로의 요청을 최소화하기 위한 Layer 구성
  • 물리적 여러 대의 Cache 그룹이, 하나의 논리적 Cluster 형태로 구성되어, Origin으로의 요청 최소화

 

Multi CDN

  • Provider 별 다양한 정책 관리
  • 대용량 트래픽 관리
  • 가용성 확대
728x90

'CDN' 카테고리의 다른 글

DNS 기초  (0) 2023.03.30
HTTP 기본  (0) 2023.03.30