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

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

По словам директора Gartner по исследованиям Тони Ямса, обратившись к бессерверному облачному сервису, вы автоматически избавляетесь от забот с ВМ или инстансами IaaS: «Запущенные поверх сервиса контейнеры сами беспокоятся о выделении для себя ресурсов. Организовать такое онпремис практически нереально».

Однако, отметил он, большинство предприятий уже давно применяют ВМ, и вряд ли в обозримом будущем эта тенденция изменится. Сегодня предприятия разворачивают контейнеры и платформы для их оркестровки преимущественно в виртуальной инфраструктуре. «И для этого есть ряд причин, основная из которых в том, что базовая инфраструктура — особенно это касается современных корпоративных сред — переместилась на ВМ. Вполне возможно, что у вас не осталось никаких процессов, для которых нужно будет задействовать „голое железо“», — пояснил Ямс.

Кроме того, при переходе организаций к более сложным процедурам развертывания контейнеров с применением таких платформ оркестровки, как Kubernetes, они могут столкнуться со сбоями. «Учитывая быстрые темпы разработки, Kubernetes нужно довольно часто модернизировать, что требует надежных и отлаженных процессов развертывания. Скорее всего, обеспечивать их надежность будут решения на базе ВМ», — сказал Ямс. По его словам, Gartner не рекомендует отказываться от тех процессов и инструментов, которые работают в среде ВМ, но попутно советует предприятиям изучать преимущества Kubernetes.

Митч Пиртл, CEO Space Monkey Labs и создатель Open Source-системы управления контентом Joomla, соглашается с тем, что ВМ продолжат существовать в виде одного из важнейших элементов инфраструктуры предприятий, но, как он считает, со временем виртуализация примет иные формы. «Главное преимущество ВМ заключается в том, что вы можете полностью сконфигурировать стек ПО и запустить его. Но у этой легкости имеется обратная сторона: ВМ не предназначены для развертывания масштабируемых программных стеков со сложными настройками, а это как раз то, чем обладают контейнеры — они позволяют по мере необходимости масштабировать различные части вашей платформы независимо друг от друга. Таким образом, контейнеры имеют огромный потенциал роста, особенно в корпоративной среде», — сказал Пиртл.

Интерес к контейнерам подогревают разработчики

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

«Одно из важнейших преимуществ контейнерной виртуализации состоит в том, контейнеризированное приложение выполняется в одной и той же среде на любом этапе его жизненного цикла, от начальной разработки до тестирования и развертывания, и это обеспечивает переносимость рабочих нагрузок», — сказал Ямс. По его словам, в прошлом все происходило по-другому. Приходилось сначала писать приложения и затем переносить их в производственную среду, где они довольно часто выходили из строя и для их починки инженерам требовалось воссоздавать ту среду, которая приводила к сбою.

Контейнеры — не чудодейственное средство

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

«Контейнеры не обеспечивают такой же уровень изоляции, как ВМ, но его может быть достаточно для работы внутри компании», — сказал Ямс. По его словам, важно удостовериться, что контейнеризированные рабочие нагрузки выполняются в одном доверенном домене, в противном случае для обеспечения изоляции придется прибегнуть к дополнительным решениям. В качестве одного из них Ямс упоминает gVisor — гибрид системы виртуализации и контейнеров. gVisor может применяться как слой в Docker и Kubernetes, заменяя предлагаемое в них штатное окружение на собственное.

Для сравнения, в обычных контейнерах применяется общее для всех изолированных окружений ядро Linux с разграничением доступа к ресурсам на уровне cgroups и namespaces, что является слабым звеном безопасности, так как не все ресурсы ограничиваются, а уязвимость в ядре Linux может скомпрометировать всю систему изоляции. «Разработчики пытаются придумать новые механизмы виртуализации, которые сочетают уровень надежности ВМ и эффективность и низкое потребление ресурсов, которыми могут похвастаться контейнеры. Но пока что эти разработки находятся на уровне эксперимента, и если вы хотите иметь надежную изоляцию — вам нужны ВМ», — сказал Ямс.

Несмотря на то, что контейнеры уступают ВМ по уровню защиты, у них есть перед ними неоспоримое преимущество — они устраняют архитектурную или программную несовместимость приложений. «Я и мои разработчики даже не задумываемся о многоуровневом строении приложений — в облачном контейнере они выглядят одинаково. Это значительно преображает пользовательский интерфейс, который на протяжении многих лет контролировался техногиками. Разобраться с настройками Amazon Cloud может даже моя жена, которая не имеет к ИТ никакого отношения. Если она захочет, то без проблем может настроить для работы с базой данных среду MySQL, потому что это единый контейнер», — рассказал Майкл Нимс из KPMG. По его мнению, инженерам и администраторам БД имеет смысл поразмыслить, как их использовать контейнеры для управления масштабированием приложений.

«Работая администраторам БД, я отвечал за управление вспомогательными приложениями. Учитывая, что на каждого администратора приходилось от пяти до десяти БД, к каждой из которых подключалось еще 20-30 клиентов, вскоре мне стало ясно, что я просто не смогу все это состыковать и мне пришлось обратиться за помощью к системным администраторам, — пояснил Нимс. — Если же среда MySQL запущена в облачном контейнере, то я могу исправить нестыковки на всех инстансах одновременно. Если бы мне пришлось вернуться в те дни, то мне бы пришлось вносить все исправления вручную. Контейнеры — это огромный шаг вперед с точки зрения управляемости и масштабируемости, потому что у вас имеется консоль и несколько операторов, которые управляют сотнями тысяч приложений».

Разработчики и ИТ-администраторы должны наладить сотрудничество

Последние два десятилетия ИТ-отделы занимались обеспечением и настройкой ВМ, но теперь, с учетом возрастающей популярности контейнеров, им предстоит познакомиться с ними и платформами для их оркестровки поближе.

«Потребуется некоторое время, прежде чем команды администраторов и разработчиков наладят совместную операционную деятельность. Чтобы обеспечить бесшовную работу контейнерной инфраструктуры, команде администраторов по-прежнему нужно будет настраивать хранилища и сети, а также механизмы аутентификации и безопасности, но для слаженной работы контейнерного окружения эту работу нужно согласовывать с командой DevOps», — сказал Ямс.

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

Итоги

ВМ и контейнеры на протяжении некоторого времени продолжат сосуществовать, поскольку предприятиям требуются преимущества как тех, так и других. Даже если бы контейнеры в теории смогли бы заменить ВМ для всех сценариев применения, это не значит, что ВМ исчезнут в одночасье — современные компании в значительной степени привязаны к этой технологии. Однако очевидно, что Docker, Kubernetes и другие контейнерные технологии сильно изменят пейзаж рынка виртуализации — и с этим придется считаться.