1 minute read

배경

수천만명이 넘어가는 사용자들에게 어떻게 해야 컨텐츠를 끊김없이 안정적으로 제공해 줄 수 있을까?

단순한 해결 방법은 단일한 거대 데이터 센터를 구축하고 모든 컨텐츠를 저장한 뒤 사용자에게 직접 전송하는 것입니다.
하지만 문제가 있습니다.

  1. 데이터 센터로부터 먼 지역이라면 전송이 느려져 사용자가 불편함을 느낄 것입니다. 거리가 멀면 멀수록 사용자의 불편함은 커질 것입니다.
  2. 인기 있는 컨텐츠의 경우 반복해서 전송이 될텐데 이렇게 되면 네트워크 대역폭의 낭비입니다. 또한 전송에 대한 비용이 중복해서 발생하게 됩니다.
  3. 단일한 데이터 센터이기 때문에 한 번의 장애로 전체 서비스가 중단될 수 있는 위험이 있습니다.

CDN을 사용해 고민을 해결하고 있습니다.

CDN

Content Delivery Network.
지리적으로 분산된 여러 서버를 통해 웹페이지, 이미지, 동영상 등의 여러 컨텐츠를 사용자와 가까운 곳에서 전송함으로써 전송 속도를 높입니다.

종류

  • 콘텐츠 제공자(Content Provider)가 소유한 사설 CDN(private CDN)
  • 제 3자가 운영하는 CDN(third-party CDN)
    • Akamai, Limelight, Level-3 등

서버의 위치

  • Enter Deep: 서버 클러스터를 여러 접속 네트워크에 구축함으로써 ISP의 접속 네트워크로 깊숙이 들어가는 것.
  • Bring Home: 비교적 적은 수의 핵심 지점에 큰 규모의 서버 클러스터를 구축해 ISP를 Home으로 가져오는 것. 일반적으로 IXP에 배치.

동작

  • 사용자 호스트의 웹 브라우저가 URL을 지정해 컨텐츠를 요청
    1. 해당 URL에 대한 DNS 질의를 지역 DNS 서버(LDNS)에 전달
    2. LDNS는 해당 질의를 책임 DNS 서버에 전달
  • CDN은 요청을 가로채 그 시점에 가장 적당한 CDN 클러스터 선택
    1. 책임 DNS 서버는 컨텐츠가 있는 CDN 책임 서버의 호스트 이름을 LDNS에 전달
    2. LDNS는 CDN 책임 서버의 DNS에 의해 CDN 컨텐츠 서버의 IP 주소를 받음
  • 해당 클러스터의 서버로 연결
    1. LDNS는 받은 IP 주소를 호스트에게 알림
    2. 해당 IP 주소로 직접 TCP 연결 후 HTTP GET 요청 전송

사용하는 이유

  • CDN을 사용하면서 동작시키는 서버의 비용이 단순하게 서버만 동작시키는 비용보다 적습니다. 서버로 직접 요청이 들어오지 않기 때문에 대역폭 비용이 절감됩니다.
  • 서버로 오는 직접 요청이 줄어들기 때문에 가용성과 안정성이 향상됩니다.
  • 보안에 도움이 됩니다. 분산을 통해 DDoS 공격을 막아낼 수 있습니다.

사례

  • 넷플리스
  • 유튜브
참고

얄팍한 코딩사전 CDN
컴퓨터 네트워킹 하향식 접근 8판

Categories:

Updated: