Проект OpenStack возник в 2010 году по инициативе хостинг-провайдера Rackspace Hosting и НАСА, решивших распространять по модели Open Source коды объектного хранилища Rackspace Cloud Files и созданной в центре NASA Ames Research системы управления гипервизорами Nebula. Спустя два года права на код и торговую марку OpenStack были переданы фонду OpenStack Foundation, а сегодня в экосистему проекта вошло более 180 компаний и 75 рабочих групп по всему миру, которые ведут множество взаимосвязанных технологических проектов с открытым исходным кодом, направленных на создание платформы для построения облачной инфраструктуры, не принадлежащей какой-либо одной компании.

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

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

Выходом из этой ситуации кажутся гибридные облака, объединяющие «лучшее из двух миров», когда в частном корпоративном облаке работают бизнес-критичные приложения и хранятся конфиденциальные данные, а в публичном (на площадке внешнего провайдера) — стандартные и второстепенные приложения, объем которых в общем случае может достигать 80% всего ИТ-хозяйства предприятия. Однако получению преимуществ от гибридной модели мешает сложность повторного развертывания облачной инфраструктуры на другой платформе другого поставщика, что делает актуальной задачу создания унифицированной и открытой операционной системы для облака, позволяющей предприятиям безболезненно перейти на облачную модель. Ориентация на открытые стандарты и модель Open Source, позволяющие использовать оборудование и программное обеспечение разных производителей, создали проекту OpenStack необходимые предпосылки для того, чтобы стать такой ОС, однако этого еще недостаточно — требуется развитая экосистема вокруг проекта, в которой будет заинтересовано большинство ведущих игроков.

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

Первой решающий вклад в разработку кода OpenStack внесла, как уже было сказано, компания Rackspace, зарабатывающая на предоставлении инфраструктуры в виде сервиса. За ней идут Red Hat, которая занимается продажами, внедрением и поддержкой решений OpenStack, HP и IBM, предоставляющие облачные услуги на базе OpenStack. Примечательно, что вклад «свободных художников» — программистов-энтузиастов достаточно скромен, и хотя ситуация меняется, очевидно, что без поддержки гигантов ИТ-индустрии, которые стремятся сделать на основе OpenStack собственные облачные решения для корпоративного сектора, проект вряд ли набрал бы критическую массу, притягивающую сегодня других игроков. Например, к нему примкнули: компания NEC, преследующая цели поддержки своего оборудования, работающего с OpenStack; VMware, защищающая свой бизнес путем реализации совместимости OpenStack с ESXi; Dell, которая по соглашению с Red Hat продает свое оборудование вместе с инсталлированным дистрибутивом OpenStack и предоставляет своим клиентам техническую поддержку. Практически все ведущие ИТ-компании, за исключением Microsoft, объявили о поддержке OpenStack и наряду с коммерческим продуктом выпускают бесплатную версию этой облачной ОС, вполне позволяющую построить полноценное облако.

OpenStack устраивает большинство игроков рынка и конкурирует лишь с коммерческими облачными платформами типа VMware vRealizeAC и MS Azure, но при этом мирно сосуществует с гипервизорами и платформами виртуализации VMware vSphere, MS Hyper-V, KVM, Xen и Oracle VM, работает с аппаратными и программными системами хранения от EMC, NetApp, HP, IBM, HDS, RedHat, предоставляя средства интеграции с F5 Big-IP, Cisco Nexus, Citrix Netscaler, а также предсказуемо «дружит» с программно-конфигурируемыми платформами [2, 3]. Получается, что сервис-провайдер может теперь реализовать в своем ЦОД любое облачное решение, не зависящее от конкретной инфраструктуры и обеспечивающее выполнение различных задач своих заказчиков.

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

Архитектура

Платформа OpenStack состоит из взаимосвязанных компонентов, создаваемых в рамках отдельных проектов (см. рисунок): Nova — контроллер управления гипервизорами; Glance — библиотека образов виртуальных машин, используемых Nova; Keystone — сервис идентификации сервисов и пользователей; Swift — распределенное хранилище неструктурированных объектов; Cinder — хранение данных в виде блоков; Trove — интерфейс к реляционным и нереляционным базам данных; Neutron — сервисы управления сетевой инфраструктурой; Heat — оркестровка облачных ресурсов, необходимых для выполнения приложений; Ceilometer — счетчик расходования ресурсов и услуг; Horizon — веб-интерфейс к сервисам OpenStack; Dashboard — веб-консоль управления инфраструктрой OpenStack. Типичная реализация OpenStack содержит большинство или все компоненты этого стека, в котором три элемента архитектуры взаимодействуют со всеми остальными компонентами. Этими тремя элементами являются: графический интерфейс пользователя Horizon, позволяющий управлять всеми компонентами, модуль идентификации Keystone и Neutron, конфигурирующий сети и объединяющий компоненты.

Модули OpenStack
Модули OpenStack

 

Центральный элемент OpenStack — Nova, он осуществляет оркестровку рабочих нагрузок, оперируя экземплярами виртуальных машин, которым обычно требуется хранилище — блочное (вызывается Cinder) либо объектное (Swift). В процессе работы Nova потребуется образ машины для запуска ее экземпляра — за это отвечает Glance. В целом архитектура OpenStack предполагает независимость каждого проекта развития определенного компонента, что позволяет пользователям развертывать лишь необходимое подмножество функциональности, интегрируя дополнительные системы и технологии. Тем не менее для построения полнофункционального облака, скорее всего, потребуется весь набор компонентов.

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

 

Примеры использования OpenStack

Сегодня OpenStack чаще всего рассматривается в качестве платформы для разработки и тестирования новых приложений, а также развертывания облачных, мобильных и веб-приложений, получающих все необходимые для работы ресурсы (см. рисунок). Быстрота и невысокая стоимость развертывания облачной инфраструктуры дает возможность, например, на основе Red Hat Enterprise Linux OpenStack Platform создавать частные облака для тестирования новых конфигураций и выполнения пилотных проектов, предъявляющих специфические требования к инфраструктуре и программному обеспечению.

Инфраструктура развертывания приложений средствами OpenStack
Инфраструктура развертывания приложений средствами OpenStack

 

Свои решения предлагают и коммерческие компании. Например, HP представила облачную платформу Helion OpenStack для крупных предприятий и сервис-провайдеров, отдающих предпочтение фирменным дистрибутивам, которые более удобны в развертывании и сопровождении, содержат дополнительные утилиты для инсталляции и конфигурирования облака, не говоря уже о том, что их код более стабилен, чем полученный из недр сообщества OpenStack.

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

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

 

Детские болезни

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

Не решены все проблемы перехода на новые версии OpenStack, имеются сложности с интеграцией унаследованного оборудования — до сих пор, например, в проекте мало внимания уделяется ведению списков совместимости (Hardware Compatibility Lists и Software Compatibility Lists). Определенные трудности вызывает организация измерения нагрузки на инфраструктуру — не удается осуществлять «умный» мониторинг состояния построенного облака.

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

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

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

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

Не следует забывать, что функционирование OpenStack Foundation имеет свои особенности (например, участники сообщества, несомненно, получают удовольствие от своей работы, но при этом занимаются разработкой не из спортивного интереса), без учета которых успехи в применении предлагаемых технологий будут весьма скромными. В этой связи всем заинтересованным компаниям и организациям следует ответить на такие вопросы: будет ли компания более продуктивной, если возьмет на вооружение опыт сообщества OpenStack? Как коммерческим организациям наладить связи с сообществом для получения экспертизы и доступа к коллективному знанию? Как повлиять на направления работ, проводимых сообществом? Наконец, надо учитывать, что проект развертывания облака — это достаточно серьезное мероприятие для любой крупной организации, и для гарантированного получения всех преимуществ от OpenStack требуется наличие команды из специалистов всех уровней, начиная от топ-менеджеров и архитекторов до группы сопровождения и разработки.

Что делать

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

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

***

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

Литература

  1. Марк Ривкин. Облачные иллюзии // Открытые системы.СУБД. — 2014. — № 7. — С.23–25. URL: http://www.osp.ru/os/2014/07/13042914 (дата обращения: 29.05.2015).
  2. Наталья Дубова. Программный дуализм // Открытые системы.СУБД. — 2014. — № 6. — С.14–16. URL: http://www.osp.ru/os/2014/06/13042309 (дата обращения: 28.05.2015).
  3. Дмитрий Хороших. OpenStack и модель групповых политик // Открытые системы.СУБД. — 2015. — № 1. — С.18–19. URL: http://www.osp.ru/os/2015/01/13045319 (дата обращения: 31.05.2015).

Дмитрий Волков (vlk@keldysh.ru) — сотрудник ИПМ им. М. В. Келдыша РАН, главный редактор, «Открытые системы.СУБД», Лев Левин (osmag@osp.ru) — независимый автор (Москва).