2013-10-22

Nimble Streamer - сервер для медиа-стриминга

И снова здравствуйте.

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

Итак, в начале 2013 года мы представили медиа-сервер Nimble Streamer. Это лёгковесный сервер, заточенный под потоковую передачу данных (стриминга). Что он умеет?


В этой презентации можно посмотреть обзор основных фич, а ниже - чуть подробностей.

MP4 to HLS VOD transmuxing и MP4 to MPEG-DASH transmuxing. Можно класть на сервер файлы MP4, заэнкоденные в H.264/AAC, и по мере обращения, на лету, делать re-packaging в HLS и MPEG-DASH. Это и называется транзмаксинг, т.е. перепаковка формата передачи данных при передаче их клиенту для воспроизведения. На формат энкодинга это влияет, поэтому при должной оптимизации (а она у нас присутствует в полной мере) операция это достаточно быстрая и не ресурсоёмкая. Что важно - передача в ведётся в режиме VOD.

Потоковую передачу в "живом режиме" - live streaming. Можно брать данные по RTMP и транзмаксить в HLS, DASH, Icecast. Можно также раздавать по RTMP - как на проигрывание, так и на пере-публикацию. Также в качестве источников может быть взяты MPEG-TS и Icecast.

Кроме этого есть функционал для ре-стриминга медиа-данных по HTTP-based протоколам. Нимбл умеет делать ре-стриминг для HLS, Smooth Streaming, HDS, MPEG-DASH и pseudo-streaming. Ставится несколько edge-серверов Нимбла поближе к клиентам-потребителям трафика и эти сервера настраиваются на origin - на всё тот же Nimble или на любой другой медиа-сервер.

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

Кроме указанных протоколов Nimble умеет раздавать контент по протоколу progressive download (он же псевдо-стриминг) в качестве как origin, так и edge. Многие сайты в Рунете предпочитают раздавать именно через этот протокол.

В дополнение имеется возможность делать балансировку нагрузки между медиа-серверами. Это важно в нашем случае, т.к. расчёт делается на то, что медиа-стример будет ставить несколько небольших серверов поближе к потребителям контента. Отсюда необходимость балансировать нагрузку по местоположению или IP-адресам. Кроме гео, есть возможность разбрасывать соединения и по round robin.

Был реализован механизм защиты от ре-стриминга - hotlinking protection - он позволяет предотвращать кражу прямых ссылок. Также можно ограничивать работу потоков через гео-локацию или диапазоны IP.

Сервер в данный момент ставится на Ubuntu, Debian, CentOS и RedHat через обычную пакетную установку, а также на Windows и MacOS через нативные установщики.

Сервер - бесплатный. Деньги мы берём за удобное управление через веб-интерфейс и возможность создания статистических отчетов через уже упоминавшуюся панель управления WMSPanel. Чтобы гарантировать возможность бесплатного использования, мы открыли формат конфигурационных файлов, чтоб можно было работать с сервером автономно, без привязки к нашей панели управления.

Кстати, сервер, как и сервис, разрабатывается российской командой, с нами можно встретиться и пообщаться на родном языке. Впереди большие планы, так что если есть пожелания или вопросы - обязательно обращайтесь.

Уверен, кому-то из моих читателей наша разработка пригодится.

P.S. Да, это снова разнузданный самопиар :)

WMSPanel - admin GUI Wowza Media Server

Добрейшего дня!

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

Примерно 3 года назад мы с единомышленниками начали свой бизнес. Или bootstrap startup, как некоторые его модно называют. Начали мы с создания плагина для Windows Media Services, который помогал защитить медиа данные от ре-стриминга. Потом мы перешли к созданию панели управления для этого же медиа сервера. В итоге к концу 2011 года у нас был проект, способный собирать статистику и защищать медиа-данные для Windows Media.

Дальше мы решили переключиться на поддержку Wowza Media Server (ныне - Wowza Streaming Engine) - и не прогадали. Впоследиствии мы добавили поддержку Red5, Flussonic и nginx-rtmp-module.

На сегодняшний день нам удалось сделать универсальную панель администратора медиа-серверов, которая включает в себя:

Полный список возможностей можно посмотреть здесь.

Панель представляет собой веб-сайт, данные для которого отсылает специальный add-on. Через него же идёт управление сервером. Панель доступна по модели Software-as-a-Service, с помесячной или годичной оплатой, и с пробным периодом использования. Подходит всем - от новичков медиа-бизнеса до матёрых CDN-ов.

Основные "этапы славного пути" можно узнать из статьи про нас от корифея медиа-стриминга, Дэна Рэйбёрна, там описана наша история по январь 2013 года. Можете почитать наш блог или Твиттер, чтобы узнать, что делается сейчас и куда движемся.

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

Однако, это ещё не всё! В следующей статье читаем про наш новый сервер медиа-стриминга.

P.S. Да, это разнузданный самопиар :)

2013-08-26

Ещё о системе контроля версий от JetBrains

Не так давно запостил ссылку на видео, где представитель компании JetBrains рассказывал об их новой системе контроля версий, которую пилят в их потаённых исследовательских лабораториях.

И вот опять они. Набрёл (как водится, на Хабре) на подкаст Разбор полётов, где CTO JetBrains рассказывает в числе прочего и про новую VCS. Рассказ начинается примеро с 0:30.

Итак, что нового по сравнению с предыдущим инсайдом.

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

Более подробно рассказали про синхронизацию рабочих копий. Вкратце работа будет идти по следующему принципу:

  • Пользователь пишет код, сохраняет его.
  • Специальный сервис (демон? процесс?) трекает изменения и если изменения сделаны - синхронизирует их с центральным сервером.
  • Это же пользователь, сев за другое рабочее место, получает все измененённые файлы в том виде, что и на первом рабочем месте.
  • Если изменения нужно кому-то показать без забрасывания в ветку в виде отдельной версии - это можно легко сделать (понятно, детайле пока нет).
  • Если изменения нужны на ветке - они коммитятся, получается версия.
  • Версии можно будет также делать локально - с последующей синхронизацией с центральным сервером (пресловутый юзкейс "хочу коммитить код, летя в самолёте")

То есть с одной стороны система централизованная, а с другой - есть возможность офлайновой работы.

Ещё интересный момент - локально у пользователя будет подниматься локальный сервер контроля версий, который будет общаться и синкаться с другим таким же, но централизованным сервером. Дефолтный интерфейс для работы с серверами - через веб. Будет и интеграция с IDE через API, конечно же, да и ком. строка в наличии, однако самая полная функциональность будет доступна через браузер.

Не раз были сравнения с git, отдельно было сказано о том, что будет предусмотрена прозрачная синхронизация с его репами. Это нужно как для облегчения перехода с него на новую систему, так и полноценная работа в том случае, если разные части команды будут принципиально сидеть на разных тулах.

Было ещё раз сказано о том, что система - open source. Прозвучала здравая мысль о том, что в наше время писать с нуля закрытую VCS - это мягко говоря неправильно. Оно и понятно - если есть открытый git, кому нужен закрытый конкурент?

В целом, движение интересное и не лишённое смысла, очень хочется посмотреть, что получится.

P.S. На Google+ возникло обсуждение.

2013-08-21

JetBrains замышляет новую VCS

И снова здравствуйте.

Не смог пройти мимо очень занимательного видео.



Да, JetBrains решили сделай свою систему контроля версий, с преферансом и поэтессами. Судя по видео (преступно короткому!!!) система будет централизованной, с возможностью офлайновых коммитов. Очень напоминает Perforce - опять-таки, судя по рассказанному. Но, в отличие от, будет вроде как open source.

Многие, только увидев название видео и даже чуть-чуть его посмотрев, скривили лица и начали бормотать всякие непотребства, где из культурных слов можно было разобрать только "git". Как водится, кто-то из критиков не досмотрел и до середины, а из тех, кто досмотрел - половине не поняла о чем речь.  Однако ж я скажу чуть больше.

Во-первых, централизованные системы контроля версий не только имеют право на жизнь, но и в некоторых случах справляются с задачами лучше распределённых систем вроде git и Hg. В качестве иллюстрации: огромное число компаний используют, например, Perforce, и даже не думают с него слезать. Ярчайший пример - Гугл, которого работает крупнейшая в мире инсталяция Perforce.

Во-вторых, раз уж за дело взялись ДжетБрэйнсы, то оно действительного того стоит. А значит, дело они доведут до конца и представят продукт широкой публике.

Поэтому я лично очень хочу посмотреть, во что превратится это начинание.

Release engineering и вообще разработка в Badoo

Добрейшего!

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

Процесс разработки и выкатка релизов в Badoo. Автоматическое тестирование. Девелоперское окружение.

Инетервью с двумя инженерами, которые занимаются configuration management, release management и все, что с этим связано. Прям ностальгия накрыла - именно этим я и занимался немало времени, именно из этих занятий пошёл данный бложик.

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


2013-01-31

github и домовладение

Добрейшего!

Как человек, проживающий четвёртый год в своём доме, не смог пройти мимо ещё одного необычного применения для гитхаба. Один мужик все свои задачу по содержанию своего дома ведет в трекере открытого проекта: https://github.com/frabcus/house/issues.

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

Конечно же, каждая задача представлена в виде записи в issue tracker, в которой описывается проблема и комменты по ходу решения. Ну и она по закрывается по мере решения задачи. Что характерно - в комменты влазят вроде посторонние люди и предлагают свои решения :))

Нашлось применению и mliestones (майлстоунам, или вехам). У человека была проблема с влажностью в доме - очень неприятная штука, чреватая плесенью, плохим запахом и порчей материалов дома. Он завёл майлстоун и писать туда все таски по ходу работы. В общем, проблема заборота (или снижена до приемлемого уровня) и веха была закрыта.

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

Ну и как на гитхабе без форков? Их есть там. Правда, те, что смотрел, были дохленькие.

В общем, штука получилась забавная. Правда, мне пока не пригодится - свои задачи по дому пока удаётся держать в голове.