Технология в основе Netflix и Spotify: как работает система доставки контента на стриминги

Евгения Егорова

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

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

Так появилась технология Content Delivery Network (CDN) — сетевая серверная инфраструктура, которая используется для ускорения доставки контента конечному пользователю.

Чем ближе сервер находится к клиенту, отправившему запрос на сайт, тем быстрее сервер выдаст ему ответ в виде страницы с контентом.

Content Delivery Network

Сегодня технология CDN используется повсеместно, поэтому каждому IT-специалисту полезно знать, как она работает и как ее проверить.

Особенности работы CDN

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

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

Чтобы наглядно понимать, как работает CDN, разберем два случая: как технология функционирует со стороны пользователя (User) и как — со стороны заказчика услуги ускорения (Customer).

Сторона пользователя

Предположим, вы находитесь в Сан-Франциско и заходите на сайт github.io, основной сервер которого расположен в Индии. На ваш запрос сайт выдаст html-страницу, а весь статический контент будет загружен с сайта cdn.github.io, который будет расположен в США.

Но откуда сайт узнает какой именно кэш-сервер должен отдать вам информацию? Это возможно благодаря протоколу граничной маршрутизации Border Gateway Protocol (BGP). Он отправляет на IP-сеть вашего провайдера несколько анонсов с точкой присутствия cdn.github.io, из которых маршрутизатор выбирает ближайшую (у которой задержка запрос/ответ будет наименьшей). Очень похоже работет технология AnyCast.

Сторона заказчика

Заказчик загружает весь статический контент в объектное хранилище, которому присваивается уникальное Domain Name System (DNS) — имя домена. Таким образом имя сайта связывается с его цифровым адресом. На это имя и будет ссылаться html-страница, которую запрашивает пользователь. Заказчик также может указать домен origin (исходный сервер со статическими данными), из которого локальный CDN-сервер скачивает кэшированные файлы при первом поступившем запросе и выдает их пользователю, а после уже не обращается к нему, так как данные уже лежат на локальном сервере.

Работа с исходным сервером со статическими данными

Когда выгодно использовать CDN?

  • Если вы хотите в короткий срок передать статический контент большому количеству посетителей, которые находятся далеко от origin-сервера.
  • Если на вашем сайте масса тяжелого контента (видео в высоком разрешении, аудио-файлы и так далее).
  • Если вы не хотите тратиться на апгрейд сетевого оборудования. Во многих случаях гораздо дешевле вывести большую часть статического контента на edge-серверы, нежели переходить на новое, более дорогое, сетевое оборудование.

Тестирование CDN

Тестирование Content Delivery Network может выполняться с двух позиций:

  • Со стороны Customer. В этом случае проверяем, как исходный контент кэшируется и уходит на CDN-сервер, настройка правил кэширования, локализации и создание самих доменов.
  • Со стороны User. Проверяем, правильно ли контент путешествует между серверами. Обязательным для CDN является end-to-end тестирование — проверка всей цепочки передачи данных от заказчика до конечного пользователя.

Важный пункт в тестировании работы CDN — создание репортов. Репорты помогают получать информацию о трафике на ваших доменах. Ими не стоит пренебрегать. 

Выбор Environment на CDN позволяет выбрать среду применения:

  • Production применит выбранные свойства сразу ко всем созданным edge-серверам;
  • Staging осуществляет локальную работу с конкретно взятым доменом (это отдельный пункт тестирования, так как функционал для окружений отличается).

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

Функция Purge помогает работать с удалением и замораживанием кэшированных файлов с Edge-серверов.

Purge Action позволяет удалять или замораживать контент на кэш-сервере. Здесь опция Delete будет удалять данные из кэша ваших edge-серверов, а Invalidate сделает контент недоступным пользователю, пока он не будет удален или не обновится на origin-сервере.

Вместо выводов

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

If you have found a spelling error, please, notify us by selecting that text and pressing Ctrl+Enter.

Останні статті

Токсичные коллеги. Как не стать одним из них и прекратить ныть

В благословенные офисные времена, когда не было большой войны и коронавируса, люди гораздо больше общались…

07.12.2023

Делать что-то впервые всегда очень трудно. Две истории о начале карьеры PM

Вот две истории из собственного опыта, с тех пор, когда только начинал делать свою карьеру…

04.12.2023

«Тыжпрограммист». Как люди не из ІТ-отрасли обесценивают профессию

«Ты же программист». За свою жизнь я много раз слышал эту фразу. От всех. Кто…

15.11.2023

Почему чат GitHub Copilot лучше для разработчиков, чем ChatGPT

Отличные новости! Если вы пропустили, GitHub Copilot — это уже не отдельный продукт, а набор…

13.11.2023

Как мы используем ИИ и Low-Code технологии для разработки IT-продукта

Несколько месяцев назад мы с командой Promodo (агентство инвестировало в продукт более $100 000) запустили…

07.11.2023

Университет или курсы. Что лучше для получения IT-образования

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

19.10.2023