Электронная беседка. В гостях — Юрий Жлоба

Если вы будете искать в русскоязычном сегменте Интернета актуальную практическую информацию по медиасерверам и протоколам, а также обо всем, что с ними связано, то наверняка натолкнетесь на ресурс http://yzh44yzh.com, автором которого является программист Юрий Жлоба. На самом деле, тема насущна, ее нужно обсуждать, не замыкаясь в рамках только узкоспециализированных сообществ. На интервью Юрий откликнулся с охотой, правда, как он правильно отметил, фактически каждый из заданных вопросов является темой для отдельной беседы. В целом же хотелось охватить наиболее актуальные направления, а также проследить некоторые тенденции, точнее, взглянуть на них глазами человека, который «варится» в этих технологиях не один год.

— Юрий, для затравки беседы расскажите о проектах, в которых вы участвовали, и, если не секрет, над чем работаете сейчас?

— Итак, я — flex/flash/erlang/java программист в компании Креатек. У нас продуктовый бизнес, есть серия продуктов для сферы веб-коммуникаций (www.flashcoms.com), которые являются моим главным детищем, и которым я посвятил львиную долю из тех пяти лет, что работаю в Креатек. Практически все мои проекты так или иначе связаны с медиасерверами и потоковым видео. И сейчас у меня парочка очень интересных и оригинальных проектов из этой же сферы. Жаль, пока не могу о них рассказывать:).

— Вообще, можно сказать, что, с одной стороны, Flash/Flex технологии сейчас теряют, если присмотреться к появившимся конкурентам в лице HTML5 и WebGL (в данном разрезе будем рассматривать их как конкурентов), с другой - технологии от Adobe являются монополистами, если говорить о рынке потокового аудио/видео в Интернете. Как вы думаете, сохранится ли эта монополия в ближайшие годы?

— Не соглашусь с этими утверждениями:). HTML5 (и WebGL) лишь частично конкурируют с Flash/Flex. У этих технологий, как это всегда бывает, есть свои достоинства и недостатки, и свои сферы применения. Причем достоинства одной технологии хорошо компенсируют недостатки другой, и наоборот. В связи с чем их можно успешно применять вместе в одном проекте (что было темой моего доклада на SEF.BY-2011).

Дефицит flash/flex разработчиков ощущается во всем мире, и он не падает. Так что я могу смело утверждать, что конкурирующие технологии не так уж страшны флеш-платформе (а это не только HTML5, но и Microsoft Silverlight и Java FX).

Технологии от Adobe отнюдь не являются монополистами, в том числе и сфере потокового видео:). Но весомое преимущество Adobe имеет, и, главным образом — за счет флеш-плеера. А что касается медиасерверов, то тут другие вендоры предлагают не худшие, и даже лучшие продукты, чем Adobe. А если мы возьмем HTTP Streaming (доставку видео по HTTP-протоколу), то тут Adobe и вовсе в роли догоняющих, а лидируют Apple и Microsoft. Об этом подробнее можно узнать из моего доклада, который я делал в марте на 11-й конференции BAFPUG "Видео в Интернете, кратко обо всем". Есть видеозапись этого доклада http://vimeo.com/20989320 и полный текст на моем сайте http://yzh44yzh.com/ru/video_intro.

Так что монополии у Adobe нет, и в ближайшие годы конкуренция будет только нарастать. И от этого пользователи будут только в выигрыше. А программисты всегда будут иметь сферу для приложения усилий и самореализации:).

— Вообще, ситуация с RMTP (Real Time Messaging Protocol), начиная с 2009 года, когда Adobe выпустила спецификацию, не совсем понятна, по крайней мере со стороны...

— Да, ситуация с RTMP-протоколом со стороны не очень понятна:). Тут дело вот в чем. Конечно, Adobe хотели бы иметь монополию на этот протокол. Но поскольку он был очень востребован, то был довольно быстро изучен (reverse engineering), и быстро появились альтернативные реализации (в частности, сервер Red5).
Adobe вынужденно открыли спецификацию на этот протокол, дабы сделать хорошую мину при плохой игре. Тем самым де-юре признали существующее де- факто положение. Чтобы получить хоть какую-то выгоду из этой ситуации, Adobe решили сделать себе имидж открытой компании, которая делится своими наработками и выкладывает их в open source.

Adobe многое выкладывают в open source, например, исходные коды Flex SDK. Но это делается в основном в имиджевых целях. Спецификация RTMP, кстати, во многих деталях ошибочна. Неясно, то ли это небрежность, то ли Adobe сделали это намеренно, чтобы усложнить жизнь конкурентам. Но подобное отношение к сторонним разработчикам весьма характерно для Adobe.

— Медиасерверы. На данный момент предлагается несколько вариантов — от дорогого Flash Media Server до бесплатного Red5, причем на Red5 при всей его доступности сделано не так много проектов. В чем причины?

— Да, на сегодняшний день существует довольно много реализаций медиасерверов, но не все из них хорошо зарекомендовали себя в крупных проектах с большим числом пользователей и большим трафиком. Сегодня есть два основных конкурента — это Flash Media Server от Adobe и Wowza Media Server от компании Wowza Media Systems. Причем Wowza Media Server по ряду параметров лучше, чем FMS (в частности, он умеет доставлять медиаконтент на мобильные платформы по протоколам, отличным от RTMP). И еще он существенно дешевле. Прямо скажем, Adobe очень неуютно от такого конкурента, и вот недавно борьба перешла в юридическое поле — Adobe подали в суд на Wowza:).

Новый игрок на этом рынке — сервер Erlyvideo. Он пока мало известен, но очень перспективен. Сервер не уступает по возможностям Wowza, но имеет лучшую производительность и способен обслуживать большее число клиентов. Наша компания активно сотрудничает с Максом Лапшиным — автором этого сервера, и мы будет продвигать его на рынке штатов.

Что касается Red5, то он не составляет существенной конкуренции главным игрокам. Бесплатность — его единственное преимущество. К сожалению, этот сервер довольно слаб по производительности и может обслуживать где-то 200 клиентов, вряд ли больше. Это слишком мало для серьезных проектов.

— Расскажите, пожалуйста, о ваших первых ощущениях при знакомстве с языком Erlang:). Если честно, я был в легком шоке, когда начал его изучать. В чем вы видите плюсы и минусы этого языка.

— Изумительный язык:). Просто удивительно, как такой простой язык может быть настолько мощным. Несколько месяцев назад я еще ничего не знал об Erlang, а интересовался Scala. О, Scala — язык для настоящих джедаев. Красивый и лаконичный синтаксис выглядел намного лучше, чем Java. Но книги по Scala пугали своей толщиной, а содержание этих книг оправдывало эти страхи:). Scala — довольно сложный язык, и чтобы овладеть им на серьезном уровне, нужно потратить немало времени.

И тут я познакомился с Erlang. Как раз в то время, когда пытался вникнуть в Scala. Это был удивительный контраст. Erlang очень прост. Осваивается, ну, реально за пару недель. Многопоточность, кластеризация, устойчивость к ошибкам — это дается минимальными усилиями. А в Java — это серьезная проблема. И Scala, хотя и реализует ту же модель многопоточности, что и Erlang, но опирается на потоки операционной системы. А они дорогие, и их нельзя создать много. В то время как потоки в Erlang дешевые, и их можно создавать очень много:). Из-за чего в архитектуре приложений будет существенная разница. И для Erlang эта архитектура будет намного проще.

Сейчас я уверенно использую Erlang в рабочих проектах, и не испытываю особого желания работать с Java:).

— Расскажите, пожалуйста, подробнее о Erlyvideo. Как я понял, это российский проект, за которым стоит один человек...

— Да, этот сервер написал Макс Лапшин, очень талантливый программист из Москвы. Ему нужен был медиасервер, и его, в силу врожденного перфекционизма, не устраивали имеющиеся реализации:). Макс нашел на гугл-коде заброшенный проект медиасервера на Erlang и переписал его начисто. А потом развивал проект, добавляя поддержку новых кодеков, новых протоколов и клиентских устройств.

Erlang, как и любой язык, имеет свои недостатки. Но вот в этой сфере — высоко нагруженный сервер, передающий большие объемы данных, надежный и устойчивый — в этой сфере Erlang подходит как нельзя лучше. Сделать подобный проект на Erlang в разы проще, чем, например, на Java. Именно поэтому один человек за не очень долгий срок смог сделать все то, что команда Wowza Media Server делала годами:).

— Базы данных Mnesia, которые используются в Erlang-проектах, также не являются тривиальными для понимания разработчика, привыкшего к SQL- системам...

— Ничего страшного. Если разработчик не побоялся освоить Erlang, то уж синтаксис запросов к Mnesia тоже освоит. Тем более что принципы построения запросов одинаковые и в SQL, и в Mnesia.
Надо заметить, что на самом деле эта база данных не очень популярна среди Erlang-разработчиков. Многие предпочитают использовать традиционные SQL-базы данных, например PostreSQL. Или не традиционные, например CouchDB.
Mnesia имеет то преимущество, что легко кластеризуется. С традиционной базой данных это не так просто.

— Вообще, к Erlyvideo многие сейчас только присматриваются. Например, на форумах разработчиков ММО-компьютерных игр этот вариант обсуждается часто, но все беседы фактически сводятся к тому, что отсутствуют программисты, знающие Erlang даже в Москве. При этом сам язык во многих ТОП'ах 2011 года попадает в десятку наиболее востребованных и перспективных. Как вы смотрите на данный вопрос? Сдвинется ли что-нибудь с мертвой точки?
— Макс Лапшин говорит, что это не проблема. Берете любого толкового программиста, даете ему Erlang, и через 2 недели имеете толкового Erlang- программиста:). Я с ним согласен, Erlang действительно осваивается легко и быстро.
И недостатка в разработчиках, оказывается, нет. Просто их нужно искать в специфических местах — в тематических гугл-группах и других аналогичных тусовках.
Я даже скажу, что найти Erlang-программиста проще, чем Flex-программиста. Флексеров тоже мало, но они гораздо больше востребованы.
А что касается мертвой точки, то я не думаю, что все так плохо. Erlang достаточно известен и востребован. Просто вокруг него нет маркетинговой шумихи и пиара, и за ним не стоит мощный вендор с огромными ресурсами, как за Java или .NET. Может, оно и к лучшему:).

— Каким вы видите будущее развития медиасерверов как таковых, какие проблемы нужно решать их разработчикам сейчас?

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

— Напоследок, немного отвлекаясь от рассматриваемой темы, я бы хотел спросить о вашем участии в SEF.BY-2011. Если не ошибаюсь, ваш доклад был о дружбе Flash и HTML5. В целом, как вы оцениваете "реалии и перспективы белорусской софтверной индустрии"?

— Мой доклад назывался "Flash и HTML5 – друзья, а не конкуренты. Создание гибридных Flash + HTML5 приложений". Тема довольно интересная, и, насколько я знаю, никем не раскрытая:). А мы в своей компании довольно давно делаем такие гибридные проекты. В ближайшем будущем я опубликую этот доклад в виде статьи на своем сайте.
Насчет реалий белорусской софтверной индустрии я ничего оригинального не скажу. Да, это в основном аутсорс. Да, есть редкие компании, которые занимаются продуктовым бизнесом (например, наша). Да, есть дефицит хороших разработчиков. А по некоторым специальностям (например, Flex) дефицит довольно острый. Но индустрия работает и приносит стране деньги:).
Насчет перспектив я несколько пессимистичен. В ближайшие годы вряд ли нас ждет грандиозный прорыв. Думаю, со временем сформируется определенное количество сильных и успешных программистов с многолетним опытом, которые станут преподавателями, и будут учить студентов в ВУЗах. И только тогда можно ожидать прогресса отрасли.
Это весьма сложная проблема. Во-первых, потому что успешного программиста с многолетним опытом гораздо легче заинтересовать уехать из страны, чем стать преподавателем (и желающих заинтересовать предостаточно). Во-вторых, далеко не каждый программист может хорошо преподавать. Но, думаю, рано или поздно такое развитие будет.

— Спасибо за интервью!

О языке Erlang

Функциональный язык с динамической типизацией Erlang появился на свет в 1991 году благодаря лаборатории Ericsson Computer Science Laboratory. На его разработку было потрачено шесть лет, если не учитывать тот момент, что компания Ericsson начала искать язык для создания телекоммуникационных приложений начиная с 1981-го. Название он получил в честь Агнера Крарупа Эрланга, датского математика, который работал в области телекоммуникаций, хотя многие считают, что Erlang — это результат совмещения частей слов ERicsson и LANGuage. С 1992 года язык начал применяться в компании Ericsson для разработки телекоммуникационного оборудования, а в 1998-м были опубликованы исходные коды его самого и сопутствующих библиотек. Со временем Erlang приобрел статус языка общего назначения. На данный момент проект поддерживается компанией Ericsson. Синтаксис унаследован от Prolog, Erlang имеет компактный базовый арсенал современных функциональных языков (модули, полиморфные функции, сопоставление с образцом, анонимные функции, условные конструкции, структуры, обработка исключений, оптимизация хвостовой рекурсии). При этом нужно отметить такую отличительную особенность, как одноразовое присваивание. Также среди основных отличительных характеристик языка стоит выделить специфическую организацию параллельной обработки и передачи сообщений. Erlang поддерживает параллельную модель, основанную на легковесных процессах с асинхронной передачей сообщений, которые на самом деле не имеют ничего общего с процессами операционной системы и называются процессами только потому, что код каждого процесса выполняется независимо от других процессов. Процессы в Erlang являются изолированными друг от друга и не имеют общего состояния, язык позволяет достаточно легко превратить параллельное приложение в распределенное, где различные процессы выполняются на различных узлах сети. В целом, язык очень интересный.

В состав стандартных библиотек Erlang-а входят несколько продуктов, среди которых стоит выделить:
. распределенную СУБД — Mnesia;
. HTTP-клиент и сервер, а также FTP-клиент — Inets;
. Orber — CORBA v2.0 Object Request Broker (ORB).

Среди крупных проектов, в которых использовался язык, следует отметить сервис хранения данных SimpleDB для Amazon Elastic Compute Cloud (EC2), сервис социальных закладок Delicious от Yahoo! (зарегистрировано больше чем 5 миллионов пользователей и больше чем 150 миллионов закладок), сервис чата в Facebook (больше чем 100 миллионов активных пользователей), а также среди открытых проектов — сервис мгновенных сообщений Ejabberd и базу данных CouchDB.
На данный момент во многих рейтингах Erlang входит в ТОП-10 наиболее актуальных языков программирования.

Кристофер http://itcs.3dn.ru


Компьютерная газета. Статья была опубликована в номере 21 за 2011 год в рубрике бизнес

©1997-2024 Компьютерная газета