CDN

newhyork·2022년 6월 4일
0

CDN


Contents Delivery Network

  • 인터넷 상에서, 서버로부터 물리적(거리 등)으로 멀리 떨어져 있는 클라이언트에게
    기존보다 빠르게 컨텐츠를 제공할 수 있는 기술이다.
    • 주로 웹 페이지, 이미지, 동영상 등의 컨텐츠 전송에 사용된다.
    • 클라이언트의 요청들을 여러 곳으로 분산 시켜, 나눠서 처리한다.
      • 미러 사이트(서버 전체 기능을 복사)를 두는 방식으로 하는 것을 일컫는 건 아니다.
      • 컨텐츠 ‘전달’ 이라는 용도에 특화된 것이다.

mechanism


  • CDN을 제공하는 플랫폼의 서비스를 이용하는 방식으로 사용한다.
    (컨텐츠 제공자는 따로 업체를 두지 않고 자체적으로 CDN을 구축하기도 한다.)
    • 해당 플랫폼은 전 세계 곳곳에 서버를 두고 있다. (Edge)
      (한국 내에서만 서비스하는 데에 특화된 CDN 플랫폼도 있다)
    • 미국의 한 클라이언트가 한국 서버의 사이트에 접속한다고 가정한다면
      한국 서버가 아니라, 해당 플랫폼의 미국에 있는 CDN 서버로 요청을 보내게 된다.
      • CDN 서버에는 본 서버의 각종 정적 컨텐츠들이 주로 저장 및 캐싱 되어있다.
      • CDN 서버에서 요청을 받을 수 있도록 하기 위해 DNS 상에서는,
        본 서버가 아니라 CDN 서버로 연결되도록 한다.
        - 이에 대한 설정은 보통 도메인을 구매한 곳에서 한다.
        - 요청을 받으면, 물리적 거리나 health-check 등을 감안하여
        여러 Edge 중에서 가장 빠르게 서비스할 수 있는 곳으로 연결시킨다.

caching

Edge에서의 캐싱 리소스는 본 서버의 서비스에 맞게 설정함에 따라 여러 방식이 있다.

  • 정적 캐싱 vs 동적 캐싱: 언제 캐싱할 것인가
    • 정적 캐싱: 캐싱할 것들을 미리 각 edge에 보낸다.
    • 동적 캐싱: edge에 컨텐츠가 있는지 클라이언트의 요청마다 확인하여,
      cache hit 시는 바로 응답하고, cache miss 시는 본 서버에 요청해서 받아온다.
    • 용량이 큰 파일은 정적 캐싱이 적절하다.
  • 정적 컨텐츠 vs 동적 컨텐츠
    • 정적 컨텐츠: HTML, CSS, JS 파일, 이미지 등의 데이터. 그 내용이 고정된 것.
    • 동적 컨텐츠: API를 통해 DB를 거치는 등으로 받아오는 데이터. 그 내용이 변할 수 있는 것.
    • 동적 컨텐츠는 정적 컨텐츠에 비해 캐싱하기 까다롭다.
      이에 따라, 정적 컨텐츠의 캐싱만 제공하는 플랫폼도 있다.
  • TTL (Time To Live): 지정한 시간 동안 캐싱되도록 하여, 본 서버의 부하를 줄일 수 있다.

advantages


  • 클라이언트 측에서는 느린 로딩 속도에 따른 불편함을 겪지 않을 수 있고,
    서버 측에서는 해외의 수많은 요청들을 한 군데서 모두 감당하지 않아도 된다.
    • 따라서, 시스템의 가용성(정상적으로 사용 가능한 정도)이 증가한다.
  • 본 서버만 있을 때 부하를 감당하기 위해 사용하던 비용보다
    CDN을 사용함으로써 아끼는 비용이 더 클 수 있다.
    즉, 본 서버로 직접 요청이 오지 않는다는 점에서
    대역폭(bandwidth)과 관계하여, 서버의 호스팅 비용이 절감된다.
    • 대역폭: 동시에 전송할 수 있는 최대 데이터 양.
      네트워크에 사용되는 용어로, capacity에 중점적인 개념이다.
      • 전송 속도는 단위 시간 당 전송할 수 있는 데이터 양으로,
        velocity에 중점적인 개념이다.
        (일반적으로 네트워크 속도라 함은 전송 속도를 말하곤 한다.)
      • 데이터 전송량을 측정할 때는
        대역폭과 전송 속도 둘 다 고려해서 따져봐야 한다.
  • 보안
    • DDoS 공격에 대응할 수 있다.
    • CDN에서 제공하는 검증된 인증 방식을 통해, 컨텐츠 암호화도 가능하다.

0개의 댓글