Спустя почти год с момента начала тестирования PaaS-платформы OpenShift компания Red Hat анонсировала полное открытие связанных с данной платформы исходных текстов и инициировании открытого варианта платформы - OpenShift Origin. Код не был открыт сразу после начала тестирования, так как платформа базируется на стороннем продукте, полученном после поглощения фирмы Makara, что потребовало дополнительного времени на согласование юридических вопросов. Кроме того, компания Red Hat хотела вначале довести код до готового к промышленной эксплуатации состояния, и открыть код уже полнофункционального и отлаженного продукта. Код открыт под лицензией Apache и размещён на GitHub.
Примечательно, что OpenShift Origin позиционируется как полностью открытый проект, не только в смысле открытости кода, но и открытости процесса разработки. Любой желающий может присоединиться к разработке и предоставить свою порцию улучшений в кодовую базу OpenShift. Red Hat выступает лишь спонсором, предоставляя необходимые ресурсы, но участвуя в разработке наравне с другими представителями сообщества в соответствии с принципами меритократии, при которых решения принимают представители сообщества, вносящие наибольший вклад в развитие проекта. Коммерческий PaaS-сервис Red Hat будет строиться непосредственно на открытой кодовой базе OpenShift Origin, без сокрытия кода дополнительной функциональности, все развиваемые в рамках коммерческого сервиса наработки будут сразу возвращаться в основной открытый проект.
Подобный подход к разработке позволит гарантировать отсутствие привязки к определённому вендору и избежать контроля разработки со стороны одного производителя. В сочетании с либеральной лицензией Apache данные обстоятельства делают проект привлекательным для участия в его развитии различных производителей. В этом плане OpenShift напоминает проект OpenStack. Поясняя связь между OpenShift и OpenStack компания Red Hat указывает то, что данные проекты взимно дополняют друг друга, развиваясь при этом отдельно и нацеливаясь на разные сегменты облачных систем (IaaS - инфраструктура как сервис и PaaS - платформа как сервис. IaaS работает на уровне обеспечения запуска операционной системы, а PaaS предоставляет сервис на уровне выполнения отдельных приложений). OpenShift Origin не является частью OpenStack, но может работать поверх инфраструктуры поддерживаемой OpenStack, примерно, как Apache и MySQL не являются частью Linux, но могут работать в составе дистрибутивов Linux.
Для упрощения знакомства с платформой подготовлен образ LiveCD с преднастроенным окружением OpenShift, поддерживающий работу в VirtualBox. Используя OpenShift Origin можно легко развернуть PaaS-инфраструктуру, как на ноутбуке разработчика, так и в дата-центре предприятия. Использование OpenShift на локальных системах разработчиков позволят упростить отладку и тестирование развёртывания приложений для PaaS-систем, а также проведения адаптации своих фреймворков для PaaS. Создание локальной PaaS-инфраструктуры предприятия даёт возможность избавиться от зависимости от внешних сервисов и сохранить полный контроль над своими данными, обеспечив их полную изоляцию от внешнего мира.
OpenShift предоставляет разработчикам возможность запуска приложений, написанных на языках Java, Python, PHP, Perl, JavaScript и Ruby, с использованием фреймворков JBoss, Spring, Node.js, Seam, Weld, CDI, Rails, Rack, Symfony, Zend Framework, Twisted, Django и Java EE. Из баз данных поддерживаются MySQL, EnterpriseDB (PostgreSQL), SQLite, Couchbase, MongoDB, Membase и Memcache. Для управления доступны как интерфейс командной строки, так и наглядный web-интерфейс. Доступны средства для создания собственных плагинов, расширяющих возможнолсти OpenShift и позволяющих использовать новые фреймворки. PaaS-платформа, в отличие от IaaS, избавляет разработчика от необходимости обслуживания ОС и системных компонентов, таких как СУБД, языки программирования, программные фреймворки и т.п. В PaaS от пользователя требуется только загрузка приложения, которое будет запущено в готовом окружении, предоставляемом платформой.
Архитектура OpenShift Origin состоит из нескольких независимых компонентов, позволяющий создавать, проводить развёртывание и управлять приложениями в облачной PaaS-инфраструктуре. В том числе предоставляются средства для выделения приложениям дискового пространства, ресурсов CPU, памяти, доступа к сети, а также серверам Apache или JBoss. В зависимости от типа размещаемого в PaaS приложения предлагается набор шаблонов состава файловой системы окружения (например, для php, python, perl).
В состав платформы входят:
- Брокер (Broker) - центральный сервис, предоставляющий REST API для пользователей и координирующий работу узлов с контейнерами приложений. Отвечает за выполнение всех действий, связанных с управлением приложениями, в том числе управление логинами, DNS, контролем за состоянием приложений и размещением приложений;
- Картриджи с реализацией функциональности, необходимой для запуска определённых типов приложений пользователя. Например, картриджи для языков программирования, СУБД, фреймворков и т.п. Из картриджей необходимой функциональности формируются Gear-окружения, в которых непосредственно выполняются приложения (например, Gear может состоять из картриджей PHP и MySQL). В свою очередь, несколько Gear-окружений для совместного использования ресурсов могут запускаться на одной виртуальной машине или физическом хосте, которые в терминологии OpenShift именуются узлом;
- Система обмена сообщениями (Messaging System) - обеспечивает связь между StickShift и каждым узлом;
- Система аутентификации пользователей - подключаемый компонент для обеспечения аутентификации. По умолчанию для хранения параметров аутентификации используется MongoDB;
- Управления доменными именами (Domain Name Management) - сервис регистрации и управления DNS, выполненный на базе сервиса BIND;
- Клиент управления через командную строку (rhc) - позволяет подключиться к OpenShift через REST API;
- Git-репозиторий - код выполняемого в PaaS-приложения помещается в отдельный Git-репозиторий, для помещения проекта в PaaS-окружение или для внесения изменений достаточно выполнить "git push".