Онлайн кинотеатры more.tv и СТС

Поддерживаем монолитный бэкенд для видеостриминга

Компания М3, входящая в холдинг НМГ развивает онлайн-кинотеатры more.tv и СТС, а также сайты телеканалов группы. Evrone поддерживает и развивает платформу, с помощью которой весь видеоконтент попадает в эти продукты — программно-аппаратный комплекс (ПАК). Мы пишем код и консультируем партнеров клиента по вопросам серверной части проекта.

Софтверная часть нужна, чтобы видео для разных каналов трансляции попадало в нужном формате с определённым кодированием и дополнительной служебной информацией. Кроме видеоконтента в админпанели можно управлять рекламой на канальных сайтах, поэтому ПАК — важное звено в бизнес-задачах холдинга. Он должен работать бесперебойно.

Задача

Клиент искал техническую команду, которая смогла бы взять на себя переработку продукта Videomore. Он перестал отвечать требованиям времени и запросу пользователей к стриминговому сервису. На его базе решили создать новый сервис — more.tv.

ПАК был частью системы администрирования Videomore и другие каналы стриминга (в том числе и сайты каналов) подключались к нему, так как его функционал на тот момент был удобен — были общие API, у некоторых проектов была общая база данных.

В связи с перезапуском продукта на новых технологиях, многое в функционале ПАК нужно было изменить. Но его кодовой базе было уже много лет, а значит работа с ним требовала осторожности — нужно было вносить изменения так, чтобы ничего не сломать.

Переделать за несколько месяцев то, что создавалось несколько лет, просто невозможно. Команда разработки должна была иметь опыт одновременной поддержки проекта и интеграции новых частей в него. У Evrone такой опыт был, так же, как и экспертиза в Ruby-on-Rails, поэтому нас и пригласили для работы над этим бэкендом.

Решение

В течение нескольких лет мы добавляем новые функции и обеспечиваем стабильную работу ПАК, которое представляет собой монолитное Rails-приложение:

  • поддерживаем текущую кодовую базу;
  • помогаем внутренним командам заказчика вычленять часть функций в микросервисы;
  • покрываем проект тестами для отслеживания проблем;
  • внедряем новые возможности и документируем их для облегчения работы с ними.

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

Самый серьёзный вызов, с которым мы столкнулись на этом проекте — сайты проектов работают на новых технологиях, а ПАК — на старых. Чтобы решить эту проблему внутренние команды клиента разрабатывают новые микросервисы, которые в конечном итоге возьмут на себя всю работу. Но это долгий процесс, поэтому мы связываем эти сервисы с текущим решением доработками.

API для видеоплееров

У плееров на сайтах партнёров появились новые функции, поэтому мы разработали API для получения параметров качества воспроизведения, которое позволило быстро отправлять нужные данные о видеофайлах.

Новый видеоконвертер

Старый конвертер видео не поддерживал нужные битрейты и профили кодирования, поэтому его нужно было сменить. Кроме форматов требовалась поддержка HLS/DASH с шифрованием и без, пакетирование и шифрование не лету, интеграция с новой схемой хранения на медиасерверах и другими микросервисами. Теперь на стороне ПАК осталась только загрузка видео, которое он отправляет в конвертер и получает в ответ нужный результат. Готовое видео в нужном формате и разрешении отправляется в плеер на канальном сайте.

Взаимодействие со сторонними сервисами

Некоторые задачи решаются с помощью сторонних сервисов. Например, мы интегрировали сервис ViPlaner: он передаёт данные о телепрограммах разных каналов, а на стороне ПАК происходит мэтчинг слотов телепрограммы с сущностями проектов.

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

Шаг за шагом мы покрываем всю кодовую базу тестами. Это помогает нам понять, как устроены разные части ПАК, чтобы заранее планировать изменения и ничего не сломать в процессе доработок. Мы также добавили систему мониторинга ошибок и активно следим за ней — так мы понимаем, где в проекте слабые и сильные места, какие проблемы надо решить в первую очередь.

Результаты

Наша кропотливая рутинная работа напрямую влияет на бизнес-показатели клиента. Мы помогли тем, кто администрирует сайты каналов, управляет контентом — эти люди пользуются ПАК каждый день и раньше любые ошибки и паузы в работе мешали размещать видео и рекламу, анализировать результаты работы. Теперь всё работает стабильно.

Для нас самих этот кейс — пример настоящей, неприукрашенной разработки. Каждый день мы вместе с клиентом решаем задачи, которые могут показаться скучными на первый взгляд. Но именно эта работа — фундамент для экспериментов, кратного роста и любого «rocket science».

Дальнейшие планы

Заказчик хочет полностью отказаться от ПАК, как от монолитного и тяжёлого решения. Например, балансировка видео, конфигурация воспроизведения и медиатор событий уже вынесены в отдельные микросервисы. После полного перехода можно будет избавиться от шаринга БД между несколькими проектами, а техническая связанность сайтов между собой уменьшится, что повысит надёжность. Появятся возможности для масштабирования каждого отдельного проекта.

Кроме этого технические обязанности будут разделены между внутренними командами разработки более явно как с технической, так и с управленческой точки зрения. Независимые команды смогут работать в разном, удобном для решения бизнес-задач ритме.

Но это не быстрый процесс, поэтому мы продолжим поддерживать текущее решение и вносить доработки, чтобы для конечных пользователей всё выглядело незаметно. Ближайшие планы — изменения в сборе статистики, более гибкие настройки рекламы, изменения в процессе транскодирования.

Если вы хотите разработать сервис потокового видео, видеоплеер с удобным API или ищете команду, которая готова взяться за проект с большой историей, то свяжитесь с нами через форму внизу.

Выражаю благодарность Evrone за помощь в развитии и поддержке видеоплатформы ПАК. За время сотрудничества мы совершили серьёзный шаг в развитии проекта благодаря высокому уровню взаимопонимания с командой разработки и их умению быстро реагировать на поставленные задачи.
Алексей Дмитриев
Руководитель проектного офиса М3
Связаться с нами
Нужна команда?
Давайте обсудим ваш проект
Прикрепить файл
Максимальный размер файла: 8 МБ.
Допустимые типы файлов: jpg jpeg png txt rtf pdf doc docx ppt pptx.