Зачем игровой индустрии сервис CDN
Продуманного сеттинга и сюжета не всегда достаточно для успешной онлайн-игры. Захватывающий геймплей также зависит и от безупречной работы инфраструктуры. Рассказываем про сеть CDN, которая поможет обеспечить быструю загрузку игрового контента.
Производство онлайн‑игр быстро развивается, одновременно растут запросы пользователей. Не секрет, что низкая скорость загрузки или зависания игры раздражают игроков — они закрывают игру и уходят. Чтобы не испортить пользователям впечатление, сохранить лояльность старых игроков и подготовиться к увеличению числа новых, производитель игры не может ограничиваться только разработкой — важно уделить самое пристальное внимание техническим вопросам:
-
организовать хранение дистрибутивов и игрового контента;
-
обеспечить быструю загрузку игры;
-
добиться быстрого отклика на команды пользователя и исключить зависания;
-
подготовиться к пиковым нагрузкам.
Иными словами, популярной игре нужна производительная и надёжная инфраструктура.
Проблема в том, что содержать собственные мощные серверы дорого. Но даже если они есть, узким местом остаются каналы передачи данных, ведь пользователь может находиться как неподалёку от дата‑центра, так и на другом конце света. Решить задачу можно, если поместить игровой контент в облако, а для доставки контента использовать CDN.
Что такое CDN
Сеть доставки контента (Content Delivery Network) — это географически распределённая сеть серверов, или точек присутствия (Point of Presence). Именно там полностью или частично хранится контент веб‑сайта, а в нашем случае — игры. Когда пользователь подключается к онлайн‑игре, контент загружается на его компьютер не с центрального сервера, а из ближайшей точки присутствия CDN.
CDN состоит из сотен точек присутствия по всему миру. Благодаря этому расстояние между пользователем и сервером, с которого загружаются данные, оказывается в десятки и сотни раз меньше, чем между пользователем и дата‑центром. А чем ближе сервер — тем быстрее загружается контент.
Как отправить пользователя в самую подходящую точку присутствия? Трафик распределяется с помощью сервиса GeoDNS: он управляет трафиком в зависимости от местоположения пользователя.
База GeoIP неидеальна: данные в ней устаревают, а некоторые пользователи могут применять VPN или другие рекурсивные серверы. Из‑за этого нельзя опираться только на GeoDNS при балансировке трафика. Задачу решает Аnycast‑балансировка.
Суть этой технологии состоит в анонсировании одинакового префикса IP‑адресов одновременно из нескольких точек сети через протокол BGP. В результате данные передаются на ближайший узел, которому присвоен анонсированный IP‑адрес, то есть по наиболее короткому с точки зрения топологии маршруту.
Сетевое расстояние между клиентом и сервером зависит от числа операторов связи, или автономных систем, которые должен пройти пакет от пользователя до серверов. Чтобы уменьшить расстояние, CDN взаимодействует с операторами связи. Это позволяет сохранять локальность трафика в разных регионах, сокращая задержки доставки контента между сетями.
Дополнительно Anycast повышает надёжность и отказоустойчивость DNS‑сервиса. Если один из узлов системы выйдет из строя, это не скажется на работе CDN в целом: нагрузка будет перераспределена по другим серверам.
Что CDN даёт разработчикам игр
Использование сети доставки контента серьёзно улучшает пользовательский опыт: у каждого игрока — и неважно, где он находится, — игра загружается быстро, а во время игры не возникают лаги. Если нагрузка возрастает (например, в праздники или в дни школьных каникул), онлайн‑игра продолжает функционировать так же стабильно.
Кроме того, сервис CDN повышает доступность данных — если на линии происходит авария, данные доставляются пользователю по резервным каналам. Поскольку часть нагрузки обслуживается напрямую с кешей CDN, улучшается защита от DDoS. А благодаря тому, что сервисам не приходится обрабатывать все запросы пользователей напрямую, снижаются затраты на инфраструктуру.
В чём особенности решения Yandex Cloud
Yandex Cloud совместно с компанией EdgеЦентр
GeeseFS даёт возможность монтировать бакеты Object Storage через FUSE. GeeseFS работает с большим количеством малых файлов (до 1 МБ) на порядки быстрее, чем goofys и s3fs, а с крупными файлами — c такой же скоростью или быстрее. Программа разработана командой Yandex Cloud как ответвление от goofys. Она обеспечивает высокую производительность и POSIX‑совместимость.
GeeseFS делает асинхронно всё, что можно делать асинхронно; параллелит всё, что можно распараллелить; кеширует всё, что можно закешировать. Суммарно это существенно увеличивает производительность.
Распространение данных обеспечивает CDN от EdgеЦентр, включающая более 140 точек присутствия по всему миру. Один из важнейших параметров сети для онлайн‑игр — время отклика. Среднее время отклика в сети EdgеЦентр — 30 мс по всему миру, а в некоторых регионах — ещё меньше: 10 мс. Чтобы прогнозировать всплески интереса к контенту и выдерживать пиковые нагрузки в разных сегментах сети, EdgеЦентр анализирует весь CDN‑трафик с помощью cedexis.com и других аналитических сервисов.
Как работать с Yandex Cloud CDN на примере публикации обновления игры
CDN демонстрирует все свои преимущества в случаях, когда к контенту быстро происходит много запросов. Например, после выхода обновления онлайн‑игры. В такой ситуации сеть доставки контента снимает нагрузку с источника контента, перенаправляя запросы на свои кеширующие серверы.
Рассмотрим, как разработчик игры публикует обновление с помощью Yandex Cloud CDN.
Вначале необходимо зарегистрироваться в Yandex Cloud и создать платёжный аккаунт. В стоимость поддержки CDN‑инфраструктуры входит плата:
-
за исходящий трафик с CDN‑серверов;
-
за хранение данных в Object Storage, операции с ними и исходящий трафик;
-
за публичные DNS‑запросы и DNS‑зоны, если вы используете Yandex Cloud DNS.
В Object Storage создают два бакета. В первом — ycprojektblue‑storage — хранятся файлы, во втором — ycprojektblue‑logs — логи запросов к первому. Логирование бакета с файлами позволит убедиться, что при пользовательском запросе файл скачивается не напрямую из бакета, а из кеша CDN‑сервера.
Теперь можно загрузить файл обновления игры (не более 5 ТБ — ограничение хранилища) в бакет ycprojektblue‑storage. Также, при загрузке объектов более 200 МБ, мы рекомендуем включить оптимизацию доставки больших файлов (опция в Cloud CDN).
На следующем шаге создают CDN‑ресурс, включают кеширование и предзагружают контент в кеш. Нужно дождаться обновления DNS‑записей и предзагрузки файла на CDN‑серверы, после чего скачать файл обновления игры по‑новому URL и по логам запросов к бакету‑источнику убедиться, что CDN‑серверы после запроса не скачивали файл из источника.
Подробно настройка Yandex Cloud CDN для публикации обновлений для игр описана в руководстве.
Быстрая загрузка — довольные пользователи
Востребованность сетей доставки контента растёт. Размер веб‑страниц постоянно увеличивается, набирают популярность стриминговые сервисы. В то же время пользователи очень негативно воспринимают задержки в загрузке содержимого: по некоторым исследованиям, более половины пользователей уходят, если сайт загружается дольше трёх секунд. CDN позволяет быстро загружать любой контент, а для онлайн‑игр они уже фактически стали необходимой частью инфраструктуры.
В этой статье мы расскажем: