Игровой проект в области мобильного стриминга
Передача гигантского объема данных по мобильному интернету с минимальными задержками
Для реализации этого проекта к нам обратилась компания, которая запускает новый стартап в области мобильного стриминга. Им была необходима технологическая платформа для работы с видео, с возможность организации трансляций , а также хранения и отдачи видео по запросу. Клиентская часть платформы – мобильное приложение, которое взаимодействует с медиа-сервисом через API.
Ключевым требованием, которое предъявлялось к нашему решению, была необходимость работать с минимальными задержками, а также учитывать особенности передачи больших данных по мобильному интернету. Кроме того, учитывая достаточно раннюю стадию проекта, мы были сильно ограничены по вычислительным мощностям, требовалось развернуть медиа-сервис на минимально возможной конфигурации железа, которая бы обеспечивала его бесперебойную работу и была способна справиться с высокими нагрузками.
После проведения расчетов, было принято решения начать с небольшого прототипа, заложив него возможность простого горизонтального масштабирования. Особенностью архитектуры является кластеризация ключевых компонентов, что позволяет обеспечить работу платформы в случае отказа одного или нескольких узлов.
Следующим шагом стало развертывание медиа-сервиса. Стриминг был реализован на основе нашей разработки в максимально короткие сроки. Далее, наступила очередь подсистемы хранения и записи трансляций. Для того, чтобы показывать видео всем пользователям, в том числе тем, у которых невысокая скорость мобильного интернета, мы подключили асинхронный сервис кодирования, на основе приоритезируемой очереди. Запрос на кодирование получает приоритет в зависимости от нагрузки системы и запрашиваемого качества кодирования (профиля). Таким образом мы сокращаем время между загрузкой видео на платформу и его появлением в ленте пользователей.
Наше решение включает в себя множество независимых сервисов, работоспособность которых необходимо отслеживать. В качестве хранилища логов мы впервые попробовали использовать продукт ClickHouse от Яндекса, для которого разработали собственный интерфейс, позволяющий смотреть все логи в одном месте, а также осуществлять быстрый поиск с фильтрацией по нужному сервису, дате, контексту и т.п.
Параллельно с развертыванием видео платформы, происходила разработка API, а также сервисов, специфичных для данного проекта, которые включили в себя единый сервис аутентификации, реализованный на основе Jason Web Token, сервис отправки push уведомлений на мобильные устройства, систему формирования ленты пользователя, интерфейс для управления и модерации контента, интеграцию с платежной системой и другие.