<div><img src="https://top-fwz1.mail.ru/counter?id=3548135;js=na" style="position:absolute;left:-9999px;" alt="Top.Mail.Ru" /></div>
Публичное облако на базе VMware с управлением через vCloud Director

Что такое CDN: принципы работы Content Delivery Network

Миша Курушин
Миша Курушин
Технический писатель
13 февраля 2025 г.
21
15 минут чтения
Средний рейтинг статьи: 5

Задержка, задержка, задержка! Она всегда была проблемой интернета. Была, остается и, вероятно, будет. Доставка данных из одной географической точки в другую требует времени.

Однако задержку можно уменьшить. Это можно сделать несколькими путями:

  • Уменьшить количество промежуточных узлов на пути следования данных от удаленного сервера к пользователю. Ведь чем меньше обработчиков, тем быстрее данные дойдут до адресата. Правда, это вряд ли возможно. Глобальный интернет растет и усложняется, только наращивая количество узлов. Чем больше узлов, тем мощнее сесть. Таков глобальный тренд. Эволюция!

  • Вместо регулярной пересылки данных на большие расстояния, можно создавать их копии на ближайших к пользователю узлах. Благо, что узлов в сети становится все больше и больше, а топология расползается все шире и шире. Эврика!

Последний вариант кажется абсолютным решением. На большом количестве узлов с широким территориальным покрытием можно создать своего рода сеть доставки контента. А помимо основной функции ускорения загрузки можно получить ряд полезных фич: оптимизация трафика, балансировка нагрузки и повышение отказоустойчивости.

Ой, подождите! Так это же и есть то, чем является CDN — Content Delivery Network. Ну что ж. Тогда пускай эта статья и расскажет, что такое CDN, как она работает и какие задачи решает. А лучше пусть еще и покажет!

Что такое CDN?

CDN («Content Delivery Network» или «Сеть доставки контента») — это распределенная сеть серверов, предназначенная для ускоренной доставки мультимедийного контента (изображений, видео, HTML-страниц, JavaScript-скриптов, CSS-стилей) рядом расположенным пользователям.

Инфраструктура CDN, словно широкая паутина, располагается как бы между сервером и пользователем, выступая в роли посредника. Соответственно, контент передается от сервера к пользователю не напрямую, а через могучие «тентакли» CDN.

Какие типы контента существуют?

Еще на заре интернета контент стали делить на два типа:

  • Статический [Требует памяти, весит много]. Хранится на сервере и отправляется пользователю по запросу. Требует достаточного количества памяти HDD или SSD.

  • Динамический [Требует мощности, весит мало]. Генерируется на сервере при каждом запросе пользователя. Требует достаточного количества оперативной памяти и мощности процессора.

Объемы статического контента в интернете многократно превышают объемы динамического. Например, разметка сайта весит существенно меньше, чем совокупность изображений, размещаемых в этой разметке.

Хранение статического и динамического контента отдельно друг от друга (буквально на разных серверах) считается хорошей практикой. Пока тяжелые мультимедийные запросы обрабатываются на одном сервере, основная логика сайта выполняется на другом.

Технология CDN доводит эту практику до предела. Она сохраняет копии статического контента, взятого с оригинального сервера, на множестве других удаленных серверов. Каждый такой сервер отдает данные только ближайшим пользователям, уменьшая время загрузки до минимума.

cloud

Из чего состоит CDN?

Инфраструктура CDN состоит из множества удаленных друг от друга вычислительных машин — у каждой есть своя роль в глобальном обмене данными:

  • User (Пользователь). Устройство, с которой пользователь совершает запросы к удаленным серверам.

  • Origin (Оригинальный сервер). Основной сервер сайта, который обрабатывает пользовательские запросы на генерацию динамического контента и хранит оригинальные статические файлы, используемые CDN в виде копий.

  • Edge Node (Пограничный узел). Серверный узел инфраструктуры CDN, который раздает скопированный с оригинального сервера статический контент ближайшим пользователям. Такой узел также называют Точкой присутствия или Point of Presence (PoP).

В рамках одной CDN-инфраструктуры одновременно действует множество активных пользователей, оригинальных серверов и пограничных узлов.

Что происходит внутри CDN?

Во-первых, узлы CDN выполняют определенные действия для правильной ротации статического контента:

  • Caching (Кэширование). Процесс загрузки копий контента с оригинального сервера на CDN-сервер с его последующей оптимизацией и хранением.

  • Purge (Очистка). Для поддержки актуальности данных на пограничных узлах кэшированный контент очищается по истечении определенного времени или по требованию. Например, если на оригинальном сервере изменить один из файлов, то его обновление на кэширующих узлах произойдет с задержкой.

Во-вторых, узлы CDN имеют ряд настраиваемых параметров, которые обеспечивают стабильность работы всей инфраструктуры:

  • Time to Live или TTL (Время жизни). Таймаут, по истечении которого кэшированный контент удаляется из пограничного узла. Для картинок и видео TTL может составлять от 1 дня до 1 года, для API-ответов в формате JSON или XML — от 30 секунд до 1 часа, а HTML-страницы в некоторых случаях могут вообще не кэшироваться. Обычно CDN-узлы учитывают требования на кэширование, указанные в HTTP-заголовке Cache-Control.

  • Caching Rule (Правило кэширования). Набор правил, на основе которых пограничный узел будет выполнять кеширование контента. Основным параметром является время, в течение которого файл остается в кэше, — TTL.

  • Restriction (Ограничение). Набор правил на пограничном узле, которые модерируют доступ к кэшированному контенту в целях безопасности. Например, каждый пограничный узел может обрабатывать запросы только от ближайших IP-адресов или с определенных доменов.

Таким образом, статический контент курсирует от оригинального сервера через пограничные узлы к пользователям, кэшируясь по определенным правилам кэширования, а по истечении заданного TTL статический контент очищается.

При этом в целях безопасности на каждом пограничном узле действует ряд ограничений на доступ к контенту.

Как работает CDN?

Лучше всего рассмотреть принцип работы сети CDN с точки зрения пользователя. Можно выделить несколько этапов:

  1. Выполнение пользовательского запроса. Когда пользователь открывает сайт для загрузки статического контента, браузер отправляет запросы по адресам CDN-серверов, указанным в HTML-тегах страницы или внутри JavaScript-скриптов (в виде кода, выполняющего Ajax-запросы), которые ею управляют. Без CDN запросы бы отправлялись напрямую к оригинальному серверу, на котором размещен сайт.

  1. Поиск ближайшего сервера. Получая запрос, система CDN находит ближайший к пользователю сервер.

  1. Кэширование контента. Если запрашиваемый контент есть в кэше найденного CDN-сервера, то он сразу отправляется пользователю. Если контента в кэше нет, то сервер CDN выполняет запрос к оригинальному серверу с сайтом, после чего кэширует полученный контент.

  1. Оптимизация данных. Копии контента на CDN-сервере оптимизируются различными способами. Например, для уменьшения размера файлы могут быть сжаты с помощью алгоритмов Gzip или Brotli.

  1. Доставка контента. Оптимизированный и кэшированный контент отправляется пользователю, после чего отображается в браузере его компьютера.

Например, если оригинальный сервер с сайтом находится в Санкт-Петербурге, а пользователь, зашедший на него, живет в Магадане, то CDN автоматически найдет ближайший к нему сервер с кэшированным статическим контентом — например, в Якутске.

Если же ближайшего сервера с кэшированным контентом нет, то будет выполнен один запрос к оригинальному серверу, а все последующие запросы будут идти уже через CDN.

Прямое расстояние от Магадана до Санкт-Петербурга — около 6000 км. От Магадана до Якутска — около 1000 км.

У человека, плохо знакомого с устройством сетевой инфраструктуры, может возникнуть интересный вопрос: «Каким образом CDN может ускорить загрузку контента, который мгновенно распространяется по кабелям со скоростью света в 300 000 км/с?».

На самом деле задержки в передаче данных обусловлены не физическими факторами, а исключительно техническими особенностями:

  • Маршрутизация. Данные проходят через множество маршрутизаторов и сетевых узлов, каждый из которых добавляет небольшую задержку из-за обработки и передачи пакетов.

  • Сетевые перегрузки. Высокая загруженность определенных участков сети может приводить к дополнительным задержкам и потере пакетов, требуя повторной передачи данных.

  • Протоколы передачи данных. Особенности работы протоколов передачи данных (в данном случае TCP) включают механизмы установления соединения, контроля ошибок и управления потоком, что также добавляет задержки.

Таким образом, с точки зрения скорости распространения сигнала по кабелям разница между 6000 км (Магадан — Санкт-Петербург) и 1000 км (Магадан — Якутск) заметна не будет, а вот с точки зрения сетевой инфраструктуры — будет иметь большое значение.

Более того, CDN-сервер в Якутске, обнаружив отсутствие запрашиваемого контента в собственном кэше, может выполнить запрос не к оригинальному серверу, а к соседнему CDN-узлу в Чите. Разумеется, это работает только в том случае, если в его кэше есть нужный контент.

Таким образом, узлы инфраструктуры CDN могут обмениваться кэшированным контентом между собой.

Какие виды CDN существуют?

Есть несколько способов, как можно классифицировать CDN на виды. Наиболее очевидный вариант — на основе принадлежности инфраструктуры:

  • Публичные. Инфраструктура CDN арендуется у стороннего провайдера. Подходит маленьким и средним компаниям.

  • Частные. Инфраструктура CDN разворачивается собственными силами компании. Подходит крупным компаниям и IT-гигантам.

У каждого вида есть свои достоинства и недостатки:

 

Публичные

Приватные

Скорость подключения

Высокая

Низкая

Стартовые расходы

Низкие

Высокие

Сложность поддержки

Низкая

Высокая

Стоимость масштабного трафика

Высокая

Низкая

Возможности контроля

Низкие

Высокие

Зависимость от сторонних организаций

Высокая

Низкая

Многие CDN-провайдеры для привлечения внимания пользователей предоставляют ресурсы собственной инфраструктуры бесплатно. Однако в этом случае действуют ограничения на:

  • Мощность серверов
  • Объемы трафика
  • Географию покрытия
  • Расширенные настройки

Платные CDN-провайдеры используют разные схемы расчета стоимости:

  • Оплата за использованный трафик (Pay-as-you-go). Расходы зависят от объема переданных данных, измеряемого в гигабайтах или терабайтах.

  • Оплата за фиксированную подписку (Flat-rate pricing). Расходы зависят от выбранного тарифа с фиксированным объемом доступного трафика.

  • Оплата за пользовательские запросы (Request-based pricing). Расходы зависят от количества совершенных пользовательских запросов. 

А вот развертывание собственной CDN-инфраструктуры — серьезный шаг, на совершение которого должны быть веские причины:

  • Затраты на аренду на публичного CDN превышают стоимость развертывания собственной инфраструктуры. Например, высокие расходы на колоссальные объемы мультимедийного трафика.

  • Разрабатываемый продукт упирается в технические ограничения публичных CDN. Например, высокая нагрузка на сеть или специфическая география пользователей.

  • Проект предъявляет повышенные требования к отказоустойчивости, безопасности и конфиденциальности данных, которые не могут быть обеспечены публичными CDN. Например, государственная организация или банк.

В качестве примера можно привести несколько приватных CDN-сетей крупных IT-компаний:

  • Netflix Open Connect. Доставляет потоковое видео платформы Netflix пользователям по всему миру.

  • Google Global Cache (GGC). Ускоряет доступ к сервисам Google.

  • Apple Private CDN. Доставляет обновления операционных систем и сервисов компании Apple до пользователей ее устройств.

Какие задачи решает CDN?

Таким образом, технология CDN окончательно оформилась, решая ряд задач:

  • Ускорение загрузки. Файлы загружаются быстрее (с меньшей задержкой), потому что серверы CDN с кешированием статическим контентом расположены близко к пользователю.

  • Снижает нагрузку. Многочисленные запросы статического контента направляются сразу к инфраструктуре CDN, минуя оригинальный сервер сайта.

  • Глобальная доступность. Пользователи из отдаленных регионов имеют возможность оперативнее получать контент вне зависимости от географического расположения основного сервера.

  • Защита от атак. Правильно настроенные CDN-сервера либо блокируют вредоносные IP-адреса, либо ограничивают число запросов с их стороны, тем самым предотвращая массовые атаки.

  • Оптимизация трафика. Перед кэшированием и отправкой конечным пользователям статический контент сжимается для уменьшения размера, тем самым снижая объем передаваемых данных и разгружая сеть.

  • Повышение отказоустойчивости. Во время сбоя или перегрузки одного из серверов CDN, запросы автоматически могут быть перенаправлены на множество других.

По сути, CDN, являясь глобальной инфраструктурой, берет на себя практически все основные обязанности по обработке пользовательских запросов на статический контент.

Image1

Слева схема работы сети без CDN, справа — с CDN (источник: Wikipedia)

Какие есть издержки у CDN?

Не смотря на то, что CDN решает серьезные сетевые задачи, издержки он тоже несет:

  • Расходы. Помимо оплаты оригинального сервера, за услуги CDN-провайдера тоже нужно платить.

  • Конфиденциальность. Узлы CDN-провайдера получают доступ к статическим данным оригинального сервера для последующего кэширования. Некоторые из этих данных могут быть непубличными.

  • Доступность. Ключевой трафик сайта может исходить из тех регионов, в которых CDN-инфраструктура выбранного провайдера представлена меньше всего. Либо, что еще хуже, этот провайдер может быть полностью заблокирован местным законодательством.

  • Конфигурация. Кэширование требует грамотной настройки, в противном случае пользователи могут получать устаревшие данные. Настройка, в свою очередь, требует определенных знаний.

Разумеется, все эти издержки можно можно минимизировать, тщательнее выбирая CDN-провайдера и правильнее настраивая предоставляемую им инфраструктуру.

Какие сайты используют CDN?

В современных реалиях, где все существует в облаке, сайты с мультимедийным контентом, высокой посещаемостью и глобальной аудиторией просто обязаны использовать технологию CDN. В противном случае они не смогут справляться с нагрузкой на должном уровне.

Понятное дело, что и без CDN они будут работать. Вопрос лишь в том, как? Медленнее, чем с CDN.

Практически все крупные веб-сайты, онлайн-платформы и сервисы используют CDN для быстрой загрузки и повышенной отказоустойчивости. В их числе:

  • Google
  • Amazon
  • Microsoft
  • Apple
  • Netflix
  • Twitch
  • Steam
  • Aliexpress

Однако CDN нужен не только крупным игрокам, но и небольшим сайтам. Можно даже выделить несколько критериев, по которым ясно, что сайту необходимо распределенное кэширование данных:

  • Международный трафик. Если сайт посещают пользователи из разных стран и материков. Например, медиа-ресурс в Европе, который просматривают жители Китая. 

  • Много статического контента. Если сайт содержит много мультимедийных файлов. Например, портфолио дизайнера, на котором много фото и видео.

  • Пиковые нагрузки. Если в динамике посещаемости сайта есть резкие скачки. Например, интернет-магазин, активно использующий рекламу и акции для привлечения покупателей.

Разумеется, есть случаи, когда нет никакого смысла использовать CDN, неоправданно усложняя архитектуру веб-проекта: 

  • Локальное расположение. Если сайт рассчитан на пользователей только из одного города или региона. Например, сайт местной организации.

  • Маленький трафик. Если сайт посещает несколько десятков или сотен человек в день.

  • Простая структура. Если сайт является небольшим блогом или визиткой в минималистичном исполнении.

Хотя, пожалуй, основным критерием необходимости использования CDN можно считать именно наличие большого объема мультимедийных данных.

Где располагаются CDN-серверы?

Несмотря на то, что узлы каждой конкретной CDN-инфраструктуры распределяются по всему миру, есть некоторые приоритетные точки, рядом с которыми количество CDN-серверов преобладает:

  • Столицы и крупные города. В этих местах сетевая инфраструктура (впрочем, как и любая другая инфраструктура) развита лучше, чем в периферических локациях. К тому же крупные города равноудалены друг от друга по всему земному шару.

  • Точки обмена интернет-трафиком (IXP). В этих местах интернет-провайдеры оперативно обмениваются трафиком между собой. Например, это могут быть DE-CIX (Франкфурт), AMS-IX (Амстердам), LINX (Лондон), MSK-IX (Москва).

  • Дата-центры крупных провайдеров. В этих местах проходят крупные магистральные интернет-сети, обеспечивающие быструю и дешевую передачу данных на крупные расстояния.

Самые маленькие CDN-сети имеют от 10 до 150 серверов, а самые крупные — от 300 до 1500 узлов. Например, в 2024 году компания VK построила собственную CDN-сеть, состоящую из 150 узлов, которая увеличивает скорость загрузки контента на 30%.

Популярные CDN-провайдеры

Есть несколько наиболее популярных, крупных и технологичных CDN-провайдеров, многие из которых предоставляют CDN-инфраструктуру в качестве дополнения к своим облачным серверам:

  • Akamai
  • Cloudflare
  • Amazon CloudFront (AWC CND)
  • Fastly
  • Google Cloud CDN
  • Microsoft Azure CDN

В то же время существуют и более бюджетные варианты:

  • BunnyCDN
  • KeyCDN
  • StackPath

Некоторые провайдеры предоставляют специализированную CDN-инфраструктуру под определенный тип контента. Например, для видео, стримов, музыки и игр:

  • CDN77
  • Medianova

Выбор конкретного CDN для сайта зависит от целей бизнеса, типа контента и бюджета. Чтобы подобрать оптимальный вариант, нужно учесть несколько ключевых факторов и найти наиболее подходящего CDN-провайдера:

  • Цели и задачи. Для какого типа проекта требуется CDN: блог, онлайн-магазин, стриминговый сервис, СМИ.

  • География. В территориальное покрытие провайдера должны входить регионы, в которых преобладает целевая аудитория проекта.

  • Контент. Провайдер должен обладать инструментами для кэширования и хранения того типа контента, который используется в проекте.

  • Тарификация. Какой режим оплаты будет давать наилучшее соотношение стоимости и эффективности.

На практике можно протестировать несколько наиболее подходящих CDN-провайдеров, чтобы понять, какой именно использовать на постоянной основе.

В какой-то степени это напоминает выбор облачного провайдера — каждый предоставляет схожие услуги, но их конечная реализация всегда отличается.

Например, Timeweb Cloud предлагает как выделенные, так и облачные серверы и базы-данных в аренду.

Выгодные тарифы на облако в Timeweb Cloud

Заключение

Важно понимать, что CDN не занимается полноценным хранением статических данных, а лишь распространяет их копии по своим узлам, тем самым сокращая дистанцию между оригинальным сервером и пользователем.

Поэтому главная задача CDN — ускорять загрузку и оптимизировать трафик. Это возможно благодаря механизму кэширования статических данных, которые распространяются по заданным правилам между оригинальным сервером и CDN-узлами.

13 февраля 2025 г.
21
15 минут чтения
Средний рейтинг статьи: 5
Пока нет комментариев