С появлением IBM PureSystems — комплексного семейства облачных систем корпоративного уровня, в которое входят приложения, услуги, оборудование и даже опыт (предоставляемый в практических моделях), - облачные вычисления достигли новых высот. Один из способов подготовить приложение к использованию с IBM PureSystems ― создать плагин, наводящий мост между пакетом приложения и системой.
В этом цикле из двух статей авторы рассматривают вопросы проектирования, усилия, требуемые для разработки, и уроки, извлеченные из проекта. Первая часть посвящена процессу разработки, позволяющему коммерческому программному приложению SugarCRM работать на платформе IBM PureSystems. SugarCRM ― это PHP-приложение, которому требуется набор LAMP (Linux®, Apache, MySQL, PHP). IBM PureSystems не поддерживает LAMP, поэтому группа разработала новый типовой образ и набор подключаемых модулей (плагинов), который поддерживает моделирование, развертывание и эксплуатацию приложения поверх базового образа Linux и IBM AIX. Вторая часть посвящена урокам, извлеченным из этого проекта.
IBM PureSystems управляет всем жизненным циклом приложения. Мы начали с глубокого изучения SugarCRM: консультировались с экспертами по IBM PureSystems, провели семинар с разработчиком и поэкспериментировали с приложением. Нам также пришлось рассмотреть вопросы лицензирования, потому что в проекте задействовано ПО с открытым исходным кодом и коммерческое ПО. В число поддерживаемых баз данных включили MySQL и IBM DB2®, которая имеет стратегическое значение для IBM. Видение всей картины позволило нам предложить архитектуру плагинов и определить, как IBM PureSystems будет поддерживать каждый цикл SugarCRM.
При моделировании приложений плагины позволяют перетаскивать значок SugarCRM и соединять его со значком базы данных, в качестве которой может служить MySQL или DB2. MySQL моделируется как существующий сервер, а DB2 может быть как новым сервером, так и существующим.
Когда пользователь развертывает модель приложения SugarCRM в облаке, сценарии плагинов автоматизируют процесс установки и настройки всего промежуточного ПО и приложений. Эти сценарии взаимодействуют с IBM PureSystems, получая сведения о процессе развертывания и передавая информацию о состоянии.
После развертывания приложения плагины позволяют пользователю запускать и останавливать службу Apache, а также просматривать журналы событий SugarCRM.
Этот проект принес нам ценный опыт и понимание не только процесса разработки плагина, но и хода рассуждений при включении приложения в облако. В процессе разработки мы регулярно консультировались с группой разработки плагинов IBM PureSystems и делились с ней впечатлениями о Plug-in Development Kit (PDK). Некоторые из наших отзывов привели к новым разработкам и рекомендациям. Мы консультировались и с группой разработки программных продуктов, чтобы гарантировать соответствие своего проекта стратегическому направлению IBM.
SugarCRM – это компания, производящая программные решения для управления взаимоотношениями с клиентами. Решения SugarCRM обладают преимуществами интуитивно понятного опыта пользователей и очень гибкой платформы ПО с открытым исходным кодом. Решение имеет четыре редакции и может быть развернуто на территории заказчика, на серверах компании или в облаке.
Решение SugarCRM ― это PHP-приложение, которому для работы обычно требуется набор LAMP (Linux, Apache, MySQL, PHP). Для повышения производительности используется дополнительное программное обеспечение, такое как Alternative PHP Cache (APC), а для масштабирования ― memcache.
В рамках первоначальной установки IBM PureSystems поддержка LAMP не предусмотрена. Облачная группа специально разработала поддержку, необходимую для запуска SugarCRM на IBM PureSystems.
Первым шагом было согласование бизнес-целей и технических решений. Мы определили следующие бизнес-сценарии для поддержки всего цикла работ заказчика IBM PureSystems, желающего использовать приложение SugarCRM, ― от инициализации до запуска приложения:
- инициализация SugarCRM и программного обеспечения с открытым исходным кодом в IBM PureSystems;
- моделирование и настройка приложений SugarCRM;
- развертывание и выполнение приложения SugarCRM в облаке IBM PureSystems;
- управление жизненным циклом действующих экземпляров SugarCRM;
- поддержка в качестве хранилища двух баз данных: MySQL и DB2.
Определение архитектуры плагина
Для определения архитектуры плагина рассмотрим типичные топологии SugarCRM, соображения структуры и вопросы лицензирования, которые могут повлиять на разработку технологии.
Набор программного обеспечения, рекомендованный поставщиком для серверов System x и System p, приведен в таблице 1.
Таблица 1. Предполагаемый набор программного обеспечения для SugarCRM
| System x | System p |
|---|---|
| Red Hat Enterprise Linux 5 | AIX 7.1 |
| Apache 2.2 | Apache 2.2 |
| PHP 5.3 c необходимыми расширениями | PHP 5.3 c необходимыми расширениями |
| APC 3.1 | APC 3.1 |
| MySQL 5.1 | DB2 9.7 |
Группа SugarCRM указала, что типичная топология состоит из одного сервера Apache, подключенного к серверу базы данных, как показано на рисунке 1.
Рисунок 1. Односерверная топология
Реже используется кластерная технология, которая позволяет обслужить большое число пользователей путем наращивания количества серверов Apache, как показано на рисунке 2.
Рисунок 2. Кластерная топология
В этом случае SugarCRM использует memcache в качестве менеджера сеансов и nginx в качестве подсистемы выравнивания нагрузки. Поскольку приложение записывает данные в локальный каталог, где Apache размещает файлы и данные PHP, несколько серверов Apache должны разделять общий локальный каталог; это делается путем размещения каталога на сервере NFS. Общая файловая система также помогает при переходе на новую версию SugarCRM, позволяя обновлять все серверы одновременно.
Ключевая концепция IBM PureSystems ― предоставить пользователю проблемно-ориентированное представление облака, чтобы он мог сосредоточиться на приложении, не думая о базовой инфраструктуре. IBM PureSystems управляет тремя аспектами работы приложения: моделированием, развертыванием и эксплуатацией. Эти три аспекта могут охватывать огромное количество сценариев. Ниже перечислены соображения, которые мы учитывали при выборе.
- IBM PureSystems может поддерживать кластерную топологию SugarCRM, используя политику масштабирования, однако масштабы нашего проекта ограничиваются топологией с одним сервером.
- В типичных установках чаще используется база данных MySQL, но мы хотим сосредоточиться на DB2, в то же время поддерживая и MySQL. Поэтому DB2 пользователь может оформить как новый или существующий экземпляр, а MySQL поддерживается только как существующий экземпляр.
- Общепринятой платформой Web-сервера с открытым исходным кодом служит стек программного обеспечения Apache/PHP; и новый набор подключаемых модулей, поддерживающий этот стек, можно будет использовать в других проектах. Сначала мы хотели оформить этот стек как самостоятельный компонент, а SugarCRM ― как отдельный связанный с ним компонент, что позволило бы нам быстро добавлять поддержку новых PHP-приложений. Но такая модель приложения не вполне вписывается в проблемно-ориентированный подход, потому что вынуждает пользователя заниматься инфраструктурной частью стека ПО, поэтому мы решили оформить приложение SugarCRM и весь стек программной поддержки как единый компонент.
- Конфигурация SugarCRM относительно проста и включает в себя лишь небольшой набор параметров. Мы выбрали подмножество параметров, которые будут представлены в компоненте SugarCRM.
- Гораздо важнее полный набор параметров для настройки базы данных: мы представили только те параметры, которые относятся к SugarCRM, а для остальных оставили значения по умолчанию. Для DB2 и MySQL набор параметров один и тот же, несмотря на то, что они принадлежат к различным компонентам.
Обычно вопросы лицензирования не сильно влияют на технологический проект, но так как некоторые задачи могут потребовать использования ПО не от IBM, нужно правильно управлять лицензиями на это ПО и ПО промежуточного уровня. Мы остановились на следующем подходе.
- Включить программное обеспечение в состав плагинов. Двоичные файлы или исходный код включены в zip-файл плагина и становятся доступными для использования, когда типовой образ и плагин включаются на консоли администратора IBM PureSystems. В процессе включения типового образа администратор облака рассматривает и принимает лицензионные соглашения ПО. Подход скомпонованного ПО делает его тесно интегрированным с процессами разработки и инициализации плагина.
- Возложить на администратора облака обязанность предоставлять двоичные файлы или исходный код во время инициализации плагина. Плагины импортируются в IBM PureSystems вместе с пакетом типового образа и остаются там в «отключенном» состоянии. Администратор облака собирает необходимое ПО, выполняет типовые процедуры лицензирования и применяет опцию configure консоли администратора IBM PureSystems к отдельным плагинам. В результате плагин включается, и файлы сохраняются в хранилище IBM PureSystems. В этом случае процесс управления лицензионными соглашениями программного обеспечения выполняется вне среды IBM PureSystems.
- Встроить двоичные файлы или исходный код ПО в базовый образ операционной системы. Лицензионные соглашения должны приниматься администратором облака при добавлении виртуальной машины в каталог IBM PureSystems. Поскольку один и тот же базовый образ операционной системы используется несколькими типовыми образами и плагинами, этот подход лучше работает с программным обеспечением, универсальным для всего домена IBM PureSystems, чем со специальным ПО плагина.
Приложение SugarCRM зависит от некоторых программных пакетов сторонних производителей и ПО с открытым исходным кодом, поэтому мы решили просто включить файлы SugarCRM в свои плагины, а задачу добавления двоичных файлов и исходного кода дополнительного ПО, как от IBM, так и открытого, возложить на администратора облака во время инициализации плагинов.
Порядок следующих подразделов примерно соответствует последовательности наших процессов разработки и реализации плагинов SugarCRM.
Ключевым решением по проекту является определение ролей и обязанностей плагинов. Мы рассмотрели главным образом два подхода.
- Первый заключается в разработке набора универсальных плагинов для поддержки Apache, PHP и подключения базы данных с применением SugarCRM в качестве источника входных данных для этих плагинов. Это более гибкий подход, позволяющий разработать решение и предложить истинно универсальные возможности PHP, которые можно стандартным способом распространять на другие PHP-приложения.
- Второй подход заключается в разработке и реализации специализированных PHP- и БД-плагинов для SugarCRM, полностью обеспечивающих функционирование приложений SugarCRM. Проблемно-ориентированный проект хорошо сочетается с концепцией виртуального приложения и упрощает распределение собственности и ответственности за плагины между всеми заинтересованными сторонами.
Учитывая весьма динамичный характер PHP-конфигурации, мы выбрали проблемно-ориентированный подход (то есть специализированную разработку для SugarCRM) как решение с немедленным внедрением; мы решили вернуться к более универсальному и многоразовому подходу с реализацией модулярного кода позднее. Три наши плагина, основанные на принципах взаимодействия плагинов IBM PureSystems, изложенных в руководстве Plug-in Development Guide, выполняют следующие функции.
- Плагин SugarCRM
- Определение и сбор данных от пользователя для установки SugarCRM
- Установка необходимых пакетов операционной системы
- Установка и настройка требуемого программного обеспечения, включая Apache, PHP и APC
- Копирование и подготовка пакета SugarCRM Enterprise
- Обеспечение мониторинга журналов событий SugarCRM
- Поддержка основных операций времени выполнения
- Плагин связи с DB2
- Определение и сбор данных от пользователя для существующего экземпляра DB2
- Поддержка нового экземпляра DB2 в одном и том же образе приложения с SugarCRM
- Установка и настройка требуемого программного обеспечения, включая клиент сервера данных IBM и PHP-расширение IBM DB2
- Перенастройка PHP для работы с DB2
- Установка и настройка SugarCRM Enterprise с DB2 в качестве серверной базы данных
- Плагин связи с MySQL
- Определение и сбор данных от пользователя для существующего экземпляра MySQL
- Установка и настройка требуемого программного обеспечения, включая клиентские пакеты MySQL
- Перенастройка PHP для работы с MySQL
- Установка и настройка SugarCRM Enterprise с MySQL в качестве серверной базы данных
Так как Apache и PHP – это ПО с открытым исходным кодом, нам нужно было принять еще одно важное решение: включать ли в пакет двоичные файлы ПО сторонних разработчиков, или собирать необходимое ПО динамически? Мы решили для большей гибкости и расширяемости собирать пакет из исходных кодов, предоставляемых пользователем.
Исходя из проектных решений и соображений лицензирования, мы выбрали упаковку решения для поддержки SugarCRM в несколько файлов, которые используются для обеспечения бизнес-сценариев в IBM PureSystems.
Основной файл плагина ― это пакет типового образа, состоящий из определения типового образа и четырех плагинов. Он содержит код Java™, конфигурацию JSON, Python и сценарии оболочки, разработанные для поддержки моделирования, развертывания и эксплуатации приложения SugarCRM. Имя файла: sugarcrm-1.0.0.0.tgz.
Таблица 2. Состав пакета типового образа SugarCRM
| Имя файла | Подкаталог в TGZ | Описание |
|---|---|---|
| sugarcrm-1.0.0.0.tgz | Определение типового образа SugarCRM для версии 1.0.0.0 | |
| sugarcrm-1.0.0.2.tgz | плагины | Плагин SugarCRM, поддерживающий Apache, PHP, APC и SugarCRM Enterprise Edition v6.4.0 |
| sugarcrmdb2-1.0.0.2.tgz | плагины | Плагин связи SugarCRM с DB2, поддерживающий подключение SugarCRM к DB2 |
| sugarcrmmysql-1.0.0.2.tgz | плагины | Плагин связи SugarCRM с DB2, поддерживающий подключение SugarCRM к MySQL |
| sugarcrm-samples-1.0.0.2.tgz | плагины | Пример плагина SugarCRM содержит образец моделей и шаблонов приложения |
Зайдите на сайт SugarCRM, чтобы загрузить эти упакованные файлы решений.
Другие файлы поддержки плагинов содержат бесплатные продукты и исходные коды сторонних производителей. Администраторы облака могут создать свои собственные или загрузить готовые пакеты, а затем настроить отдельные плагины в пользовательском интерфейсе IBM PureSystems. Так как одна из первых платформ, поддерживаемых в IBM PureSystems, ― это Linux, далее подробно описаны файлы поддержки для Linux.
Таблица 3. Состав пакета поддержки плагина SugarCRM (SugarLinux.tgz)
| Имя файла | Подкаталог в TGZ | Источник | Описание |
|---|---|---|---|
| autoconf-latest.tgz | Linux\SOURCES | http://www.gnu.org/software/autoconf/ | Инструмент, необходимый PHPize для компиляции PHP-расширений |
| httpd-2.2.21.tgz | Linux\SOURCES | http://httpd.apache.org/download.cgi | Пакет исходного кода Apache |
| PHP-5.3.8.tgz | Linux\SOURCES | http://www.PHP.net/ | Пакет исходного кода PHP |
| APC-3.1.9.tgz | Linux\SOURCES | http://pecl.PHP.net/package/APC | Пакет исходного кода APC |
Таблица 4. Состав пакета поддержки плагина связи с DB2 (DB2LinkLinux.tgz)
| Имя файла | Подкаталог в TGZ | Источник | Описание |
|---|---|---|---|
| ibm_data_server_client_linuxx64_v97.tar.gz | Linux\Products | http://www-01.ibm.com/support/docview.wss?rs=4020&uid=swg21385217 | Клиент IBM data server v9.7, используемый для создания расширения db2 |
| ibm_db2-1.9.2.tgz | Linux\SOURCES | http://pecl.PHP.net/package/ibm_db2 | Исходный код PHP-расширения "ibm_db2" |
Таблица 5. Состав пакета плагина поддержки связи с MySQL (MySQLLinkLinux.tgz)
| Имя файла | Подкаталог в TGZ | Источник | Описание |
|---|---|---|---|
| mysql-shared-compat-5.0.92-1.rhel5.x86_64.rpm | Linux\RPMS | http://dev.mysql.com/downloads/mysql/5.0.html#downloads | RPM, необходимый для PHP с опцией MySQL |
| mysql-devel-5.0.77-4.el5_4.2.x86_64.rpm | Linux\RPMS | http://dev.mysql.com/downloads/mysql/5.0.html#downloads | RPM, необходимый для PHP с опцией MySQL |
Использование PDK в качестве отправной точки
Плагин можно оформить как проект Eclipse, чтобы использовать гибкую и мощную платформу разработки. Однако внутренняя организация плагина следует строгому набору правил и соглашений, так что его можно встроить в правильно отформатированные пакеты и обрабатывать с помощью подсистем IBM PureSystems. Мы обнаружили, что необходим инструмент разработки для двух этапов: начала работы и отладки. С этой целью можно загрузить Plug-in Development Kit (PDK), который присутствует на главной странице IBM PureSystems в виде ZIP-файла.
PDK помогает начать работу, предоставляя образец, состоящий из двух плагинов компонентов и одного плагина связи. Мы использовали эти образцы в качестве учебного примера, а также отправной точки для разработки собственных плагинов. В процессе разработки бывает трудно учесть все неявные правила и соглашения, и в результате во время выполнения часто возникают самые неожиданные ошибки, что затрудняет отладку. В случае нарушения этих правил такие ошибки, скорее всего, будут обнаружены на этапе сборки.
PDK также помогает в процессе отладки благодаря наличию отладочного модуля. Этот компонент можно перетащить в любой образ виртуального приложения. Она предоставляет два способа отладки.
- Пользователь может развернуть шаблон без фактической установки виртуальных машин в облаке, чтобы проверить артефакт топологии. Это полезно на начальной стадии разработки, когда код еще не функционирует, и пользователь может избежать длительного цикла развертывания ВM.
- Когда образ развернут в облаке, файлы, используемые при активации, сохраняются в ВM, так что пользователь может войти и отладить их. Это полезно на последнем этапе разработки для отладки оболочки и Python-сценариев.
Типовой образ — это набор плагинов, определяющий конкретное решение и топологию. В среде разработки типовой образ представляет собой проект. Разработчик может определить имя, версию, описание и лицензионные соглашения в файле patterntype.json и использовать предоставленный PDK сценарий сборки для создания файлов пакета типового образа.
Мы упаковали в файл типового образа SugarCRM три функциональных плагина и плагин с образцами. Администратор облака просто импортирует типовой образ, включает его и использует для активизации функциональных плагинов файлы TGZ, описанные в разделе Упаковка решения. Когда включен типовой образ, включен и плагин с образцами, поскольку он не требует никакой настройки.
Компоненты, связи, политики и входные параметры пользователя, относящиеся к плагинуу, смоделированы в файле appmodel/metadata.json. На основе смоделированных решений, описанных в разделе Вопросы проектирования, мы сделали плагин SugarCRM только компонентным, а плагины базы данных ― поддерживающими как компоненты, так и связи.
- Атрибут
idкомпонента или связи должен быть уникальным и используется в качестве имени компонента в процессе преобразования. - Атрибут
typeопределяет компонент, связь или политику. - Могут быть указаны и графические аспекты компонента, такие как
imageиthumbnail.
Декларативный подход позволяет создателю приложения IBM PureSystems взаимодействовать со всеми плагинами, собирать входные данные от пользователей и сохранять модель приложения в хранилище в виде документа JSON.
Следующий фрагмент JSON показывает, как мы определили компонент и связь в одном и том же файле metadata.json.
{
"id":"xDB2",
"type":"component",
"thumbnail" : "appmodel/images/thumbnail/existing_DB2_thumb.png",
"image" : "appmodel/images/existing_DB2.png"
}
{
"id":"SugarCRMDB2",
"type":"link",
"source":[
"SugarCRM"
],
"target":[
"DB2",
"xDB2"
]
}
|
Как показано на рисунке 3, пользователь может выбрать компонент SugarCRM и один из двух поддерживаемых компонентов базы данных, DB2 или MySQL.
Рисунок 3. Палитра компонентов
Пользователь заполняет необходимые параметры для каждого компонента (рисунки 4 и 5) и просто перетаскивает и соединяет два компонента. Компонент DB2 может быть новым или существующим сервером, а компонент MySQL поддерживается только как существующий сервер.
Рисунок 4. Параметры SugarCRM
Рисунок 5. Параметры компонентов базы данных
На рисунке 6 показан пример образа с SugarCRM и существующим сервером DB2. Для удобства читателя в типовой образ SugarCRM включены несколько готовых шаблонов.
Рисунок 6. Пример образа с SugarCRM и DB2
Одной из важных задач разработки плагинов является реализация преобразователей (transformers). Все плагины содержат преобразователи компонентов, связей или политик модели приложения в документ топологии, который можно использовать для развертывания в инфраструктуре IBM PureSystems. Модель приложения и документ топологии представляют собой документы JSON.
Существует два способа реализации преобразователя:
- для простых моделей в состав IBM PureSystems входит класс
TemplateTransform, позволяющий разработчику плагина писать преобразователи в виде JSON-шаблона с использованием Apache Velocity Engine. Таким образом, разработку можно сделать более наглядной с помощью макросов Velocity и JSON; - для более сложных моделей разработчик пишет Java-реализацию, которая расширяет класс
TopologyProviderдля создания более динамичной и гибкой топологии объекта JSON в коде Java.
Мы выбрали для своих плагинов базы данных подход шаблонов, потому что преобразование выполняется относительно легко. Имеются шаблоны как для существующего компонента базы данных, так и для связи. Следующий фрагмент шаблона демонстрирует преобразование параметров для существующей базы данных DB2.
#set( $db_type = $provider.componentName.substring(1) )
{
"name" : "xDB2",
"type" : "xDB2",
"parms" : {
"db_type" : "$db_type",
"db_name" : "$attributes.db_name",
"db_hostname" : "$attributes.db_hostname",
"db_port" : "$attributes.db_port",
"user" : "$attributes.user",
"password" : "$attributes.password",
"service" : "$prefix"
}
}
|
Для преобразования компонента SugarCRM требуется больше функциональности, поэтому мы разработали преобразователь с применением Java-реализации.
Использование шаблонов Velocity или Java-кода декларируется в XML-файлах в каталоге OSGI-INF. Следующий фрагмент XML-файла демонстрирует использование шаблона templates/xdb2_component.vm в качестве преобразователя.
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="xDB2"> <implementation class="com.ibm.maestro.model.transform.template.TemplateTransformer"/> <service> <provide interface="com.ibm.maestro.model.transform.TopologyProvider"/> </service> <property name="component.template" type="String" value="templates/xdb2_component.vm"/> </scr:component> |
Документы компонентов, OSGI-INF/*.xml, должны быть перечислены в файле манифеста META-INF/MANIFEST.MF. В следующем фрагменте файла манифеста показаны два документа компонентов, используемые для плагина связи с DB2.
Service-Component: OSGI-INF/SugarCRMDB2Transform.xml,OSGI-INF/xDB2Transform.xml |
В набор новых плагинов для поддержки SugarCRM входят следующие компоненты.
- Existing DB2: представляет существующий сервер DB2 и выполняет необходимую настройку, такую как инициализация базы данных для SugarCRM.
- Existing MySQL: представляет существующий сервер MySQL и выполняет необходимую настройку, такую как инициализация базы данных для SugarCRM.
- DB2 link: представляет зависимость между компонентами SugarCRM и DB2 и выполняет окончательную настройку, когда оба сервера SugarCRM и DB2 готовы. Это подразумевает передачу IP-адреса сервера DB2 на сервер SugarCRM.
- MySQL link: представляет зависимость между компонентами SugarCRM и DB2 и выполняет окончательную настройку, когда оба сервера SugarCRM и DB2 готовы. Это подразумевает передачу IP-адреса сервера MySQL на сервер SugarCRM.
Для фактической реализации мы организовали код этих плагинов как в следующем проекте Eclipse.
- Компонент SugarCRM ― как отдельный проект.
- Существующий компонент DB2 и связь ― как объединенный проект.
- Существующий компонент MySQL и связь ― как объединенный проект.
В документе Plug-in Development Guide описывается четко определенная структура проекта Eclipse, которая должна соблюдаться при реализации плагина. Внутренняя планировка трех проектов Eclipse, ориентированная на каталог плагинов, в котором находится наш код, показана на рисунках 7 и 8.
Рисунок 7. Реализация плагинов для SugarCRM
Рисунок 8. реализация плагинов для DB2 и MySQL
Файлы, выделенные красным цветом, представляют собой точки входа для IBM PureSystems: они содержат код Python для установки и настройки программного обеспечения. Их имена и местоположение выбраны так, чтобы механизм активации мог извлекать их в процессе развертывания.
Стандартная последовательность такова:
- install.py
- configure.py
- start.py
Остальные сценарии ― это сценарии поддержки, вызываемые из основных сценариев. Двоичные файлы, которые можно упаковать с плагином, находятся в каталоге files и размещаются в отдельных каталогах AIX и Linux. Сценарии также размещаются в отдельных каталогах AIX и Linux.
В некоторых реализациях применяются сценарии с общим исходным кодом; это означает, что они написаны для работы на обеих платформах Linux и AIX. В нашем случае реализация для двух платформ слишком сильно различается, поэтому мы сочли, что их будет проще поддерживать отдельно.
На рисунке 8 показано, как в том и том же плагине организован код компонента и связи.
Для удобства мы добавили плагин образцов с готовыми образами и шаблонами приложений в качестве отдельного проекта Eclipse. Включенные образы помогают конечному пользователю быстро прийти к работоспособному образу, а шаблоны ускоряют процесс развертывания.
На рисунке 9 показано окно развертывания шаблона с простыми полями ввода данных для пользователя.
Рисунок 9. Развертывание приложения SugarCRM с помощью шаблона
Мы использовали функцию экспорта приложений IBM PureSystems для сбора метаданных и поместили распакованные файлы в папку plug-in/applications, как показано на рисунке 10.
Рисунок 10. Структура образцов плагинов
Повторное использование плагинов
Мы хотели бы максимально использовать возможности плагина IBM PureSystems DB2 в том случае, если новый сервер DB2 вместе с узлом SugarCRM развертывается в одном и том же образе приложения. Сотрудничая с группами разработки IBM PureSystems, мы определили и сформулировали две новых функции:
- возможность повторного использования плагинов в новых типовых образах;
- возможность расширения функций плагина и конфигураций базы данных.
Возможность повторного использования плагинов в новых типовых образах
Мы хотим включить новый компонент DB2 во время моделирования приложения и настроить новый сервер DB2 для работы с SugarCRM во время развертывания приложения. При текущих возможностях продукта это невозможно, потому что плагины DB2 определяются и загружаются в IBM PureSystems для работы с известными типовыми образами, такими как dbaas и webapp.
Мы попросили добавить новую функцию, которая позволяла бы создать специальный плагин, указывающий на включение в определение плагина уже существующих типовых образов, и, следовательно, плагинов. Была разработана функция IBM PureSystems links, такая, что в плагинах config.json можно объявить оператор "links", и среда будет использовать подключенные плагины, как если бы они были привязаны посредством объявления вторичного типового образа.
Это оказалось плодотворной и полезной функцией продукта, которая позволяет удобно использовать готовые плагины с любыми типовыми образами.
Расширение возможностей плагинов DB2 и конфигурации базы данных
К установке SugarCRM предъявляются, в частности, следующие два требования:
- возможность полнотекстового поиска для сервера базы данных. DB2 поддерживает полнотекстовой поиск в качестве дополнительной функции, которая в модели развертывания виртуальных приложений IBM PureSystems с использованием плагинов DB2 по умолчанию выключена;
- настраиваемая конфигурация базы данных в буферном пуле и пространстве таблицы.
Чтобы гарантировать, что база данных, предоставленная образом виртуального приложения, отвечает всем требованиям, мы с группой разработки плагинов DB2 четко определили надлежащие точки расширения. Была создана и выпущена новая функция продукта, стандарт рабочих нагрузок специальной базы данных. Она позволяет конечным пользователям создавать новые стандарты рабочих нагрузок базы данных, включая файл пакета сценариев со специальными сценариями для выполнения в каждой точке расширения. Стандарт рабочих нагрузок специальной базы данных можно использовать для настройки DB2 в образе виртуального приложения.
Для этого мы настроили и упаковали следующие сценарии:
- tune_inst.sh: настройка экземпляра DB2 после его установки и запуска;
- tune_db.sh: настройка конфигурации базы данных после ее создания;
- post_start_inst.sh: запуск полнотекстового поиска при каждом (пере)запуске DB2.
С помощью этих двух вновь разработанных функций мы успешно достигли своих целей повторного использования плагинов DB2 для SugarCRM.
В этой статье мы продемонстрировали, какие вопросы проектирования пришлось решать нашей группе при создании плагина, позволяющего развернуть существующее решение SugarCRM на IBM PureSystems. Мы также познакомили читателя со следующими задачами разработки:
- разработка трех плагинов для SugarCRM;
- упаковка плагинов;
- использование образцов из Plug-in Development Kit в качестве отправной точки (и особенно для отладки плагинов);
- определение для наших плагинов типового образа и модели приложения (чтобы их можно было быстро развертывать);
- реализация преобразователей - «механизмов», которые преобразуют элементы модели приложения в документ топологии, который можно использовать для развертывания в IBM PureSystems;
- создание сценариев автоматизации задач реализации и развертывания;
- добавление двух новых функций плагинов для повторного использования типового образа и настройки базы данных, чтобы удовлетворить требования решения SugarCRM.
Но это еще не все. Во второй части будут подробно разобраны уроки, извлеченные из разработки плагина для SugarCRM.
- Оригинал статьи: Deploy new applications on IBM PureSystems with plug-ins, Part 1.
- Ресурсы по IBM PureSystems на портале developerWorks.
- Подробнее об IBM PureSystems.
-
Дополнительная информация по решению задач в IBM Cloud:
- загрузка и передача файлов из экземпляра Windows;
- установка Web-сервера IIS на Windows 2008 R2;
- создание экземпляра IBM Cloud из командной строки Linux;
- создание экземпляра IBM Cloud из командной строки Windows;
- расширение корпоративной сети с помощью IBM Cloud;
- приложения высокой готовности в облаке IBM;
- динамическая параметризация образов облака для создания специальных экземпляров;
- Windows-ориентированные подходы к подготовке IBM Cloud;
- развертывание программных продуктов с использованием службы быстрого развертывания;
- интеграция политики аутентификации с помощью прокси-сервера;
- настройка менеджера логических томов Linux;
- развертывание сложной топологии с помощью специальной утилиты;
- подготовка и настройка экземпляра, охватывающего публичную и частные VLAN;
- безопасный доступ к IBM Cloud для Android-устройств;
- восстановление данных в IBM SmartCloud Enterprise;
- безопасные экземпляры виртуальной машины в облаке.
Цзинь Хуан (Chin Huang) ― архитектор облачных решений, специализирующийся на ИТ-архитектуре и программном обеспечении. Его профессиональный опыт заключается в разработке передовых решений, в том числе на IaaS-платформе, а также в области SaaS-интеграции, облачного анализа, Web-сервисов и IWD-плагинов. Сертифицированный консультант по облачным вычислительным решениям и автор более чем 10 технических публикаций. Живет и работает в Кремниевой долине, штат Калифорния, США.

Тонь Нго (Ton Ngo) ― архитектор облачных решений и ведущий разработчик IBM Silicon Valley Lab в Сан-Хосе, штат Калифорния, США. До недавнего времени был архитектором "Высокопроизводительного вычислительного облака" в Наньянском технологическом университете в Сингапуре и занимался тестированием и разработкой облачной системы для канадского Royal Bank. До этого 17 лет работал научным сотрудником в IBM T.J. Watson Research Center и Almaden Research Center и имеет публикации по широкому кругу вопросов.