CDN (Content Delivery Network или Сеть доставки контента) — распределенная по географическим точкам сетевая инфраструктура, которая обеспечивает быструю доставку контента пользователям веб-сервисов и сайтов. CDN-серверы стратегически размещаются по местоположениям, чтобы обеспечить минимальное время отклика.
Немного цифр и статистики
В 2018 году средний вес веб-страницы составлял 1513 килобайт. К 2023 году он уже увеличился до 2449 килобайт. За последние пять лет показатель вырос на 161%. Данные исследования подтверждают тенденцию к увеличению веса веб-страниц.
В настоящее время стриминговые аудио- и видеосервисы набирают популярность. К августу 2023 года количество подписчиков популярной платформы Spotify достигло отметки в 515 млн. В соответствии с опросами, 25% пользователей покидают веб-страницу, если она загружается более четырех секунд. 74% пользователей, заходящих на сайт с мобильных устройств, не желают ожидать загрузку дольше пяти секунд. 46% пользователей отказываются иметь дело с веб-сервисом, если он функционирует медленно.
Эти факты указывают на то, что объем «тяжелого» контента в интернете постепенно увеличивается с течением времени. Кроме того, они подчеркивают важность высокой производительности веб-сайтов и онлайн-сервисов в современном мире. Недостаточно высокая скорость загрузки может привести к утрате аудитории, а в некоторых случаях — к снижению прибыли. Для решения этой проблемы одним из эффективных подходов является внедрение Content Delivery Networks (CDN) — сетей доставки контента.
Основные термины
Перед тем как перейти к более подробному обсуждению особенностей CDN, определим основные понятия.
CDN (Сеть доставки контента) — географически распределенная сетевая структура, обеспечивающая быструю доставку контента пользователям веб-сервисов и сайтов. Компоненты сети, такие как серверы, расположены в разных географических точках, чтобы обеспечить минимальное время ответа для пользователей сайтов и сервисов.
Ориджин (исходный источник) — сервер, где хранятся первоначальные файлы или данные, которые распространяются через CDN.
PoP (точка присутствия) — кэширующий сервер, входящий в состав CDN и размещенный в конкретном местоположении. Для обозначения таких серверов также используется термин Edge (крайний узел).
Динамический контент — контент, который генерируется на сервере в момент получения запроса (может быть изменен пользователем или извлечен из базы данных).
Статический контент — контент, который хранится на сервере в неизменном виде (например, бинарные файлы, аудио- и видеофайлы, JS и CSS).
История CDN
Резкое развитие интернета в середине 1990-х привело к ситуации, когда серверам стало трудно справляться с нагрузкой. Для серверов того времени (которые иногда технически были менее мощными, чем современные ноутбуки) требовались разнообразные методы улучшения производительности.
Например, можно упомянуть иерархическое кэширование и термин information superhighway, которые в настоящее время используются в статьях по истории интернет-технологий.
Распределение статического и динамического контента обусловливает различные нагрузки на серверы. В случае с динамическим контентом, который требует генерации через обращения к базе данных, ключевую роль играют быстродействие процессора и объем оперативной памяти.
Для распределения статического контента, который часто оказывается тяжелым и требует быстрой загрузки, первостепенное значение имеет скорость сети. Смысл технических решений для улучшения процесса распределения статики заключается в следующем: достижение горизонтальной масштабируемости без сложной двусторонней синхронизации с основным сервером.
Аспект | Статический контент | Динамический контент |
---|---|---|
Генерация | Создается заранее и сохраняется на сервере | Генерируется при запросе клиента |
Обновление | Требует ручного изменения и обновления на сервере | Может автоматически обновляться без вмешательства |
Контент | Остается неизменным до изменения сервером | Может меняться на основе пользовательских действий или времени |
Загрузка страницы | Быстрее, так как контент уже предварительно создан | Может замедлить загрузку, так как требует дополнительного времени на генерацию |
Подходы к использованию | Подходит для статичных данных, которые редко меняются | Подходит для интерактивных и постоянно обновляемых данных |
Примеры | Статичные HTML-страницы, изображения | Социальные ленты, онлайн-игры, динамические формы |
Для снижения нагрузки владельцы веб-сервисов начали применять подход еще в конце 1990-х, когда стали распределять статический и динамический контент с различных серверов. Крупные интернет-проекты с огромной аудиторией, разбросанной по всему миру, стали располагать серверы для статики в различных географических точках.
В то же время, в конце 1990-х годов, появились компании, для которых организация распределения статического контента стала ключевой сферой деятельности. В 1998 году студент Массачусетского технологического института Дэниэл Левин и преподаватель математики Томсон Лейтон создали компанию под названием Akamai. В настоящее время она является одним из самых крупных (если не самым крупным) поставщиков CDN-услуг в мире.
Число сетей доставки контента во всем мире постоянно увеличивается: соответствующие услуги предоставляют как крупные международные компании (например, Akamai, Amazon, Cloudflare), так и разнообразные региональные провайдеры.
Технология CDN применяется не только для распределения статического контента: дистрибуция контента через множество серверов в разных точках мира помогает обеспечивать доступность в периоды повышенной нагрузки.
За последние 10-12 лет еще один тип контента — стриминговый — стал широко распространен в интернете. Многочисленные сервисы потокового аудио и видео, на сегодняшний день пользующиеся огромной популярностью и многомиллионной, если не многомиллиардной аудиторией, заняли свою нишу. Распределение стало одним из распространенных сценариев использования CDN.
Как работает CDN
Представим себе веб-сервис, который активно используется людьми на всей территории России. Главные серверы этого сервиса размещены в Санкт-Петербурге, но пользователи находятся в различных местах — например, в Краснодаре (2 604,2 км от Петербурга), Новосибирске (3 826,1 км), Иркутске (5 661, 7 км) или Владивостоке (9 602, 4 км). Чем дальше пользователь находится от исходного сервера, тем больше времени требуется для получения ответа. В ранние дни Рунета, в начале 2000-х, жители Южно-Сахалинска или Петропавловска-Камчатского могли потратить до пяти или даже 10 минут на полную загрузку простой веб-страницы.
Однако при использовании CDN ситуация сильно отличается: пользователь из Владивостока автоматически переадресуется к ближайшему кэширующему серверу в составе сети доставки контента. Благодаря этому механизму доставка статического контента происходит значительно быстрее.
Для повышения скорости распределения динамического контента при использовании CDN-сервера используются альтернативные методы: провайдер сервиса сокращает сетевой маршрут через свою сеть.
Еще один захватывающий сценарий использования CDN — так называемое live-streaming или прямая трансляция: пользователи интернета по всему миру могут смотреть или слушать онлайн-трансляцию событий через веб-браузер или даже специальное приложение. Процесс организован следующим образом: один или несколько оригинальных серверов принимают потоковую передачу с видеокамеры, который немедленно ретранслируется на пункты присутствия. При этом оригинальные серверы не осуществляют непосредственную доставку контента пользователям. В арсенале стриминговых CDN также есть балансировщики нагрузки, которые направляют запросы к наименее нагруженным edge-серверам на текущий момент.
Как происходит распределение контента
Как правило, настройка распределения статического контента через CDN включает в себя следующие этапы.
Этап 1: Вынесение статики сайта на отдельный домен, например static.example.com. Домен будет выступать как источник контента (origin).
Этап 2: Создание дополнительного домена вида cdn.example.com для работы через CDN-сервер.
Этап 3: Подключение CDN у выбранного провайдера. Владельцу веб-сервиса необходимо предоставить провайдеру следующую информацию:
- домен, с которого будет осуществляться получение статики —static.example.com;
- домен, который будет использован для распределения контента — cdn.example.com.
Этап 4: Настройка CNAME записи у регистратора DNS, связывающей домен cdn.example.com с доменом CDN-провайдера, предоставленным при подключении. Например, у Selectel такой домен имеет вид 85e77c09-bc03-43bf-b8f3-9492ae33390f.selcdn.net, где уникальный идентификатор 85e77c09-bc03-43bf-b8f3-9492ae33390f генерируется автоматически.
Этап 5: Внесение изменений на веб-сайте: замена домена для статического контента, который планируется распределять через сервис доставки контента, на cdn.example.com.
Когда пользователь вводит адрес www.example.com в строке браузера, он получает HTML-страницу. В то же время весь статический контент, например изображения, загружается из CDN с адреса cdn.example.com.
Статический контент, предназначенный для распределения, часто размещается в облачных хранилищах. Для этой цели доступно множество плагинов и дополнений, специально разработанных для популярных систем управления контентом (CMS), таких как WordPress, Joomla, Drupal, 1C Битрикс и другие. С их помощью можно установить интеграцию с облачными сервисами хранения и осуществить передачу статического контента через CDN.
После подключения веб-сервис останется на оригинальном сервере. Кэшированные части сайта будут загружены на серверы CDN-сети. Автоматически определив ближайший сервер для пользователя, система обеспечит быструю загрузку статического контента с него.
Важно отметить одну ключевую деталь: серверы, входящие в состав CDN, не служат аналогом файловых серверов, где контент размещается для последующей загрузки. Сеть не используются для хранения контента, а выполняют кэширование согласно определенным алгоритмам.
Как CDN определяет местоположение ближайшего кэширующего сервера
Обычно для загрузки контента из серверов используются два распространенных метода: GeoDNS и AnyCast.
С помощью технологии GeoDNS можно связать несколько IP-адресов с одним доменным именем. В зависимости от географического положения (определяется по IP-адресу, с которого был отправлен запрос), пользователь перенаправляется на ближайший сервер.
При применении технологии AnyCast общий адрес используется, но маршрутизация направляется к серверам внутри определенного региона. Когда пользователь обращается к адресу www.example.com, его запрос переадресуется к ближайшей точке присутствия. Провайдер пользователя получает несколько объявлений от разных сетей, содержащих точки присутствия, и маршрутизатор провайдера выбирает наиболее близкий. Ответ также возвращается по наименьшему маршруту.
Как происходит кэширование контента
Наиболее распространенной схемой является сценарий первичного запроса: максимальное время для загрузки требуется для первого пользователя, который обратился к оригинальному серверу. В дальнейшем все остальные пользователи получат закэшированные данные с ближайшей к ним точки присутствия.
Здесь важно учитывать географию: к примеру, после запроса от пользователя из Рио-де-Жанейро данные будут закэшированы на сервере внутри территории Бразилии. Однако это не решит задачу ускорения доступа для пользователей из Парижа или Лондона.
Чтобы преодолеть ограничения схемы, используются технологии регионального кэширования: соседние серверы в сети CDN обмениваются контентом между собой, минуя оригинальный сервер.
В большинстве случаев пользователь, отправивший запрос на получение статического контента, автоматически перенаправляется к ближайшей точке присутствия, где он получает кэшированную версию контента. Если ближайшая точка не содержит запрашиваемые файлы, поиск будет распространяться на соседние точки, откуда будет получен ответ для пользователя. В CDN Akamai этот процесс известен как tiered distribution (многоуровневая раздача).
Для чего используется CDN
Чаще всего CDN применяется для сокращения времени ответа для кэшированного контента, что, как уже было упомянуто, помогает уменьшить отток посетителей из-за медленной загрузки ресурса и таким образом снизить потенциальные финансовые потери. Кроме того, технология CDN помогает уменьшить вероятность потери доступа к контенту из-за сбоя основного сервера, так как контент будет доступен во время восстановления работы основного сервера.
Применение CDN значительно разгружает основной сервер, что позволяет справиться с пиковыми нагрузками. Современные сети доставки контента способны обрабатывать даже огромные объемы трафика. В конце 2018 года компания Akamai объявила о достижении рекордного объема переданного через сервис доставки трафика — 72 Тб/с.
В современных условиях CDN также активно используются для распределения стримингового контента.
Особенности работы с CDN
Первая существенная проблема, с которой могут столкнуться владельцы веб-сервисов, использующих CDN, связана с задержками в кэшировании. Возможен следующий сценарий: файл на основном сервере был изменен, но на кэширующих серверах он остается в неизменном состоянии. Это особенно заметно, когда распространяется часто обновляемый контент, такой как фотографии с событий или новые версии программного обеспечения.
Для обеспечения доставки актуального контента в современных CDN предусмотрена функция очистки кэша, что позволяет удалить контент из пула кэширования. Кроме того, владельцы веб-сайтов и сервисов могут контролировать настройки с помощью заголовков-валидаторов.
Также следует учесть возможные блокировки: если по какой-либо причине будут заблокированы сервисы, которые являются вашими соседями по IP адресу, ваш сайт также может быть заблокирован. Но эту проблему также можно решить: по запросу CDN-провайдеры могут изменить ваш IP-адрес.
Кому нужна CDN
CDN особенно полезна для веб-проектов, имеющих широкую аудиторию в разных регионах или странах. Этот аспект понятен: уменьшение задержек, быстрая доставка контента и повышение уровня удобства, что в результате приводит к увеличению числа удовлетворенных пользователей.
Также CDN может быть полезным инструментом для разработчиков мобильных приложений. Согласно статистике, пользователи часто прекращают использование приложения из-за проблем с его скоростью. Недавно на рынке появились специализированные технические решения, целенаправленно разработанные для распределения контента на мобильных устройствах. Они называются Mobile CDNs. Этот тип услуг предоставляется многими известными CDN-провайдерами, включая Akamai и Amazon.
Наконец, она подходит также для проектов, фокусирующихся на распространении игрового, мультимедийного контента и стриминговых услуг.
На что обратить внимание при выборе CDN-провайдера
Количество точек присутствия. Это особенно важно для проектов с международной аудиторией. Целесообразно ознакомиться с информацией о наличии точек присутствия в регионах, интересных именно для вашей аудитории, и сопоставить эту информацию с местоположением потенциальных пользователей.
Наличие соединений с операторами связи. Это важный фактор, который влияет на эффективность и скорость работы CDN. Например, у провайдера с многочисленными точками присутствия, но ограниченным количеством связей, задержка может быть выше, чем у провайдера с меньшим числом точек, но более качественными связями.
К сожалению, многие CDN-провайдеры не раскрывают эту информацию публично, поэтому проверить можно только через тестирование.
Наличие дополнительных услуг и функций. Многие провайдеры CDN предоставляют дополнительные сервисы, включая анализ статистики, управление политиками кэширования, настройку HTTP-заголовков, предварительную загрузку тяжелых контентов (более 200 МБ), полную и частичную очистку кэша.
Помимо этого, при выборе CDN-провайдера важно убедиться, что он поддерживает необходимые технологии и протоколы, такие как HTTP/2, IPv6, SSL-сертификаты и другие.
0 комментариев