본문으로 건너뛰기

CDN_시스템 설계 노트 4

무료2020-01-26#Back-End#Scattered CDN#Consolidated CDN#CDN Architecture#CDN架构图#CDN实现原理

CDN 이란 무엇인가? 어떤 용도가 있는가? 어떤 모습인가? 어떻게 작동하는가?

一.개념

CDN(Content Delivery Network, 콘텐츠 전송 네트워크) 은 서로 다른 지리적 위치에 분산된 프록시 서버와 그 데이터센터로 구성된 네트워크입니다:

A content delivery network or content distribution network (CDN) is a geographically distributed network of proxy servers and their data centers.

공간 거리상에서 사용자에게 가까이 서비스를 제공하여 가용성과 성능을 향상시키는 것을 목표로 합니다:

The goal is to provide high availability and high performance by distributing the service spatially relative to end-users.

P.S.공간 거리는 네트워크 전송상에서 홉수 (hop) 로 나타납니다. 클라이언트에서 서버까지 경유하는 홉수가 많을수록 거리가 멀고, 일반적으로 지연도 커집니다

二.작용

CDN 은 일반적으로 Web 리소스 (텍스트, 이미지, 스크립트 포함), 다운로드 가능한 리소스 (미디어 파일, 소프트웨어, 문서 등), 애플리케이션 (전자 상거래, 포털 사이트 등), 스트리밍 미디어 및 소셜 미디어 사이트의 호스팅에 사용되며, 이러한 리소스에 대한 액세스를 가속화합니다

성능 면에서, CDN 을 도입하는 작용은 다음과 같습니다:

  • 사용자가 수신하는 콘텐츠는 가장 가까운 데이터센터에서 제공되며, 지연이 낮고 콘텐츠 로딩이 빠름

  • 일부 리소스 요청이 CDN 에 아웃소싱되어, 서버 부하가 감소됨

한편으로는 콘텐츠와 최종 사용자 간의 거리를 단축하고, 다른 한편으로는 콘텐츠를 직접 서버에서 가져오지 않으므로, 서버의 계산 리소스를 절약하고 오리진 서버의 압력을 분담합니다

보안상, CDN 은 DDoS, MITM 등의 네트워크 공격 방어에 도움이 됩니다:

  • DDoS(Distributed Denial of Service): 이상 트래픽을 모니터링 분석하고, 요청 빈도를 제한

  • MITM(Man-In-The-Middle): 오리진 서버에서 CDN 노드에서 ISP(Internet Service Provider) 까지, 전체 링크 HTTPS 통신

게다가, 기본적인 클라우드 서비스 (IaaS) 로서, CDN 은 리소스 호스팅, 수요에 따른 확장 (트래픽 피크에 대응 가능) 등의 장점도 가집니다:

This reduces content providers' infrastructure requirements, and lets them deploy or expand services more quickly and easily.

P.S.IaaS, PaaS, SaaS 에 대한 더 많은 정보는 [IaaS-PaaS-SaaS 정의](/articles/iaas-paas-saas 정의/) 참조

三.구조

토폴로지 구조상, CDN 은 분산식 (Scattered CDN) 과 통합식 (Consolidated CDN) 두 가지로 분류됩니다

Scattered CDN

전 세계에 가능한 한 많은 서버를 배포하는 것을, 분산식 CDN 이라고 합니다:

Scattered CDNs aim to have as many servers scattered around the world as possible.

초기의 CDN 은 대량의 중저성능 서버로 선택된 지리적 영역을 밀집하게 채웠습니다. 이 소규모 노드는 배포가 용이하며, 특히 저연결성 (low-connectivity) 영역에 적합합니다

글로벌 연결성의 끊임없는 향상에 따라, 물리적 거리를 축소하는 이익은 점차 감소하고, 대량 노드의 유지 비용도 두드러져, 통합식 CDN 이 등장했습니다

Consolidated CDN

통합식 CDN 은 주요 데이터센터에만 소량의 노드를 가지지만, 노드의 성능은 더 강력하며, 네트워크, 처리량, DDoS 내성을 포함합니다:

Consolidated CDNs have fewer points, but bigger ones built for network performance, throughput, and DDoS resistance.

이 집중식 구조는 전체 응답 능력 향상에 도움이 되며, 사용자와 네트워크 운영자에게 더 많은 제어를 제공하지만, 배포는 비교적 복잡하고, 저연결성 영역에서는 효과가 떨어집니다

四.분류

CDN 은 콘텐츠 전송 방식에 따라 Push CDN 과 Pull CDN 으로 분류됩니다

전자는 콘텐츠 서버가 사전에 콘텐츠를 CDN 에 "푸시"하여 캐시하고, 후자는 사용자가 콘텐츠에 액세스할 때 CDN 이 목표 리소스를 "풀"하여 캐시합니다

Push CDN

콘텐츠가 변화할 때마다, 새로운 콘텐츠를 Push CDN 에 업로드합니다. 추가된 콘텐츠와 변화한 콘텐츠만 업로드하면 되므로, 전송에 사용되는 트래픽은 비교적 적지만, 저장하는 콘텐츠는 비교적 많아집니다

따라서, Push CDN 은 소트래픽, 또는 콘텐츠 업데이트가 빈번하지 않은 사이트에 적합합니다. 콘텐츠는 한 번 CDN 에 배치되며, 주기적으로 다시 풀할 필요가 없습니다. 트래픽 부하가 본래 무겁거나, 콘텐츠 변경이 빈번한 경우, Push CDN 은 서버에 추가의 압력을 가져옵니다

Pull CDN

Pull CDN 은 수동 업로드가 불필요하며, 사용자가 처음 액세스할 때 자동으로 서버에서 새로운 콘텐츠를 풀하여 캐시합니다. 수요에 따른 캐시는 CDN 저장 공간을 절약하지만, 파일 만료 또는 변화가 없을 때 다시 풀하면 불필요한 트래픽 오버헤드가 발생합니다

따라서, Pull CDN 은 대트래픽 사이트에 적합합니다. 최근 사용된 (가장 인기 있는) 콘텐츠만 캐시하며, 한 번 설정하면 수요에 따른 캐시가 가능하고, 유지 비용이 낮습니다

五.원리

몇 가지 용어가 포함됩니다:

  • 오리진 서버 (Origin server): 콘텐츠 (데이터) 소스를 제공하는 서버

  • 에지 서버 (Edge server): 오리진 서버からの 콘텐츠를 캐시하는 데 사용되는 서버

  • 포인트 오브 프레즌스 (Point of Presence, PoP): 에지 서버가 위치한 물리적 위치. 하나의 PoP 에 여러 개의 에지 서버가 존재할 수 있습니다

  • CDN 리버스 프록시 (CDN Reverse Proxy): 사용자 요청을 오리진 서버로 전달하고, 오리진 서버からの 응답을 캐시합니다. Pull CDN 에 사용

  • 백투소스 (Back-to-source): CDN 노드가 요청 리소스를 캐시하지 않았거나 캐시 리소스가 만료된 경우, 오리진 사이트에서 리소스를 가져와 클라이언트에 반환

작동 원리

Pull CDN 을 예로 들면, 특정 지역의 사용자가 처음 리소스에 액세스할 때, 오리진 서버에서 가져오고, 콘텐츠 응답을 사용자에게 반환한 후, 리소스는 해당 지역의 에지 서버에 캐시됩니다. 동일 지역의 사용자가 다시 같은 리소스를 요청하면, 에지 서버에서 응답됩니다:

![](https://www.keycdn.com/img/support/what-is-a-cdn-how-does-it-work-lg @2x.webp)

P.S.응답 헤더의 특정 필드를 통해, 콘텐츠 응답이 오리진 서버에서인지 CDN 캐시에서인지 구분할 수 있습니다. 예를 들어:

  • X-Cache: HIT: 캐시 히트, 응답 콘텐츠는 CDN 캐시에서

  • X-Cache: MISS: 캐시 미스, 응답 콘텐츠는 오리진 서버에서

구현 원리

구현상, 서브도메인의 해석 권한을 CNAME 기록 을 통해 CDN 에 위임하고, 이어 지리적 위치의 근접도에 기반한 라우팅 전략 을 통해, 요청을 사용자에게 가장 가까운 에지 서버에 매핑합니다:

Push CDN 의 경우, 에지 서버는 캐시 서비스만 제공하며, 캐시 미스면 404 를 반환합니다. Pull CDN 의 경우, 에지 서버는 리버스 프록시 서비스를 제공하며, 캐시 미스 시 오리진에 가져오러 갑니다

참고 자료

댓글

아직 댓글이 없습니다

댓글 작성