Контейнеры убьют виртуальные машины?
Два года назад, когда Фрэнк Макриири запустил Aptible, чтобы помочь компаниям перевести конфиденциальные данные, относящиеся к здравоохранению, в облако, он решил, что контейнеры будут играть ключевую роль в деятельности компании.
«Запуск нашего сервиса на уровне виртуальных машин был бы просто уродливым решением» - говорит он. «Я не мог представить себе этого без контейнеров».
«Контейнерная» шумиха захлестывает сферу облачных вычислений и виртуализации. Многие разработчики осознали преимущества легкого способа для упаковки кода приложений, и в свою очередь, именитые производители технологий – в том числе Amazon Web Services, Red Hat, IBM и VMware – запрыгивают на борт лидирующей сегодня технологии в этой гонке.
И это заставляет некоторых задаться вопросом: будет ли развитие контейнеров знаменовать собой конец виртуализации и виртуальных машин?
«Прямо сейчас происходит структурное изменение,» - говорит Брайан Кантрилл, технический директор провайдера облачных услуг Joyent, активного пользователя технологии контейнеров. «Мы сейчас делаем с виртуальными машинами то, что виртуальные машины сделали с физическими машинами.»
Контейнеры - это не новая технология: первые итерации контейнеров существовали как решения с открытым исходным кодом Linux на протяжении десятилетий. Однако в прошлом году эта технология завоевала сердца и умы многих разработчиков для создания и запуска приложений.
Вот как они работают. Контейнеры выделяют конкретный код, приложения или процессы. Это дает все, что находится внутри контейнера, управляемым, в том числе возможным для перемещения на различные хосты. Со своей стороны, виртуальная машина «нарезает» сервер на несколько операционных систем. Но контейнеры работают поверх OS, так, в отличие от ВМ, они не требуют ОС загружаться, когда они созданы. В сущности, они могут виртуализировать операционную систему, чтобы обеспечить создание более легкого пакета по сравнению с VM.
Кантрилл говорит, что все это означает, что лучше всего запускать контейнеры на голом железе, подразумевая сервер, на котором нет гипервизора или виртуальных машин. «ВМ (виртуальные машины) просто бессмысленны в мире контейнеров», - говорит он, отмечая, что Joyent построил свою операционную систему SmartOS именно с помощью контейнеров.
Так подъем контейнеров все-таки убьет VM?
Джей Лайман из 451 Research Group не вполне готов объявить о смерти виртуальных машин. «Реальность такова, что виртуальные машины сегодня являются неотъемлемой частью предпринимательской ИТ-среды и ничто не будет заменять или убивать их в ближайшее время.»
Скорее контейнеры хороши в некоторых ситуациях, но они не являются панацеей. «Вы должны думать о контейнерах как о еще одном оружии в арсенале облачных разработчиков», - говорит Дэвид Линтикум, ученый и консультант Cloud Technology Partners. «Они хорошо вписываются в некоторые ситуации, но не во все».
Для Макриири из Aptible, контейнеры были естественными для хостинговой платформы его компании для использования чувствительных данных, относящихся к здравоохранению. Компания, которая была основана в 2013 году и сделала свой продукт доступным через год, использует Elastic Compute Cloud (EC2) службы Amazon Web Services и работает на контейнерных образах Docker поверх этих виртуальных облачных машин. По той причине, что компания работает с чувствительной медицинской информацией, Aptible создает отдельные виртуальные частные облака (VPC), отдельные контейнеры для каждого клиента.
Контейнеры позволяют значительно упростить управление по сравнению с тем, как, если бы Aptible использовал только виртуальные машины. С одной стороны, контейнеры обеспечивают последовательный дизайн архитектуры для всех данных, которыми управляет Aptible - все они хранятся в контейнерах. Если клиентам или самому Aptible необходимо обновить что-нибудь, новый контейнер будет создан и запущен, что занимает менее секунды. Для виртуальной машины может потребоваться до минуты, чтобы загрузиться.
Гибкость контейнеров – еще одно преимущество: Aptible может разместить несколько контейнеров по одной виртуальной машине, или большой контейнер на несколько виртуальных машин, если это необходимо. Для Aptible гораздо проще управлять своими услугами, когда все данные и приложения выглядят одинаково, потому что они аккуратно упакованы в контейнеры. Таким образом, они выступают в качестве наименьшего общего знаменателя.
Эта архитектура хорошо работает для Aptible, но не может быть реальностью для всех. Аналитик Gartner Лидия Леонг говорит, что даже с появлением контейнеров пользователи в гетерогенных средах, включающих несколько операционных систем и различных элементов управления безопасности, скорее всего, все еще используют ВМ-ориентированную архитектуру. Контейнеры, например, все должны работать на одной и той же ОС и не могут быть смешаны между Linux и Windows. Но нет никаких причин, почему крупная предпринимательская среда не может иметь сочетание виртуализированных серверов и голого железа физических хостов с контейнерами.
Итак, как начать работать с контейнерами? Продавцы на рынке облаков и виртуализации начали деятельность по развитию контейнеров с размахом. Докер, компания, которая предоставляет решения с открытым исходным кодом для развития контейнеров, в последнее время занимает центральное место в разработке технологии. Другие проекты с открытым исходным кодом, такие как Kubernetes от Google, помогают управлять несколькими контейнерами и также набирают популярность.
Возьмите Amazon Web Services. Лидирующая на рынке IaaS компания прошлой осенью объявила о Amazon Elastic Container Service (ECS), и только недавно компания сделала его общедоступным. После того, как клиенты AWS раскрутят тему контейнеров, ECS будет заботиться об их масштабировании и обеспечении работы центрального портала управления для их отслеживания.
Microsoft в этом месяце выпустила новую "нано" операционную систему, которая будет поддерживать контейнеры, работающие на ОС Windows.
Ожидается, что и другие компании поддержат контейнеры. VMware, например, как ведущий поставщик программного обеспечения для виртуализации, объявил о первоначальной инициативе по поддержке контейнеров. Мэтью Лодж, один из руководителей компании, говорит, что работа контейнеров внутри виртуальной машины позволяет пользователям, используя новые технологии, поддерживать контроль безопасности и управления, к которому они привыкли. Запуск контейнеров непосредственно на голое железо потребует предоставления сетевых соединений и безопасности, которые могут обрабатываться в системе управления VM, подобно ее программному обеспечению.