Компания Paralells хорошо известна всем, кто сталкивается с программным обеспечением для хостинга и облачных вычислений, а также не чужд Open Source движению. 18 июля два её ведущих разработчика Андрей Вагин и Константин Хоренко проведут открытую встречу на тему контейнерной виртуализации в Linux, и перед ней мы задали докладчикам несколько вопросов, чтобы узнать, что сейчас наиболее актуально в области виртуализации, почему было принято решение совершить перенос из ядра в пользовательскую область (CRIU), как строятся отношения Parallels с OS-сообществом и каково разрабатывать продукты с открытым кодом за зарплату.
Что происходит в мире разработки ПО для дата центров в области виртуализации? Какие вещи сейчас наиболее актуальны и окажут наибольшее влияние на будущее по вашему мнению?
Андрей: Сейчас бурно развиваются облака, похожие на Amazon и Digital Ocean, когда количество и мощность виртуальных машин может меняться в зависимости от нагрузки. Контейнерная виртуализация на этом рынке представлена слабо, и мы пытаемся исправить эту ситуация. Активно работаем над поддержкой контейнеров в OpenStack, Libvirt. Совместно с Docker и LXC участвуем в создании универсальной библиотеки для управления контейнерами.
Константин: Наша работа, как мы надеемся, как раз и окажет влияние на будущее виртуализационных решений. На текущий момент Контейнеры активно используются хостерами, enterprise рынки больше пользуются Виртуальными Машинами. В то же время многие интересуются тем же OpenStack-ом, хотят использовать его для управления своих виртуальных сред, и, если OpenStack будет поддерживать Контейнеры, на них могут обратить внимание не только хостеры, ведь свои плюсы у технологии имеются.
Константин Хоренко
Проект CRIU, в частности ваше нетривиальное решение совершить перенос из ядра в пространство пользователя. Оно было неоднозначно поначалу воспринято, звучала критика от лидеров OS, но по итогу оказалось успешным. Расскажите немного подробнее о логике принятия этого решения.
Андрей: Строго говоря, переноса-то и не было, так как в ядро оно не вошло. Первый рабочий вариант появился в OpenVZ в 2005 году, который и по сегодняшний день используется в 2.6.32 ядрах. Он был заточен под контейнеры. В 2008 году Орен Лаадон предложил более универсальную версию реализации в ядре, но сообщество не горело большим желанием принимать настолько сложный код. Так в 2011 году Павел Емельянов решил пробовать другой путь (CRIU), который переносил большую часть логики в пространство пользователя. Сообщество приняло эту идею, хотя некоторые относились к ней скептически и до конца не верили, что всё это полетит.
Константин: А если вопрос в том, зачем нам это вообще надо, то ответ прост: нам нужна функциональность миграции Контейнеров «на лету» (без остановки Контейнера). У нас есть реализация этого функционала в ядре, код работает, но его не хотят принимать в мейнстрим в существующем виде, и нам сейчас приходится тратить ресурсы на поддержку этого кода вне мейнстрима. Вынесение функциональности в пространство пользователя должно уменьшить ресурсы, необходимые на поддержку с нашей стороны (я имею в виду именно поддержку существующего кода, не разработку нового).
Не могли бы вы дать краткий обзор других систем виртуализации, таких как Xen, KVM и VirtualBox, которые всё активнее проникают на поле систем контейнерной изоляции, с точки зрения пользователя. В чём их преимущества и недостатки в сравнении с вашими продуктами.
Андрей: Основной недостаток в большем потреблении ресурсов и, как следствие, меньшей плотности размещения. Из плюсов можно упомянуть отсутствие ограничений на запускаемую операционную систему, несколько большую изоляцию.
Как и почему конкурируют коммерческие продукты понятно. А что такое конкуренция между Open Source продуктами?
Константин: Часто конкуренция между Open Source продуктами слабо отличается от конкуренции коммерческих продуктов. Пользователь сравнивает продукты с точки зрения функциональности, выбирает понравившийся, его и покупает. У кого покупать? Конечно, у того, кто продукт разрабатывает, они смогут оказать наилучшую поддержку. Нюанс тут может быть такой: кто-то может взять существующий код (он же открытый), сделать свой продукт на его базе, начать продавать и осуществлять поддержку. Переманить пользователей непросто: у оригинальной компании-разработчика больше опыта, ей больше верят, но всё возможно.
Как построено взаимодействие компании Parallels с OS-сообществом? Есть ли в ваших продуктах коммиты не от сотрудников компании?
Андрей: Это мой любимый вопрос. Компания Parallels уже больше 10 лет делает контейнеры. Отчасти благодаря ей в Linux ядре появилась контейнерная виртуализация. Отношения с OS-сообществом взаимовыгодные. Мы создаём новые технологии, оттачиваем их на своих пользователях и отдаём в ядро. Наверное, у вас уже созрел вопрос, а зачем нам их отдавать? Раз в несколько лет изменения приходится переносить на новую кодовую базу, и эта (не самая увлекательная) работа отнимает большое количество времени.
Вторая причина в том, что кто-то другой может добавить идентичную функциональность, но в виде, не самом удобном для наших нужд. Надо понимать, что продвижение своего кода в ядро нередко выливается в долгие дискуссии с остальными разработчиками, и в итоге от первоначального патча остаются только рожки да ножки. Однако, в большинстве случаев, удается сохранить фичи в виде удобном как для нас, так и для остального сообщества.
Заливая код в ядро, мы освобождаем ресурсы для создания чего-то нового и работаем на свою репутацию.
Константин: Коммиты, спортированные из мейнстрим версии ядра, считаются? Если да, то много. Если имеются в виду коммиты, которые больше никуда не вошли, то, если и есть, очень мало. Единицы. И мы хотим, чтобы их становилось больше. А для этого нужно разработку делать более открытой, а не только результирующий код открывать. И мы над этим работаем.
Что с вашей точки зрения является основным препятствием для окончательной победы OS-продуктов над коммерческими решениями?
Андрей: «Коммерческий – имеющий отношение к коммерции, торговле, доходности». Я не верю, что в наше время можно создать большой значимый и технически сложный продукт на голом энтузиазме.
А если серьёзно, то в Open Source будет переходить всё больше базовых вещей, но часть инновационных продуктов будет оставаться в закрытом виде. Так уж устроен мир. Возьмём, например, компанию Parallels. У нас всегда существовало две версии продукта: открытая OpenVZ и закрытая Parallels Server (Virtuozzo), которая предоставляет ряд дополнительных возможностей.
Константин: Неверное противопоставление, правильнее сказать – «победа OS-продуктов над продуктами с закрытым кодом». Думаю, никогда все продукты не станут полностью открытыми (с открытым кодом). Открываться будут те части, которые реализуют функциональность, присутствующую во многих продуктах, и этот код будет унифицироваться в разных продуктах со временем. Просто не имеет смысла тратить ресурсы на уникальный код, реализующий функциональность, которая есть у всех и работает примерно одинаково. А вот какие-то уникальные особенности, скорее всего, будут оставаться закрытыми – как конкурентное преимущество продуктов – до тех пор, пока конкурирующие продукты не будут иметь аналогичную функциональность или до тех пор, пока не станет понятно, что эта функциональность не является важной для пользователей.
Вы находитесь в довольно уникальном положении. С одной стороны вы занимаетесь разработкой для Open Source, а с другой – вам за это платят деньги. Как вы себя чувствуете в этой ситуации, как удается находить баланс между интересами компании, OS-сообщества и личными?
Андрей: Если говорить про ядро Linux, то ситуация не уникальная. Большинство разработчиков ядра работает за деньги, которые им платят работодатели. С балансом бывают проблемы, но руководство быстро наводит порядок:).
Константин: Деньги-то нам платят за разработку продукта, а делая его более «открытым», мы экономим на поддержке кода: если какой-то наш код уже находится в мейнстриме, то при разработке новой функциональности или переработке старой в мейнстриме ему просто не дадут поломаться, а так нам бы самим пришлось заниматься адаптацией.
Баланс, да, не всегда тривиален. Не вся функциональность, которую просит открыть иной раз OS-сообщество, можно открыть, если она влияет на конкурентоспособность коммерческой версии продукта. Не всякая новая функциональность, которую хочет кто-то из OS-сообщества, разрабатывается, если, по нашим оценкам, есть более ожидаемые фичи.
Кроме проектов, в которых вы заняты на основной работе, вовлечены ли вы ещё в какую-то Open Source разработку для души?
Андрей: Трудно провести грань между основной работой и разработкой для души, для меня это одно и то же. Раньше участвовал в каких-то смежных проектах, но немного. Помню, надоело ходить в Windows, чтоб GPS данные обрабатывать. Нашёл программу помощнее (QLandkarte GT) и дописал туда то, чего мне недоставало, и даже немного больше. Но это было давно и неправда. Теперь жалко тратить время на подобные вещи.
Константин: Нам повезло, однозначно – нам нравится заниматься тем, что оказывается необходимым по работе. Это счастливое совпадение и отличная мотивация!
У каждого есть какие-то рабочие ритуалы, которые помогают настроиться. Расскажите о ваших.
Константин: Настраиваться надо на то, что не хочется делать, а надо. А приступать к делу, за которое болеешь душой, – никакие ритуалы не нужны.
Остаётся ли время на какое-то хобби? Может быть, спорт?
Андрей: После напряженного рабочего дня хочется отвлечься, подвигаться. Я привык вести активный образ жизни. Кроме того, мне всегда хотелось путешествовать, но смотреть часами достопримечательности – это не мое. В институте увлекся горными походами: романтика, экстрим и очень бюджетно. Чем дальше, тем рюкзак становился тяжелее, и я перешёл в альпинизм, а потом в скалолазание. Скалолазание – это спорт на каждый день. После работы можно пойти в зал. На выходные можно выехать за город. А для отпуска подобрать район в любой части света.
Иногда увлекался и более экзотическими видами, такими как slackline и unicycle.
Андрей Вагин
Константин: Время – самый ценный ресурс, я уже пришёл к этому. Особенно ярко это ощущается после недавнего рождения сына. :) Хотя, пожалуй, и раньше спортом не занимался: так, на роликах покататься, в футбол сыграть, но всё абсолютно нерегулярно. А вот ходить мне нравится: и по городам – достопримечательности смотреть, и в лесу. Грибы-ягоды – это моё, хотя, опять же, последние годы за грибами ещё хожу, а на ягоды времени не остаётся.
Wargaming.net приглашает всех желающих на встречу с Константином Хоренко и Андреем Вагиным Open WG Talk#2 18 июля.
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.