Развертывание новых приложений в IBM PureSystems с помощью плагинов. Часть 1

Вопросы проектирования и усилия по разработке, необходимые для создания полезного решения SugarCRM

С появлением IBM® PureSystems™ - комплексного семейства облачных систем корпоративного уровня, в которое входят приложения, услуги, оборудование и даже опыт (предоставляемый в практических моделях) - облачные вычисления достигли новых высот. Один из способов подготовить приложение к использованию с IBM PureSystems ― создать плагин, наводящий мост между пакетом приложения и системой. В этой статье специалисты группы IBM Cloud описывают процесс разработки, позволяющий реализовать приложение SugarCRM на базе IBM PureSystems.

Цзинь Хуан, архитектор облачных решений, IBM

Цзинь Хуан (Chin Huang) ― архитектор облачных решений, специализирующийся на ИТ-архитектуре и программном обеспечении. Его профессиональный опыт заключается в разработке передовых решений, в том числе на IaaS-платформе, а также в области SaaS-интеграции, облачного анализа, Web-сервисов и IWD-плагинов. Сертифицированный консультант по облачным вычислительным решениям и автор более чем 10 технических публикаций. Живет и работает в Кремниевой долине, штат Калифорния, США.



Тонь Нго, архитектор облачных решений, IBM

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



20.09.2012

С появлением 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

Решение 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, соображения структуры и вопросы лицензирования, которые могут повлиять на разработку технологии.

SugarCRM как PHP-приложение

Набор программного обеспечения, рекомендованный поставщиком для серверов System x и System p, приведен в таблице 1.

Таблица 1. Предполагаемый набор программного обеспечения для SugarCRM
System xSystem p
Red Hat Enterprise Linux 5AIX 7.1
Apache 2.2Apache 2.2
PHP 5.3 c необходимыми расширениямиPHP 5.3 c необходимыми расширениями
APC 3.1APC 3.1
MySQL 5.1DB2 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.tgzLinux\SOURCEShttp://www.gnu.org/software/autoconf/Инструмент, необходимый PHPize для компиляции PHP-расширений
httpd-2.2.21.tgzLinux\SOURCEShttp://httpd.apache.org/download.cgiПакет исходного кода Apache
PHP-5.3.8.tgzLinux\SOURCEShttp://www.PHP.net/Пакет исходного кода PHP
APC-3.1.9.tgzLinux\SOURCEShttp://pecl.PHP.net/package/APCПакет исходного кода APC
Таблица 4. Состав пакета поддержки плагина связи с DB2 (DB2LinkLinux.tgz)
Имя файлаПодкаталог в TGZИсточникОписание
ibm_data_server_client_linuxx64_v97.tar.gzLinux\Productshttp://www-01.ibm.com/support/docview.wss?rs=4020&uid=swg21385217Клиент IBM data server v9.7, используемый для создания расширения db2
ibm_db2-1.9.2.tgzLinux\SOURCEShttp://pecl.PHP.net/package/ibm_db2Исходный код PHP-расширения "ibm_db2"
Таблица 5. Состав пакета плагина поддержки связи с MySQL (MySQLLinkLinux.tgz)
Имя файлаПодкаталог в TGZИсточникОписание
mysql-shared-compat-5.0.92-1.rhel5.x86_64.rpmLinux\RPMShttp://dev.mysql.com/downloads/mysql/5.0.html#downloadsRPM, необходимый для PHP с опцией MySQL
mysql-devel-5.0.77-4.el5_4.2.x86_64.rpmLinux\RPMShttp://dev.mysql.com/downloads/mysql/5.0.html#downloadsRPM, необходимый для PHP с опцией MySQL

Использование PDK в качестве отправной точки

Плагин можно оформить как проект Eclipse, чтобы использовать гибкую и мощную платформу разработки. Однако внутренняя организация плагина следует строгому набору правил и соглашений, так что его можно встроить в правильно отформатированные пакеты и обрабатывать с помощью подсистем IBM PureSystems. Мы обнаружили, что необходим инструмент разработки для двух этапов: начала работы и отладки. С этой целью можно загрузить Plug-in Development Kit (PDK), который присутствует на главной странице IBM PureSystems в виде ZIP-файла.

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

PDK также помогает в процессе отладки благодаря наличию отладочного модуля. Этот компонент можно перетащить в любой образ виртуального приложения. Она предоставляет два способа отладки.

  1. Пользователь может развернуть шаблон без фактической установки виртуальных машин в облаке, чтобы проверить артефакт топологии. Это полезно на начальной стадии разработки, когда код еще не функционирует, и пользователь может избежать длительного цикла развертывания ВM.
  2. Когда образ развернут в облаке, файлы, используемые при активации, сохраняются в В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
Параметры SugarCRM
Рисунок 5. Параметры компонентов базы данных
Параметры компонентов базы данных

На рисунке 6 показан пример образа с SugarCRM и существующим сервером DB2. Для удобства читателя в типовой образ SugarCRM включены несколько готовых шаблонов.

Рисунок 6. Пример образа с SugarCRM и DB2
Пример образа с 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 входят следующие компоненты.

  1. Existing DB2: представляет существующий сервер DB2 и выполняет необходимую настройку, такую как инициализация базы данных для SugarCRM.
  2. Existing MySQL: представляет существующий сервер MySQL и выполняет необходимую настройку, такую как инициализация базы данных для SugarCRM.
  3. DB2 link: представляет зависимость между компонентами SugarCRM и DB2 и выполняет окончательную настройку, когда оба сервера SugarCRM и DB2 готовы. Это подразумевает передачу IP-адреса сервера DB2 на сервер SugarCRM.
  4. MySQL link: представляет зависимость между компонентами SugarCRM и DB2 и выполняет окончательную настройку, когда оба сервера SugarCRM и DB2 готовы. Это подразумевает передачу IP-адреса сервера MySQL на сервер SugarCRM.

Для фактической реализации мы организовали код этих плагинов как в следующем проекте Eclipse.

  1. Компонент SugarCRM ― как отдельный проект.
  2. Существующий компонент DB2 и связь ― как объединенный проект.
  3. Существующий компонент MySQL и связь ― как объединенный проект.

В документе Plug-in Development Guide описывается четко определенная структура проекта Eclipse, которая должна соблюдаться при реализации плагина. Внутренняя планировка трех проектов Eclipse, ориентированная на каталог плагинов, в котором находится наш код, показана на рисунках 7 и 8.

Рисунок 7. Реализация плагинов для SugarCRM
Реализация плагинов для SugarCRM
Рисунок 8. реализация плагинов для DB2 и MySQL
реализация плагинов для DB2 и MySQL

Файлы, выделенные красным цветом, представляют собой точки входа для IBM PureSystems: они содержат код Python для установки и настройки программного обеспечения. Их имена и местоположение выбраны так, чтобы механизм активации мог извлекать их в процессе развертывания.

Стандартная последовательность такова:

  1. install.py
  2. configure.py
  3. start.py

Остальные сценарии ― это сценарии поддержки, вызываемые из основных сценариев. Двоичные файлы, которые можно упаковать с плагином, находятся в каталоге files и размещаются в отдельных каталогах AIX и Linux. Сценарии также размещаются в отдельных каталогах AIX и Linux.

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

На рисунке 8 показано, как в том и том же плагине организован код компонента и связи.

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

На рисунке 9 показано окно развертывания шаблона с простыми полями ввода данных для пользователя.

Рисунок 9. Развертывание приложения SugarCRM с помощью шаблона
Развертывание приложения 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.

Ресурсы

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Облачные вычисления, Information Management
ArticleID=836186
ArticleTitle=Развертывание новых приложений в IBM PureSystems с помощью плагинов. Часть 1
publish-date=09202012