Заоблачные дали. Почему компании выбирают виртуальные машины, а не контейнеры

20 марта 2019, 12:48

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

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

Типы виртуализации

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

Главные отличия между контейнерами и виртуальными машинами — в архитектуре, которую они используют.

Виртуальные машины

Виртуальная машина представляет собой систему, эмулирующую аппаратное обеспечение для запуска гостевой ОС и исполняемых приложений на хосте (физической платформе). Для запуска виртуальных машин используется гипервизор, и, несмотря на общую аппаратную платформу, ОС и приложения виртуальных машин изолированы друг от друга. 

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

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

Контейнеры

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

Виртуальный ЦОД

Виртуальный ЦОД позволяет на базе набора виртуальных ресурсов собрать ИТ-инфраструктуру требуемой производительности. С помощью услуги облачного ЦОД заказчик может самостоятельно изменять объем предоставляемых ресурсов и настраивать их под определённую задачу. Виртуальный ЦОД может выступать полноценной заменой собственной ИТ-инфраструктуры, что экономит время и деньги заказчика.

Зачем компании арендуют виртуальную инфраструктуру

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

Компании переносят свои критичные информационные системы в виртуальную среду, чтобы решить следующие задачи:

  • Масштабирование собственной инфраструктуры за счет облачных ресурсов.
  • Размещение в облаке выделенных критичных информационных систем или отдельных приложений.
  • Развёртывание в облаке общедоступных сервисов, чтобы организовать возможность взаимодействия с клиентами или партнерами.
  • Создание резервной площадки.

Виртуальная инфраструктура в облаке выбирается исходя из следующих качеств:

  • производительность;
  • надёжность;
  • отказоустойчивость;
  • гибкость;
  • безопасность;
  • SLA;
  • техническая поддержка.

Соответственно, задача облачного провайдера — обеспечить эти качества, используя самые современные из доступных на рынке технологий, в том числе с применением производительных вычислительных платформ и программного обеспечения.

Смогут ли контейнеры вытеснить классическую виртуализацию

Некоторые технические эксперты прогнозируют в ближайшее время полное вытеснение контейнерами виртуальных машин. Насколько такие утверждения обоснованы для корпоративных клиентов?

Работа с контейнерами позволяет использовать больше клиентских модулей, взаимодействующих с программными объектами, которые вынесены в виртуальную среду, чем вариант с виртуальными машинами. Это возможно благодаря тому, что оперативной памятью управляет базовая ОС, память не резервируется жёстко. В случае с виртуальной машиной тоже можно динамически распределять ресурсы памяти, но не так гибко, как с контейнерами.

Также использование контейнеров существенно сокращает время загрузки или перехода в активный режим: оно исчисляется секундами, а в случае виртуальных машин — минутами.

Контейнеризация упрощает настройку конфигурации: в какой среде велась разработка приложения, точно в такой же оно может дальше работать в продуктиве. Ещё одним преимуществом контейнеров является возможность отслеживания версионности приложения: в специальный раздел помещаются образы новых версий, и в случае проблемы можно легко вернуться к рабочему релизу. 

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

На текущий момент самая распространенная платформа контейнеризации — Docker. Сервис мониторинга Datalog собрал статистику, согласно которой на Docker чаще всего запускают RabbitMQ, nginx, Elasticsearch, PostgreSQL, Registry, MySQL, etcd, Fluentd, MongoDB и Redis.

Но кроме преимуществ, у контейнеров есть и серьезные недостатки, из-за которых корпоративные заказчики выбирают и ещё долго будут выбирать виртуализацию по модели IaaS.

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

Вторая серьезная проблема — это безопасность. Если пользователь контейнера или само приложение обладает правами суперпользователя, то операционная система, на которой он размещён, может быть взломана. Приложения в контейнере, загруженные из интернета, могут содержать вирусы или трояны.

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

Четвертая проблема — совместимости: большинство контейнеров сделаны на Linux, поэтому запуск их в ОС Windows может быть очень сложным процессом.

Заключение

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

Так как стандартные контейнеры используют общее для всех изолированных окружений ядро Linux, в котором существует разграничение прав доступа к ресурсам на уровне механизмов ядра (cgroups и namespaces), уязвимость в нём может скомпрометировать всю изоляцию приложений.

Говорить о скорой замене виртуальных машин на контейнеры преждевременно. IaaS всё ещё является одним из важных элементов ИТ-инфраструктуры компаний. Со временем системы виртуализации будут видоизменяться и принимать новые формы, которые облачные провайдеры включат в список своих услуг и будут предлагать корпоративным заказчикам с теми же качествами надёжности, производительности и экономической эффективности.

подписка на главные новости 
недели != спам
# ит-новости
# анонсы событий
# вакансии
Обсуждение