Все согласны с тем, что контейнерные технологии и микросервисы будут трансформировать корпоративные ИТ. Но когда и в какой степени осуществится эта трансформация, во многом остается предметом догадок.

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

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

Разработчики приложений во многих смыслах видят в контейнерах дар небес. Начать с того, что создание и обновление приложений упрощается благодаря возможности заменять элементы контейнера Docker. Далее, различные функции внутри приложения можно делать более гранулярными посредством архитектуры микросервисов, использование которой упрощает реализацию запросов конкретных частей гранулярного кода к любому числу бэкэнд-сервисов при помощи API-интерфейсов, базирующихся на REST (Representational State Transfer).

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

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

Хотя Docker и другие виды контейнеров широко используются для разработки приложений, работающих в облаке, степень внедрения таких приложений в продуктивные среды пока еще малозаметна. По словам Клиффа Гросснера, старшего директора по исследованиям фирмы IHS, контейнеры сегодня работают только на 1% серверов. Через пару лет эта цифра, по его прогнозу, вырастет до 3%.

Данные других опросов говорят о том, что внедрение Docker в продуктивные среды происходит гораздо активнее. Есть примеры из практики: если ИТ-организация заинтересовывается контейнерами, их использование обычно быстро расширяется.

Механизм реализации многих проектов разработки приложений

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

Как и многие ИТ-организации, осваивающие контейнеры, Корнельский университет не имеет особых правил относительно их применения. В ряде случаев они работают на обычных серверах как альтернатива виртуальным машинам. В других случаях — поверх виртуальной машины или в PaaS-среде («платформа как сервис»), которая может функционировать внутри или вне облака.

Что касается контейнеров в облаке, то университет в основном этим пользуется в Amazon Web Services (AWS). Однако, говорит Бауэр, его организация понемногу начинает развертывать контейнеры и в облаке Microsoft Azure.

Он добавляет, что пока в университете не видят нужды в стандартизации одного из возможных механизмов оркестровки контейнеров. Тремя главными платформами оркестровки контейнеров сегодня являются Open Source-проект Kubernetes (использует код, первоначально разработанный Google), Docker Engine, созданную фирмой Docker и Open Source-проект Mesos, инициированный компанией Mesosphere. По словам Бауэра, университет позволяет разным DevOps-группам самим для себя выбирать платформу оркестровки контейнеров.

В число других организаций, активно использующих контейнеры Docker, входят ADP, Capitol One, GE и Goldman Sachs. Во всех случаях внедрение технологии контейнеров быстро распространяется по многим бизнес-подразделениям и филиалам.

Работа над технологией контейнеров продолжается

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

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

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

Наконец, ИТ-организации должны знать, что контейнеры Docker для платформ Linux и Windows не обладают переносимостью. Microsoft ввела в употребление контейнеры Docker в Windows Server 2016. Но внутренние различия в системных вызовах между Windows Server и Linux делают невозможным перенос контейнера Docker с одной платформы на другую.

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

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

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