CDN 기본 개념 및 설계 - 시스템 설계 12

system-design-시스템설계 12-CDN-기본개념 및 설계-how-cdn-work-hogantech

머리말

소프트웨어 엔지니어라면 CDN이라는 용어에 대해 잘 알고 있을 것이다. 그러나 CDN의 원리와 설계 방법을 자세히 살펴보면 그다지 명확하지 않을 수 있으므로 먼저 콘텐츠 전송 네트워크(Content Delivery Network)에 대해 설명하겠다. 콘텐츠 전달 네트워크) 개념 및 구현 방법.

CDN에서 시스템 설계까지

CDN을 설명하기 전에, 전 세계 수백만 명의 사용자가 하나의 시스템을 사용하고 있고, 우리의 서비스가 사용자의 요청(Request)을 충족하기 위해 단일 데이터 센터에 배포된다면 어떤 문제가 발생할 수 있는지 다시 살펴보겠습니다. 우리는?

높은 대기 시간

사용자, 데이터 센터, 서버 간의 물리적 거리가 너무 멀면 대기 시간이 늘어납니다. 사용자가 높은 대기 시간을 경험하는 경우 이는 일반적으로 한 가지 이유가 아니라 전송 지연, 전파 지연, 대기열 지연 및 노드 노드 처리 지연과 같은 여러 가지 복잡한 이유 때문에 발생합니다. 장거리 데이터 전송은 확실히 더 높은 지연으로 이어질 것입니다. 인간의 신체 인식에 따르면 시스템 지연이 200밀리초 미만이기를 바랍니다. VoIP(Voice over Internet Protocol)의 경우 지연은 150밀리초를 초과해서는 안 되며, 비디오 재생 플랫폼은 몇 초의 지연을 초과하면 안 됩니다. 예: Youtube 클릭할 때마다 동영상이 몇 초 동안 지연되어 사용자를 잃게 됩니다.

데이터 집약적 애플리케이션

데이터 집약적인 애플리케이션에는 일반적으로 대량의 트래픽 전송이 필요합니다. 장거리의 경우 네트워크 경로가 다양한 유형의 ISP(인터넷 서비스 제공업체)를 통과하므로 이는 문제가 될 수 있습니다. 사용자 수가 증가하면 서버가 각 사용자에게 개별적으로 데이터를 제공해야 하기 때문에 이러한 유형의 문제는 기하급수적으로 증가하거나 증가합니다. 즉, 여러 클라이언트가 요청하면 메인 데이터 센터에서는 쓸모없는 데이터(Redundant Data)를 대량으로 보내야 합니다.

데이터 센터 자원의 부족

사용자 수가 증가하면 데이터 센터 리소스의 컴퓨팅 성능과 대역폭이 제한되거나 심지어 병목 현상이 발생합니다. 따라서 수백만 명의 사용자를 위한 시스템 서비스를 확장해야 합니다. 그러나 단일 데이터센터에서 확장이 이루어지더라도 자연재해나 네트워크 연결 문제로 인해 데이터센터가 오프라인 상태가 되면 여전히 단일 장애 지점(Single Point of Failure)이 될 수 있습니다.

CDN이란 무엇입니까?

CDN(Content Delivery Network)은 위와 같은 문제를 해결하기 위해 사용되는 솔루션 중 하나입니다. 우선, CDN은 지리적 위치를 기반으로 배치된 프록시 서버(Proxy Server) 그룹입니다. 그 중 프록시 서버는 클라이언트와 서버 사이의 중간 서버로, 프록시 서버 역시 네트워크 에지(Network Edge)에 배치됩니다. 또한 네트워크의 가장자리가 최종 사용자와 가깝기 때문에 프록시 서버를 배치하면 지연을 줄이고 대역폭을 절약하여 해당 데이터를 사용자에게 빠르게 전송할 수 있습니다. CDN은 간단한 프록시 서버 역할을 하는 것 외에도 일부 설정 및 작업을 통해 CDN을 더욱 효율적으로 만들 수 있습니다.

CDN은 사용자 근처에 작은 데이터 센터를 배치하고 거기에 데이터 복사본을 저장하여 데이터를 사용자에게 더 가까이 가져옵니다. CDN은 주로 정적 및 동적이라는 두 가지 유형의 데이터를 저장하며, 주로 데이터를 사용자에게 더 가까이 가져와 전파 지연 문제를 해결합니다. 또한 CDN 제공업체는 충분한 가용 대역폭을 제공하고 데이터를 사용자에게 더 가까이 가져오기 위해 추가 비용을 발생시킵니다.

그렇다면 앞에서 언급한 질문으로 돌아가서, CDN은 높은 대기 시간, 데이터 집약적인 애플리케이션 및 데이터 센터 리소스 부족 문제를 어떻게 해결합니까?

  • 높은 대기 시간 : CDN의 물리적 설치는 클라이언트와 상대적으로 가깝기 때문에 사용자는 CDN을 통해 해당 데이터를 얻을 수 있으므로 물리적 거리와 지연이 줄어듭니다.
  • 데이터 집약적 애플리케이션: 데이터 경로에는 ISP 및 인근 CDN 구성요소만 포함되어 있으므로 특정 지역의 적은 수의 CDN 구성요소로 많은 사용자에게 서비스를 제공하는 데 문제가 없습니다. 아래와 같이 원본 데이터 센터는 로컬 CDN 구성 요소에 한 번만 데이터를 제공하면 되며, 로컬 CDN 구성 요소는 독립적으로 여러 사용자에게 데이터를 제공할 수 있습니다. 어떤 사용자도 원본 서버에서 데이터 사본을 다운로드할 필요가 없습니다.
  • 데이터 센터 리소스가 부족합니다.: CDN은 인기 콘텐츠를 서비스하는 데 사용됩니다. 이러한 이유로 대부분의 트래픽은 원본 서버가 아닌 CDN에서 처리됩니다. 따라서 서로 다른 로컬 또는 분산 CDN 요소가 원본 서버의 로드를 공유합니다.

CDN 설계 요구 사항

이 기사에서 소프트웨어 설계의 비기능적 특징 – 시스템 설계 03 , 기능적 요구사항과 비기능적 요구사항도 설명했으므로 CDN을 설계하고 싶기 때문에 먼저 기능적 요구사항과 비기능적 요구사항을 나열해야 합니다.

기능 요구 사항

CDN은 데이터베이스로 간주될 수 있으므로 기본적으로 다음과 같은 기능이 필요합니다.

  1. 검색하다: CDN 모델의 종류에 따라 CDN이 서버로부터 콘텐츠를 수신할 수 있어야 합니다.
  2. 요구: 프록시 서버는 사용자의 요청에 따라 콘텐츠를 전송하고, CDN 프록시 서버는 각 사용자의 요청에 응답할 수 있어야 합니다.
  3. 배달하다: 서버는 CDN 프록시 서버에 콘텐츠를 전달할 수 있어야 합니다.
  4. 찾다: CDN은 CDN 내에 캐시되거나 저장된 콘텐츠에 대한 사용자 쿼리에 대한 검색을 수행할 수 있어야 합니다.
  5. 업데이트: 대부분의 경우 콘텐츠는 서버 측에서 제공되지만 CDN에서 스크립트를 실행하면 CDN은 PoP의 피어 CDN 프록시 서버에서 콘텐츠를 업데이트할 수 있어야 합니다. 그중 PoP(Point of Presence)는 둘 이상의 네트워크 또는 통신 장치가 연결을 공유하는 경계 지점, 액세스 포인트 또는 물리적 위치를 의미합니다.
  6. 삭제: 콘텐츠 유형(정적 또는 동적)에 따라 캐시된 항목은 일정 시간이 지난 후 CDN 서버에서 제거되어야 합니다.

비기능적 요구사항

비기능적 요구사항을 이해하지 못하는 독자는 이 기사를 볼 수 있습니다.  소프트웨어 설계의 비기능적 특징 – 시스템 설계 03 .

  1. 성능: CDN의 가장 중요한 작업 중 하나는 지연 시간을 최소화하는 것이며, 이는 많은 개발자가 CDN을 사용하는 주요 이유이기도 합니다.
  2. 가용성: 가용성은 시스템이 지속적으로 가용성을 유지할 수 있도록 보장하는 데 사용되므로 CDN을 사용하여 DDoS와 같은 일부 시스템 공격을 방지할 수 있습니다.
  3. 확장성: 점점 더 많은 클라이언트 애플리케이션이 CDN에 데이터를 요청할 수 있으므로 CDN을 체계적으로 확장할 수 있습니다.
  4. 신뢰성: CDN 설계는 단일 실패 지점이 없음을 보장해야 합니다. 장애 외에도 CDN은 대규모 트래픽 부하를 처리할 수 있도록 높은 신뢰성으로 설계되어야 합니다.

CDN 시스템 설계

CDN 디자인 자체는 상대적으로 복잡하기 때문에 Grokking Modern System Design의 일러스트레이션을 인용하여 CDN 시스템 디자인을 자세히 설명하겠습니다. 여기에서는 CDN의 구성 요소를 각각 소개하고, 구성 요소를 기반으로 CDN의 작동 원리를 설명합니다.

CDN 구성요소

CDN(Content Delivery Network)은 전 세계 서버로 구성된 분산 네트워크로, 사용자에게 콘텐츠를 빠르게 전달하는 데 사용됩니다. CDN은 웹사이트 성능을 향상시키고 대기 시간을 줄이며 사용자 경험을 향상시킬 수 있습니다.

CDN 시스템 설계의 주요 요소는 다음과 같습니다.

  1. 클라이언트:사용자는 브라우저, 스마트폰, 태블릿 등 다양한 클라이언트에서 CDN의 콘텐츠를 요청합니다.
  2. 라우팅 시스템:라우팅 시스템은 사용자를 가장 가까운 CDN 시설로 안내하는 역할을 합니다. 이를 위해 라우팅 시스템은 다음 요소를 고려해야 합니다.
      • 콘텐츠 배치
      • 사용자 요청
      • 서버 부하
  3. 스크러버 서버:보다 깨끗한 서버는 정상적인 트래픽과 악성 트래픽을 분리하고 공격을 방지하는 데 사용됩니다. 일반적인 공격 유형에는 DDoS 공격이 포함됩니다.
  4. 프록시 서버: 프록시 서버는 사용자에게 콘텐츠를 제공합니다. 프록시 서버는 성능 향상을 위해 인기 있는 콘텐츠를 RAM에 저장하는 경우가 많습니다. 프록시 서버는 배포 시스템으로부터 콘텐츠도 수신합니다.
  5. 분배 체계: 배포 시스템은 CDN의 다양한 시설에 콘텐츠를 배포하는 역할을 담당합니다. 배포 시스템은 다음과 같은 다양한 기술을 사용하여 콘텐츠를 배포할 수 있습니다.
    • 은닉처
    • 압축
    • 스트리밍
  6. 오리진 서버: 원본 콘텐츠가 저장되는 곳은 원본 서버입니다. CDN에서 콘텐츠를 사용할 수 없는 경우 사용자는 원본 서버에 콘텐츠를 요청합니다.
  7. 관리 시스템: CDN의 성능과 상태를 모니터링하는 데 사용되는 관리 시스템입니다. 관리 시스템은 대기 시간, 가동 중지 시간, 트래픽 및 오류율과 같은 지표에 대한 데이터를 수집할 수 있습니다.
system-design-시스템 설계 12-CDN-기본 개념 및 설계-how-cdn-work-hogantech-00

CDN 원리

이 CDN 프로세스는 Grokking Modern System Design에서 설명합니다.

  1. 원본 서버는 CDN에 캐시된 모든 개체의 URI를 요청 라우팅 시스템에 제공합니다.
  2. 원본 서버는 활성 에지 프록시 서버 전체의 데이터 배포를 담당하는 배포 시스템에 콘텐츠를 게시합니다.
  3. 배포 시스템은 프록시 서버 간에 콘텐츠를 배포하고 요청 라우팅 시스템에 피드백을 제공합니다. 이 피드백은 클라이언트 요청을 위해 가장 가까운 프록시 서버 선택을 최적화하는 데 도움이 됩니다. 이 피드백에는 관련 프록시 서버로 트래픽을 라우팅하기 위해 어떤 프록시 서버에 어떤 콘텐츠가 캐시되는지에 대한 정보가 포함되어 있습니다.
  4. 클라이언트는 라우팅 시스템에서 적절한 프록시 서버를 요청합니다.
  5. 요청 라우팅 시스템은 적절한 프록시 서버의 IP 주소를 반환합니다.
  6. 보안상의 이유로 클라이언트 요청은 클리너 서버를 통해 라우팅됩니다.
  7. 스크러버 서버는 양호한 트래픽을 에지 프록시 서버로 전달합니다.
  8. 엣지 프록시 서버는 클라이언트 요청을 처리하고 정기적으로 계정 정보를 관리 시스템에 전달합니다. 관리 시스템은 소스 서버를 업데이트하고 콘텐츠에 대한 통계 및 세부 정보와 함께 라우팅 시스템에 피드백을 보냅니다. 그러나 프록시 서버에서 콘텐츠를 사용할 수 없는 경우 요청은 원본 서버로 라우팅됩니다. 에지 프록시 서버에서 콘텐츠를 찾을 수 없는 경우 프록시 서버 계층 구조가 있을 수도 있습니다. 이 경우 요청은 상위 프록시 서버로 전달됩니다.

추신

CDN은 소프트웨어 엔지니어가 일반적으로 사용하는 도구입니다. 일부 인터넷 서비스 제공업체의 기성 CDN 서비스를 사용할 수도 있습니다. 그러나 CDN을 사용하기 전에 CDN의 원리에 대해 자세히 알아보는 것도 도움이 됩니다. 시스템 설계. 다음 기사에서는 CDN 관련 콘텐츠에 대해서도 계속해서 설명하겠습니다. 시스템 설계를 좋아하는 독자라면 다른 콘텐츠도 보고 싶을 것입니다.

관련 기사

Key-Value Store 키-값 데이터 저장 설명 – 시스템 설계 11

데이터 분할 데이터 분할이란 무엇입니까? – 시스템 설계 10

데이터 복제는 데이터베이스를 어떻게 최적화합니까? - 시스템설계 09

데이터베이스 기초 입문 - 시스템 설계 08

로드 밸런서 설명 – 시스템 설계 07

DNS란 무엇입니까? 도메인 이름 시스템 소개 - 시스템 설계 06

시스템 설계 구성 요소 빌딩 블록 소개 - 시스템 설계 05

봉투뒷면 계산 – 시스템 설계 04

소프트웨어 설계의 비기능적 특징 – 시스템 설계 03

시스템 설계에 추상화 적용 - 시스템 설계 02

현대 시스템 설계 입문 - 시스템 설계 01

인용하다

Grokking 현대 시스템 디자인

CDN(콘텐츠 전송 네트워크)이란 무엇입니까?

 

 

ko_KR한국어