CDN
배경
수천만명이 넘어가는 사용자들에게 어떻게 해야 컨텐츠를 끊김없이 안정적으로 제공해 줄 수 있을까?
단순한 해결 방법은 단일한 거대 데이터 센터를 구축하고 모든 컨텐츠를 저장한 뒤 사용자에게 직접 전송하는 것입니다.
하지만 문제가 있습니다.
- 데이터 센터로부터 먼 지역이라면 전송이 느려져 사용자가 불편함을 느낄 것입니다. 거리가 멀면 멀수록 사용자의 불편함은 커질 것입니다.
- 인기 있는 컨텐츠의 경우 반복해서 전송이 될텐데 이렇게 되면 네트워크 대역폭의 낭비입니다. 또한 전송에 대한 비용이 중복해서 발생하게 됩니다.
- 단일한 데이터 센터이기 때문에 한 번의 장애로 전체 서비스가 중단될 수 있는 위험이 있습니다.
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을 지정해 컨텐츠를 요청
- 해당 URL에 대한 DNS 질의를 지역 DNS 서버(LDNS)에 전달
- LDNS는 해당 질의를 책임 DNS 서버에 전달
- CDN은 요청을 가로채 그 시점에 가장 적당한 CDN 클러스터 선택
- 책임 DNS 서버는 컨텐츠가 있는 CDN 책임 서버의 호스트 이름을 LDNS에 전달
- LDNS는 CDN 책임 서버의 DNS에 의해 CDN 컨텐츠 서버의 IP 주소를 받음
- 해당 클러스터의 서버로 연결
- LDNS는 받은 IP 주소를 호스트에게 알림
- 해당 IP 주소로 직접 TCP 연결 후 HTTP GET 요청 전송
사용하는 이유
- CDN을 사용하면서 동작시키는 서버의 비용이 단순하게 서버만 동작시키는 비용보다 적습니다. 서버로 직접 요청이 들어오지 않기 때문에 대역폭 비용이 절감됩니다.
- 서버로 오는 직접 요청이 줄어들기 때문에 가용성과 안정성이 향상됩니다.
- 보안에 도움이 됩니다. 분산을 통해 DDoS 공격을 막아낼 수 있습니다.
사례
- 넷플리스
- 유튜브
참고
얄팍한 코딩사전 CDN
컴퓨터 네트워킹 하향식 접근 8판