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

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

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

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

2012-08-08

github и германские законы

Добрейшего!

Один гражданин Германии взял, да и выложил все немецкие законы и правила на Гитхаб:
https://github.com/bundestag/gesetze
Объясняет он это необходимостью показывать людям реальные изменения, которые происходят в законодательстве - мол, народ должен знать, чего делается.

Контроль версий и отслеживание изменений - в действии.

Толково, я считаю. Мир меняется, однако.

2012-05-20

Мой доклад на VLDC2 про SCM

Добрейшего!

В День Пионерии во Владивостоке прошла Vladivostok Developers Conference за номером 2.
Мне довелось выступать первым. Кто о чём - а больной о своём, поэтому я рассказывал о том, про что рассказываю в этом бложике уже третий год. Про SCM, конечно же.

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

Видео начали писать с середины, да и рассказать я успел не всё, что планировал, поэтому, дабы не позориться лишний раз, решил выложить только презентацию :)

Презентацию можно посмотреть здесь: http://www.slideshare.net/Yurriq/scm-vldc2

P.S. Почему пианист - старые читатели, наверное, уже догадались.

P.P.S. А вот чем я занимаюсь в данный момент: Nimble Streamer. Здесь чуть подробнее.

2012-05-01

Release engineering в Facebook

Добрейшего!

RSS лента в очередной раз принесла интересную подборку материалов от OpenQuality.ru, где взгляд немедленно зацепился на некоторые ссылки из раздела "Архитектура систем". Особенно за последнюю ссылку :)

Однако самое вкусное там для меня - это Exclusive: a behind-the-scenes look at Facebook release engineering - эксклюзивный материал про управление релизами в Facebook. Кому лень читать или кто думает, читать ли вообще, - несколько основных моментов.

Код пишется на PHP, затем транслируется в оптимизированный код на C++, который затем отстраивается в единый бинарник размером 1.5 Гб. Да, полтора гигабайта.

Далее код выкладывается во внутренний доступ и посредством BitTorrent скачивается на все сервера которые участвуют в работе. Итог по времени - 30 минут, из которых 15 минут делается сам бинарник, а ещё 15 - этот бинарник распространяется по серверам.

При этом то, что касается статического контента - яваскрипты, стили и т.п. - распросраняется через свои же CDNы, т.е. распределённые сети доставки контента.

Оставим за скобками странную цепочку PHP -> C++ -> Большой-Бинарник-На-Полтора-Гига, однако доставка релиза через торрент - это остроумно. Ну и распространение статики через CDN - вообще отлично.

P.S. Кстати, на всё том же OpenQuality лежит моё сочинение на тему "Управление изменениями, или Кессонная болезнь проектов". Ушёл в отрыв, сделал безумную, но на мой взгляд интересную аналогию.

2011-12-01

Интервью с техдиром VisualSVN и немного мыслей

Добрейшего.

Набрёл в блоге Якова Сироткина на интервью с Иваном Жаковым, техническим директором VisualSVN, и по совместительству - контрибьютором Subversion.

Интересный пример того, как можно сделать прибыльный проект, используя в качестве базы open source продукты. Сабвершн открыт и бесплатен, однако, как и бОльшая часть оупенсорса - требует или доработки напильником, или хитрой настройки, или гуру, который бы объяснил как надо работать. Парни сделали плагин к Visual Studio, затем свою серверную надстройку над SVN. С них и живут, причём в клиентах у них значатся не последние компании из Fortune 500, а также куча американских госучреждений. В общем, люди определённо добились чего-то на непростом рынке систем контроля версий.

Ситуация, описанная в начале - большая контора, все сидят на Visual SourceSafe, одиночки-энтузиасты пытаются изменить мир к лучшему - была типичной для российских компаний конца XX - начала XXI века. Мантра "так уж здесь повелось" до сих пор успешно работает практически повсеместно. Не сказать, чтобы это было плохо, но во многих ситуациях бывает проще перейти на новый тул, затратить усилия, чем продолжать тратить время и нервы на поддержку тула старого. Особенно если это СорсСэйф... Брр...

Так и с контролем версий. Долгое время стандартом у нас был SourceSafe, просто потому, что шёл вместе со Студией (ибо она повсеместно была хакнутой). CVS, этот стандарт де-факто мира open source того времени, приживался не очень охотно (см. "Так уж здесь повелось"). На этом фоне Subversion стал тем продуктом, который вывел системы контроля версий на новый уровень и его применение стал нормальной практикой не только у нас в стране, но и вообще везде. Это же обстоятельство сыграло против него. Некоторая заторможенность в развитии вылилась в то, что нормальное слияние веток (merge) и его отслеживание ("стрелки мёржа") появилось буквально недавно даже по меркам софтварной индустрии. И если судить по интевью, переименование файлов и директорий будет сделано нормальным образом только в будущем.

Одним словом, появление третьего поколения систем контроля версий стало вопросом времени и оно таки случилось. Новые поколения разработчиков считают стандартом уже не SVN, а git или Mercurial и недоумевают: "как можно работать с *№;%: SVN-ом, когда у меня тут распределённый контроль версий, всё быстро, продвинуто и вообще - Сам Линус его написал!" Флейм комментариев к интервью очень оказателен в этом смысле. Да и спорность некоторых реплик Ивана подливает масла в огонь.

Что сказать - централизованные системы контроля ещё живы и никуда уходить не собираются, взгляните на тот же список клиентов VisualSVN - для них распределённость не является явным плюсом.

Дабы не начинать холивар distributed vs. centralized VCS, на этом и закончу заметку :)