Все об облачных вычислениях с открытым исходным кодом: Часть 2. Разработка приложения для работы на "облачной" платформе.

Вам, вероятно, знаком принцип "Написано один раз, работает везде" (Write Once, Run Everywhere - девиз платформы Java). Но если необходимо написать приложение, работающего на облачной платформе, то желательно точно знать, что именно предстоит сделать. Во второй статье из серии "Все об облачных вычислениях с открытым исходным кодом", рассказывается, как написать приложение с использованием PHP для работы на платформе облачных вычислений Aptana. Обсуждаются некоторые важнейшие конструктивные различия между облачным приложением и традиционным многоуровневым приложением. Эти идеи иллюстрируются простым на вид приложением, использующим знакомые технологии с открытым исходным кодом, которое получает доступ к большим возможностям облачных вычислений.

Майкл Галпин, инженер по программному обеспечению, Vitria Technology

Майкл Галпин (Michael Galpin) имеет учёную степень по математике в Калифорнийском Технологическом институте. Он является Java-разработчиком с конца 90-х гг. и работает инженером по программному обеспечению в Vitria Technology, в Саннивейл, Калифорния.



01.09.2010

Об этой серии

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

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


Архитектуры, используемые в платформах для облачных вычислений

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

Архитектура для специализированных платформ

Узкоспециализированные платформы налагают наиболее жесткие ограничения на архитектуру. При разработке приложения, которое будет работать на такой платформе, необходимо учитывать множество аспектов. Однако компенсацией за эти ограничения выступают уникальные преимущества. Хорошим примером является Google App Engine.

При создании приложения для Google App Engine необходимо подготовить только исходный код приложения и статические ресурсы (например, изображения), которые нужны приложению. При этом у вас нет контроля ни над сервером приложений, ни над доступом к данным. Для этого есть хорошая причина: App Engine поддерживает высокомасштабируемые решения. Однако необходимо понимать инфраструктуру, предоставляемую App Engine. Google предоставляет API (язык запросов Google Query Language) для доступа к хранилищу данных App Engine. Он намеренно сделан очень похожим на SQL, чтобы облегчить начало использования хранилища данных. Это хранилище не является реляционной базой данных; оно ближе к простой файловой системе.

Простой доступ немного медленнее, чем простой запрос (найти один объект по первичному ключу) к базе данных. Реляционные запросы, как, например, объединения (join) таблиц, возможны, но реализуются с помощью нескольких последовательных запросов. Они значительно медленнее, чем объединение в реляционной базе данных, но в результате оказывается гораздо труднее создать запрос, который приведет к чрезмерной нагрузке на хранилище данных.

Чтобы использовать преимущества хранилища данных, часто рекомендуется денормализовать данные, что дает возможность хранить и извлекать связанные данные вместе. Например, рассмотрим хранение информации о пользователе, где у каждого пользователя есть несколько телефонных номеров. Это классическая связь один-ко-многим, и обычно в базе данных она реализуется в виде таблицы пользователей и таблицы телефонных номеров, где таблица телефонных номеров содержит внешний ключ к таблице пользователей. Эту связь, конечно, можно аналогичным образом реализовать и для хранилища Google, но более эффективно инкапсулировать телефонный номер как часть записи пользователя (в виде списка или массива телефонных номеров). Тогда для получения всей нужной информации достаточно будет одного запроса к хранилищу данных.

Google App Engine - не единственная платформа облачных вычислений, которая использует эту модель. Аналогичным образом работает одна из платформ Amazon - SimpleDB. На EC2 можно установить MySQL, Postgres или любую другую базу данных, но SimpleDB проще в использовании и предоставляет определенные преимущества масштабируемости (горизонтальное масштабирование делается гораздо легче, когда объединения формально запрещены). Еще одна специализированная платформа, Ning, тоже предоставляет аналогичную модель доступа.

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

Архитектура для базовых платформ

Базовые платформы, как, например, Amazon EC2 или Joyent Accelerator, предоставляют большую свободу, позволяя запускать в облаке любое требуемое программное обеспечение. Поэтому они налагают меньше ограничений на используемую архитектуру. К разработке для базовой платформы можно подойти так, как будто это - отдельный сервер, принадлежащий компании. Как бы проектировалось приложение, если бы его планировалось запускать в своем собственном центре данных или на серверах, арендованных у провайдера? Поэтому, если будет решено запустить приложение на платформе облачных вычислений, возможно, не придется значительно менять проектное решение.

Web-приложения могут работать на базовых платформах так же, как и на специализированной платформе, такой как Google App Engine, но при этом можно использовать любой сервер приложений или базу данных. С другой стороны, при этом необходимо создавать, устанавливать и настраивать всю необходимую инфраструктуру и управлять ею. Платформа для облачных вычислений в этом случае помочь уже не сможет.

Существует и некоторое промежуточное решение. Платформа Aptana Cloud обеспечивает значительную гибкость, поскольку она располагается поверх платформы Joyent Accelerator. Aptana уменьшает объем работы, предоставляя для построения приложения несколько вариантов инфраструктуры, основанных на открытых решениях. Там есть и отличные инструменты для упрощения процесса развертывания. Ключ к успеху заключается в использовании технологий с открытым исходным кодом.


Использование решений с открытым исходным кодом

Для базовой платформы необходимо выбрать сервер приложений, базу данных и так далее. На чем стоит остановиться? Если бы вы создавали собственный центр обработки данных, желательно было бы использовать технологии с открытым исходным кодом. То же самое применимо и к облачной платформе. Можно выбрать операционную систему Linux® или UNIX®, Web-сервер Apache с соответствующими модулями для используемого языка программирования и базу данных MySQL или Postgres. Это решения настолько популярны, что можно найти заранее настроенные варианты. Еще легче выбрать использование Aptana Cloud.

Aptana Cloud

Aptana Cloud размещает технологии с открытым исходным кодом поверх платформы Joyent Accelerator. Joyent использует технологию виртуализации Xen на операционной системе OpenSolaris, поэтому сочетание Joyent и открытых технологий, используемых Aptana, является действительно полностью открытой платформой. Aptana использует Web-сервер Apache, почтовый сервер Postfix и базу данных MySQL. Она предоставляет подключаемые модули Apache для PHP и для Jaxer, контейнера с открытым исходным кодом для использования серверного JavaScript. На момент написания статьи Aptana предлагает также поддержку в режиме закрытого бета-тестирования для Ruby on Rails на Aptana Cloud.

Использовать Aptana Cloud очень просто. Платформа Aptana интегрирована в флагманский продукт компании - среду разработки Aptana Studio. Достаточно просто загрузить Studio, и можно использовать ее для создания и развертывания приложения в Aptana Cloud. Если уже имеются собственные инструменты, которые желательно использовать для создания приложения, то ими тоже можно пользоваться. Нужно просто импортировать их в Aptana Studio и использовать Studio для развертывания приложения в облаке. В следующих разделах рассматривается создание и развертывание приложений в Aptana Cloud.


Создание приложения

В примере приложения в этой статье используется PHP на Aptana Cloud. Все, что нужно для использования Aptana Studio для разработки приложения - это установить модуль расширения для PHP, как показывается ниже.

Рисунок 1. Установка модуля PHP для Aptana Studio
Рисунок 1. Установка модуля PHP для Aptana Studio

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

В качестве примера приложения был выбран индивидуальный блог. Этот тип приложения хорошо подходит для такой простой платформы, как Aptana Cloud. Можно запустить приложение с минимальными ресурсами и за низкую плату. Можно наращивать ресурсы (вертикальное масштабирование) по мере того, как приложение приобретает популярность. Но даже минимальное приложение может работать в "пиковом" режиме (автоматически увеличивая процессорную мощность, чтобы справиться с пиковой нагрузкой). Если необходимо обслуживать большое число пользователей, потребуется несколько серверов для горизонтального масштабирования, и, вероятно, придется использовать Joyent Accelerator напрямую, чтобы настроить архитектуру более точно.

Поскольку наше приложение-пример является блогом, то стоит ускорить процесс разработки и воспользоваться уже готовым шаблоном блога. Это приложение основано на ПО для ведения блогов WordPress. Это приложение написано исключительно на PHP и использует базу данных MySQL, что делает его отличным кандидатом для развертывания в Aptana Cloud. Оно открытое, поэтому можно просто загрузить программу, настроить ее и развернуть на сервере. В данном случае сервером фактически является Aptana Cloud.

Одной из первых задач для любого WordPress-приложения является его конфигурирование путем редактирования скрипта wp-config.php. При этом настраивается доступ к базе данных и безопасность на основе cookie. В листинге 1 приведен типичный файл.

Листинг 1. Настройка WordPress
<?php
// ** Настройки MySQL - эту информацию можно получить из настроек компьютера,
где установлено Web-приложение ** //
/** Имя базы данных для WordPress */
define('DB_NAME', 'wordpress');

/** Имя пользователя базы данных MySQL  */
define('DB_USER', 'wpadmin');

/** Пароль базы данных MySQL */
define('DB_PASSWORD', 'your_password_here');

/** Имя компьютера, на котором установлена MySQL */
define('DB_HOST', 'localhost');

/** Кодировка символов, используемая при создании таблиц базы данных. */
define('DB_CHARSET', 'utf8');

/** Тип сортировки в базе данных. Не стоит изменять его без необходимости. */
define('DB_COLLATE', '');

/** ...пропущено. */
?>

Здесь нужно отметить несколько важных моментов. Если разработка ведется на локальной рабочей станции, то, вероятно, база данных MySQL находится на этом же компьютере. Поэтому параметр DB_HOST устанавливается в localhost. Такая же настройка используется и в Aptana Cloud. База данных будет работать на той же машине, что и сервер приложений. Нет необходимости вносить изменения в программу, которая работает на локальном компьютере, когда она устанавливается в Aptana Cloud.

Одной из причин популярности WordPress является его расширяемость. Для этого есть несколько модулей расширения. Предположим, что вы хотите не просто создать блог для общения с клиентами, но и оповещать пользователей об обновлениях через Twitter. Для этого можно использовать модуль расширения Twitter Tools для WordPress. Это просто сценарий PHP, который нужно загрузить и скопировать в подкаталог wp-content/plugins. Если он работает не так, как требуется, то можно изменить его код или разработать собственный PHP-сценарий.

Также можно настроить внешний вид WordPress, создав новую тему (набор PHP-скриптов, файлов CSS и изображений) и поместив ее в подкаталог wp-content/themes. Как только персонализация программы будет закончена, ее сразу можно установить в Aptana Cloud.


Развертывание в Aptana Cloud

Одним из главных преимуществ Aptana является удобство развертывания приложений. Для развертывания достаточно просто выбрать в меню IDE Aptana > Cloud (Облако) > Deploy project (Развертывание проекта), как показано ниже.

Рисунок 2. Развертывание в Aptana Cloud
Рисунок 2. Развертывание в Aptana Cloud

При первой попытке развернуть проект в Aptana Cloud будет предложено ввести некоторые базовые регистрационные данные. Можно бесплатно развертывать приложения в Aptana Cloud в течение трех недель, поэтому сначала вводить какую-либо платежную информацию не требуется. Когда основная информация будет введена, Aptana установит виртуальный сервер в облаке.

Рисунок 3. Инициализация Aptana Cloud
Рисунок 3. Инициализация Aptana Cloud

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

Рисунок 4. Развертывание программы - добавление в Subversion
Рисунок 4. Развертывание программы - добавление в Subversion

После того, как Aptana добавила приложение в Subversion и развернула его, можно использовать функциональность Smart Sync для обновления всех инкрементных изменений, которые вносятся в приложение. Aptana также предоставляет пользовательский интерфейс для добавления членов команды в приложение, чтобы другие программисты могли загружать исходные тексты из Subversion и совместно работать. Правда, когда над приложением работает много людей, это может привести к нестабильности. К счастью, Aptana создает в облаке отладочную (staging) и рабочую (production) версии сайта. Можно тестировать изменения на отладочном сайте, прежде чем размещать их на рабочей версии.

Развертывание данных

Системы контроля версий исходного кода - это отличный инструмент для развертывания программы в облаке, но как быть с данными? Для WordPress необходимо сначала установить их локально; при этом WordPress вставляет конфигурационные данные в свою базу данных. По мере добавления модулей расширения, тем и других настроек конфигурации в базу данных будет записываться все больше данных. Это типично для приложений, управляемых данными. Также потребуются конфигурационные или какие-нибудь исходные данные. К счастью, в случае использования Aptana развертывание данных в облаке выполняется очень легко. Достаточно просто создать дамп базы данных с помощью команды mysqldump. У Aptana есть ряд инструментов для управления базами данных, в том числе популярное открытое приложение phpMyAdmin. Доступ к нему можно получить из Aptana, как показано ниже.

Рисунок 5. Доступ к phpMyAdmin из Aptana Studio
Рисунок 5. Доступ к phpMyAdmin из Aptana Studio

Из приложения phpMyAdmin можно загрузить созданный файл.

Рисунок 6. Загрузка дампа MySQL
Рисунок 6. Загрузка дампа MySQL

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


Заключение

Проектирование и разработка приложений для облака может быть непростым делом в зависимости от вида используемой платформы облачных вычислений. Однако для многих типов приложений использование стандартных технологий с открытым кодом может в значительной степени упростить задачу. Наглядным примером такого подхода является Aptana Cloud.

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

Ресурсы

Научиться

Получить продукты и технологии

Обсудить

Комментарии

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=Open source
ArticleID=514684
ArticleTitle=Все об облачных вычислениях с открытым исходным кодом: Часть 2. Разработка приложения для работы на "облачной" платформе.
publish-date=09012010