Главное Свежее Вакансии Образование
Выбор редакции:
1 235 0 В избр. Сохранено
Авторизуйтесь
Вход с паролем

Сервис анализа потокового вещания

Из предыдущих сообщений блога в целом, наверное, понятно, что наши продукты покрывают определённый круг задач, связанных с передачей медиа-данных. Разумеется, люди приходят разные, с разными сценариями работы и потребностями, поэтому зачастую возникают запросы на более специфичную функциональность.

Например, практически все озадачены качеством своей работы. "Стабильный сигнал" - это нужно не только на телевидении, но и в интернет-вещании. Звучит странно, однако ничего удивительного здесь нет.
  • Источники потокового вещания могут отваливаться. Веб-камеры, энкодеры, транскодеры - всё это хоть и создано для стабильной работы, но отнюдь не идеально.
  • Сервера периодически выходят из строя. Да, серверный софт, как и серверное железо, пишут простые люди, которые тоже делают ошибки.
  • Скорость работы серверного софта может быть снижена в силу как неправильных настроек, так и чрезмерной нагрузки (например, час пик или DDoS-атака).
  • Скорость интернета и его качество оставляют желать лучшего. Даже в США, с их развитой инфраструктурой, до сих пор остро стоит проблема прокладки скоростных магистралей и появление их в домах простых людей, особенно если это не Сан-Франциско или Нью-Йорк.
  • Форс-мажор. Уборщица со шваброй, экскаватор и метеорит могут одинаково деструктивно воздействовать на всё, что находится между источником потока и его потребителем.
В общем, все эти беды выражаются в двух видах проблем у конечных пользователей:
  • Невозможность подключения к потоку медиа-данных.
  • Медленное воспроизведение на клиенте.
Диагностика и устранение этих проблем покрывается областью знаний, известной как Quality of Service (QoS). Так же есть более широкое понятие Quality of Experience.

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

И вот, в одной точке сошлись два обстоятельства. Во-первых, один из наших давних и уважаемых подписчиков из-за сбоя в работе своих серверов потерял нескольких клиентов. Он спросил - а нельзя ли из вашей панели сигнализировать о сбоях в работе потоков? У нас к тому времени уже давно была фича уведомления о недоступности сервера, но в его случае этого было не достаточно, т.к. вышли из строя отдельные потоки. Первой мыслью было сделать проверку из панели с помощью одного из наших же серверов, обеспечивающих работу панели. Мысль была неудачной - а что, если будет сбой соединения между нашей панелью и потоком? А если он недоступен в силу специальных ограничений?

Тут проявилось второе обстоятельство - у нас появился Nimble Streamer и он мог работать на передачу данных HLS и Smooth. Соответственно, мы можем сделать проверку наличия живого потока через него - и уже его поставить в любых точках мира, сделать распределённую проверку. Нужно было реализовать лишь работу с остальными популярными медиа-протоколами - HDS, MPEG-DASH, RTMP и RTSP. Ну и, конечно же, сделать механизм обмена данными и управления через WMSPanel.

Сказано - сделано. Меньше, чем через месяц Нимбл умел создавать соединение по всем нужным протоколам и обмениваться данными с панелью.

Обозначили это отдельным сервисом и назвали его Dispersa. Работу решили разбить на 3 шага, два из которых как раз пройдены на сегодняшний день.

На первом шаге мы решили сделать единовременную, разовую проверку потока по введённому URL. Система понимает, по какому протоколу идёт общение и пытается подключиться для проигрывания. Также на первом же шаге мы сделали проверку через распределённую сеть чекпойнтов.
Чекпойнт (checkpoint) - это сервер с установленным на нём Нимблом, который и совершает проверку потоков и обменивается данными с панелью. Для начала поставили 3 точки - в Сан-Франциско и Нью-Йорке, чтобы покрыть оба побережья США, и в Амстердаме - там точки обмена трафиком стран Европы и Ближнего Востока. Для создания сети чекпойнтов решили использовать самые дешёвые виртуальные сервера одного из модных виртуальных хостеров. Нимблу много не надо, он работает на любой из существующих конфигураций.

Разовую проверку решили сделать бесплатной. Пусть будет ещё одним способом привлечения внимания к остальным продуктам, этаким рекламным баннером, ну и просто "proof of concept". Затраты на хостинг - минимальны (Нимблу же много не надо), так что пусть работает и радует людей.

Второй шаг уже приблизил нас к продукту, о котором мы изначально задумывались. Здесь мы ориентировались на типового клиента, примером которого был тот самый подписчик, с которого и началась работа над продуктом. На этот этап мы поставили себе задачи: 1) периодической проверки потоков - раз в 5 минут и 2) добавления своих собственных чекпойнтов.
Зарегистрировавшийся пользователь может добавить потоки и настроить почту, куда будут лететь нотификации.

Что касается собственных чекпойнтов, эта фича была сделана для тех клиентов, у которых есть ограничения на доступ к медиа-серверам. Причины разные:
  • Географически ограниченное вещание. Это обычная практика для разного рода живых трансляций, когда права продаются в оговоренные страны. Или же вещание идёт с рекламой, которая предназначена для, опять же, конечного числа стран.
  • Ограничение по сетям телекомов. Примерно то же, что и в случае с гео-ограничениями, когда операторы связи заключают договоры с поставщиками контента.
  • Вещание внутри закрытых корпоративных сетей. Немалый сегмент рынка, где видеотрансляции и видеоконтент раздаются внутри корпораций или университетов.
Работа идёт следующим образом. Внутри закрытой сети на любой подходящих сервер ставится Нимбл и регистрируется в WMSPanel. Ставится галочка в свойствах сервера - "этот сервер будет чекпойнтом". Всё, клиент может назначить любые потоки на проверку в том числе через этот сервер. Каждый поток может быть проверен на своём подмножестве чекпойнтов.

Новые возможности решили предоставлять по модели freemium, т.е. немного бесплатно, остальное - за деньги. Первые 9 стримов - бесплатно. Для небольшого вещателя - в самый раз. Остальные каждые десять потоков - 5 долларов. Добавит человек 25 потоков - подпишется на 10 долларов.
В целом сервис в таких возможностях по-прежнему планируется использовать в первую очередь не как средство заработка, а как способ показать возможности остальных продуктов - Nimble Streamer и WMSPanel.

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

В общем, продолжаем работать над следующими фичами.

А в следующей заметке есть желание рассказать о том, как мы делаем перевод наших продуктов на разные языки.

0
В избр. Сохранено
Авторизуйтесь
Вход с паролем
Комментарии
Выбрать файл
Блог проекта
Расскажите историю о создании или развитии проекта, поиске команды, проблемах и решениях
Написать
Личный блог
Продвигайте свои услуги или личный бренд через интересные кейсы и статьи
Написать

Spark использует cookie-файлы. С их помощью мы улучшаем работу нашего сайта и ваше взаимодействие с ним.