호우동의 개발일지

Today :

article thumbnail

거대 데이터 센터 구축 및 직접 전송

  • 인터넷 비디오 회사에서 스트리밍 서비스를 제공하는 가장 단순한 방법
  • 인터넷 비디오 회사들은 엄청난 스트리밍 트래픽을
    전 세계에 걸친 지점에 끊김 없이 안정적으로 제공하는 일을 한다.
    • 이러한 일들은 매우 어려운 문제임

과정

  1. 단일한 거대 데이터 센터를 구축하여 모든 자료를 센터에 저장
  2. 전 세계의 사용자에게 비디오 스트림을 데이터 센터로부터 직접 전송

 

문제점

  • 클라이언트가 데이터 센터로부터 멀리 있는 경우
    • 서버로부터 클라이언트로의 패킷 경로는 많은 통신 링크와 ISP를 거쳐감
    • 거쳐가는 많은 통신 링크 중 하나라도 비디오 소비율보다 낮은 전송용량인 경우
      → 종단 간에 처리율이 낮아지고, 결국 사용자는 화면 정지 현상을 겪음

      • 종단 간의 길이가 길어질수록 이런 현상은 증가

  • 인기 있는 비디오는 같은 통신 링크를 통해 반복적으로 전송될 것이라는 점
    • 네트워크 대역폭의 낭비를 초래
    • 회선을 제공하는 ISP들에게 동일한 바이트를 전송
      → 중복 비용을 지불하는 결과를 초래

  • 단일한 데이터 센터를 구축하면, 한 번의 장애로 전체 서비스가 중단될 수 있는 위험
    • 데이터 서버와 관련된 장애가 발생하면 어떠한 비디오 스트리밍 서비스도 불가능

  • 이러한 문제점을 해결하기 위해 대부분의 스트리밍 회사들은 콘텐츠 분배 네트워크를 사용

 

 


콘텐츠 분배 네트워크의 개념

  • 콘텐츠 분배 네트워크(Content Distribution network, CDN)
    • 다수의 지점에 분산된 서버들을 운영
      → 비디오 혹은 다른 콘텐츠 데이터의 복사본을 분산 서버에 저장

    • 사용자는 최선의 서비스와 사용자 경험을 제공할 수 있는 CDN 서버 지점으로 연결
      • CDN 서버는 사설 CDN 혹은 제삼자가 운영하는 CDN일수도 있음

 

 


CDN의 서버 위치에 대한 2가지 철학(CDN 구축 방식)

  • CDN은 일반적으로 서버 위치에 대해 다음 2가지 철학 중 하나를 채용하고 있다.

 


Enter Deep

  • ISP의 접속 네트워크로 깊숙이 들어가는 것
    서버 클러스터를 세계 곳곳의 접속 네트워크를 구축
    • 서버 클러스터 : kr, uk, fr, ca, jp 같은 모든 국가의 상위 레벨 도메인에 대한 TLD 서버

  • 수천 개의 지점에 서버 클러스터를 구축함으로써 해당 방식을 구현
  • Akamai에 의해 주창된 것
  • 이 방식의 목적 : 서버를 최대한 사용자 가까이에 위치
    → 사용자와 CDN 서버 사이의 링크 및 라우터 수를 줄이고, 지연 시간 및 처리율을 개선

  • 문제점 : 고도로 분산된 설계로 인해 서버 클러스터 유지 관리 비용이 커짐

 


Bring Home

  • 좀 더 적은 수의 핵심 지점에 큰 규모의 서버 클러스터를 구축
    → ISP를 Home으로 가져오는 개념

  • 접속 ISP에 연결하는 대신, 클러스터는 인터넷 교환 지점(IXP)에 배치된다.
  • 장점 : Enter Deep 방식에 비해 클러스터 유지 및 관리 비용이 줄어듦
  • 단점 : 사용자가 느끼는 지연 시간과 처리율은 상대적으로 나빠짐

 


CDN은 비디오 콘텐츠의 복사본 저장

  • 서버 클러스터의 위치가 정해지면, CDN은 콘텐츠의 복사본을 클러스터에 저장한다.
    • CDN은 각 클러스터마다 모든 비디오의 복사본을 전부 유지할 필요가 없다.
      ← 비디오별로 인기 있는 국가가 다르기 때문에 해당 비디오의 수요가 적을 수 있음

 

CDN의 Pull 방식 사용

  • CDN은 클러스터에 대해 Push 방식이 아닌 Pull 방식을 사용한다.
  • 클러스터의 저장공간이 가득 차면 자주 사요 되지 않은 비디오 데이터는 삭제됨
  • 사용자가 지역 클러스터에 없는 비디오를 요청할 경우의 전송 과정
    1. 그 지역 클러스터는 해당 비디오를 중앙 서버나 다른 클러스터로부터 전송받음
    2. 전송받은 비디오를 사용자에게 서비스하는 동시에 복사본을 만들어 저장

 

 


CDN 동작


CDN의 전체적인 동작

  1. 사용자 호스트의 웹 브라우저가 URL을 지정함으로써 특정 비디오의 재생을 요청
  2. CDN은 그 요청을 가로채 그 시점에서 클라이언트에게 가장 적당한 CDN 클러스터 선택
    • 클러스터 선택 방법은 아래에서 기술
  3. 클라이언트 요청을 해당 클러스터의 서버로 연결

 


CDN이 사용자의 요청을 가로채고 다른 곳에 연결하는 절차

  • 대부분의 CDN은 사용자 요청을 가로채고 연결하는데 DNS를 활용

DNS 활용 예시

  • A라는 콘텐츠 제공자가 a라는 CDN 업체를 이용해 비디오를 고객에게 분배 가정
    → A의 웹페이지에서는 각 비디오가 URL을 할당받음

    • URL에는 ‘video’라는 문자열과 고유한 ID를 포함한다.
    • ex ) 트랜스포머 7의 비디오 → http://video.A.com/6Y7B23V 

DNS를 사용하여 가로채는 과정

  • DNS 서비스를 수행하는 과정에서 클라이언트의 LDNS 서버의 주소를 알게 됨

DNS는 사용자 요청을 CDN 서버로 보낸다.

  1. 사용자가 A의 웹 페이지를 방문
  2. 사용자가 http://video.A.com/6Y7B23V 링크를 클릭
    → 사용자의 호스트는 video.A.com에 대한 DNS 질의를 보냄

  3. 사용자의 지역 DNS 서버(LDNS)는 호스트 이름의 ‘video’ 문자열을 감지
    → 해당 질의를 A의 책임 DNS 서버로 전달

    • A 책임 DNs 서버는 해당 DNS 질의를 a로 연결하기 위해,
      IP 주소 대신 a의 호스트 이름을 LDNS에게 알려준다.
      • a의 호스트 이름 : c1105.a.com

  4. 사용자의 LDNS는 c1105.a.com에 대한 두 번째 질의를 보냄
    → 이는 a 콘텐츠 서버의 IP 주소로 변환되어 LDNS에게 응답됨
    → 이때, 클라이언트가 콘텐츠를 전송받게 될 서버가 결정
    • 이 시점부터 DNS 질의는 a의 사설 DNS 구조로 들어가게 된다.

  5. LDNS는 콘텐츠를 제공할 CDN 서버의 IP 주소를 사용자 호스트에게 알려준다.
  6. 클라이언트는 a 서버의 IP주소를 얻고 나면, 해당 IP 주소로 직접 TCP 연결을
    설정하고 비디오에 대한 HTTP GET 요청을 전송한다.

    • DASH가 사용될 경우
      1. 서버는 매니페스트 파일을 클라이언트에게 전송
        • 매니페스트 파일은 각기 다른 버전의 비디오에 대한 URL 목록을 포함

      2. 클라이언트는 동적으로 각기 다른 버전의 chunk 데이터를 선택

 

 


클러스터 선택 정책

  • 클라이언트를 동적으로 어떤 서버 클러스터/ CDN 데이터 센터로 연결하는 방식
    • CDN 구축의 핵심 중 하나
    • IP 주소를 알아낸 CDN은 해당 IP 주소를 기반으로 최선의 클러스터를 선택해야 함

  • CDN은 각기 고유한 클러스터 선택 정책을 사용한다.

 


일반적인 클러스터 선택 기법

지리적으로 가장 가까운 클러스터를 할당하는 기법

  • 가장 간단한 클러스터 정책 중 하나
  • Quova 같은 상용 지리정보 데이터베이스를 이용
    → LDNS의 IP 주소를 지리적으로 매핑 가능

  • 한계점
    • 대부분의 클라이언트를 대상으로 잘 동작
      • But, 일부 클라이언트에선 잘 동작하지 않음
        ← 네트워크 경로의 길이 홉(hop)의 수에 따라 가장 가까운 클러스터가 아닐 수 있음
        • 지리적으로 가장 가까운 클러스터라고 가장 가까운 클러스터라고 할 수 없음

    • 일부 사용자는 멀리 있는 DNS 서버를 LDNS로 사용하도록 설정할 수 있음
      → LDNS의 IP 주소를 기반으로 선택한 클러스터는 사용자 호스트로부터 멀리 배치
      • DNS 기반 방법에 내재된 문제

    • 항상 같은 클러스터를 클라이언트에게 할당
      → 인터넷 경로의 지연이나 가용 대역폭의 변화 등을 무시

 

실시간 측정 방식(real-time measurements)

  • 현재의 네트워크 트래픽 상황을 반영한 클러스터 선택 방식
  • 주기적으로 클러스터와 클라이언트 간의 지연 및 손실 성능에 대한 측정을 함
  • 예시
    • 프로브 메시지를 주기적으로 LDNS들에게 전송
      • 프로브 메시지 → CDN은 각 클러스터가 ping, DNS 질의 등
      • 하지만 LDNS는 프로브 메시지에 응답하지 않도록 설정되어 있다는 점