Поддерживаем монолитный бэкенд для видеостриминга
Компания М3, входящая в холдинг НМГ развивает
Софтверная часть нужна, чтобы видео для разных каналов трансляции попадало в нужном формате с определённым кодированием и дополнительной служебной информацией. Кроме видеоконтента в админпанели можно управлять рекламой на канальных сайтах, поэтому ПАК — важное звено в
Задача
Клиент искал техническую команду, которая смогла бы взять на себя переработку продукта Videomore. Он перестал отвечать требованиям времени и запросу пользователей к стриминговому сервису. На его базе решили создать новый сервис — more.tv.
ПАК был частью системы администрирования Videomore и другие каналы стриминга (в том числе и сайты каналов) подключались к нему, так как его функционал на тот момент был удобен — были общие API, у некоторых проектов была общая база данных.
В связи с перезапуском продукта на новых технологиях, многое в функционале ПАК нужно было изменить. Но его кодовой базе было уже много лет, а значит работа с ним требовала осторожности — нужно было вносить изменения так, чтобы ничего не сломать.
Переделать за несколько месяцев то, что создавалось несколько лет, просто невозможно. Команда разработки должна была иметь опыт одновременной поддержки проекта и интеграции новых частей в него. У Evrone такой опыт был, так же, как и экспертиза в
Решение
В течение нескольких лет мы добавляем новые функции и обеспечиваем стабильную работу ПАК, которое представляет собой монолитное
- поддерживаем текущую кодовую базу;
- помогаем внутренним командам заказчика вычленять часть функций в микросервисы;
- покрываем проект тестами для отслеживания проблем;
- внедряем новые возможности и документируем их для облегчения работы с ними.
Благодаря этому все канальные сайты получают нужный контент в правильном разрешении и формате, а пользователи смотрят любимые ролики без задержек и зависаний.
Самый серьёзный вызов, с которым мы столкнулись на этом проекте — сайты проектов работают на новых технологиях, а ПАК — на старых. Чтобы решить эту проблему внутренние команды клиента разрабатывают новые микросервисы, которые в конечном итоге возьмут на себя всю работу. Но это долгий процесс, поэтому мы связываем эти сервисы с текущим решением доработками.
API для видеоплееров
У плееров на сайтах партнёров появились новые функции, поэтому мы разработали API для получения параметров качества воспроизведения, которое позволило быстро отправлять нужные данные о видеофайлах.
Новый видеоконвертер
Старый конвертер видео не поддерживал нужные битрейты и профили кодирования, поэтому его нужно было сменить. Кроме форматов требовалась поддержка HLS/DASH с шифрованием и без, пакетирование и шифрование не лету, интеграция с новой схемой хранения на медиасерверах и другими микросервисами. Теперь на стороне ПАК осталась только загрузка видео, которое он отправляет в конвертер и получает в ответ нужный результат. Готовое видео в нужном формате и разрешении отправляется в плеер на канальном сайте.
Взаимодействие со сторонними сервисами
Некоторые задачи решаются с помощью сторонних сервисов. Например, мы интегрировали сервис ViPlaner: он передаёт данные о телепрограммах разных каналов, а на стороне ПАК происходит мэтчинг слотов телепрограммы с сущностями проектов.
Тестирование сервиса
Шаг за шагом мы покрываем всю кодовую базу тестами. Это помогает нам понять, как устроены разные части ПАК, чтобы заранее планировать изменения и ничего не сломать в процессе доработок. Мы также добавили систему мониторинга ошибок и активно следим за ней — так мы понимаем, где в проекте слабые и сильные места, какие проблемы надо решить в первую очередь.
Результаты
Наша кропотливая рутинная работа напрямую влияет на
Для нас самих этот кейс — пример настоящей, неприукрашенной разработки. Каждый день мы вместе с клиентом решаем задачи, которые могут показаться скучными на первый взгляд. Но именно эта работа — фундамент для экспериментов, кратного роста и любого «rocket science».
Дальнейшие планы
Заказчик хочет полностью отказаться от ПАК, как от монолитного и тяжёлого решения. Например, балансировка видео, конфигурация воспроизведения и медиатор событий уже вынесены в отдельные микросервисы. После полного перехода можно будет избавиться от шаринга БД между несколькими проектами, а техническая связанность сайтов между собой уменьшится, что повысит надёжность. Появятся возможности для масштабирования каждого отдельного проекта.
Кроме этого технические обязанности будут разделены между внутренними командами разработки более явно как с технической, так и с управленческой точки зрения. Независимые команды смогут работать в разном, удобном для решения
Но это не быстрый процесс, поэтому мы продолжим поддерживать текущее решение и вносить доработки, чтобы для конечных пользователей всё выглядело незаметно. Ближайшие планы — изменения в сборе статистики, более гибкие настройки рекламы, изменения в процессе транскодирования.
Если вы хотите разработать сервис потокового видео, видеоплеер с удобным API или ищете команду, которая готова взяться за проект с большой историей, то свяжитесь с нами через форму внизу.