- PVSM.RU - https://www.pvsm.ru -

Управление жизненным циклом приложения в облаке

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

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

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

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

image

Чтобы реализовать данную схему нам понадобится реализовать следующие шаги:
1. Создание окружения для продакшина.
2. Создание окружения для сборки проекта.
3. Сборка и разворачивание проекта.
4. Создание окружения для хранения данных.
5. Конфигурация приложения под базу данных.
6. Создание окружения для тестирования.
7. Обновление приложения.

Итак, начнем.

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

Давайте представим, что у нас уже есть первая протестированная версия приложения, и мы хотим развернуть ее на продакшине.

Выбираем необходимый сервер приложений (для примера используем GlassFish), устанавливаем лимит потребляемых ресурсов и создаем окружение.

image

Создание окружения для сборки проектов

Как мы уже упоминали ранее, в Jelastic есть встроенный инструмент для сборки приложений в облаке — Maven, который подтягивает код прямо с Git или SVN репозитария.

Итак, выбираем Maven в качестве нашего инструмента для сборки, устанавливаем лимит ресурсов и создаем наше второе окружение.

image

Сборка и разворачивание окружения

Теперь мы можем легко собрать и развернуть наше приложение.
1. Добавляем проект в Maven:

image

2. Затем просто кликаем Build and deploy и все готово:

image

Создание окружения для хранения данных

В данном примере будем использовать одну базу для продакшина и тестирования.
1. Создаем третье окружение с базой (например, MySQL):

image

2. После создания окружения заходим на phpMyAdmin (для этого нужно просто кликнуть Open in browser для MySQL) и создаем нового пользователя и базу для своего приложения (логин и пароль Jelastic прислал Вам на почту сразу же после создания окружения).

image

Конфигурация приложения под базу данных

Сейчас нужно сконфигурировать наше приложение под базу.
1. Кликаем Config для сервера приложений (на продакшине).
2. Создаем в папке home файл mydb.cfg, где прописываем коннекшн к базе:

host=jdbc:mysql://mysql-{your_env_name}.{hoster_domain} [2]/{db_name}
username={get in the email from Robot@jelastic}
password={get in the email from Robot@jelastic}
driver=com.mysql.jdbc.Driver

image

3. Загружаем коннектор для нашей базы (в данном случае MySQL) в папку lib нашего сервера.

image

4. Рестартуем сервер, чтобы он подтянул все изменения, и можно открывать приложение в браузере.

image

5. После успешного разворачивания давайте привяжем к нашему продакшн-окружению доменное имя. Предположим, что мы ранее купили доменное имя (production.com). Кликаем Settings для нашего окружения и во вкладке Custom domains делаем привязку домена:

image

6. Проверяем:

image

Создание окружения для тестирования

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

1. Кликаем Clone environment:

image

2. Вводим имя нового окружения:

image

И готово:

image

Обновление приложения

Предположим, что мы добавили новые фичи в наше приложение и хотим развернуть его в тестовом окружении.

1. Добавляем наш новый проект в Maven, разворачиваем его в окружении для тестирования.
2. Привязываем доменное имя (к примеру: test.com):

image

3. Еще раз убеждаемся, что все работает должным образом:

image

4. После тестирования новой версии нашего приложения мы можем просто переключить домены между нашим тестовым и продакшн окружениями. Это позволит обновиться без даунтайма, не расстраивая наших пользователей.
Для этого просто кликаем на Settings для одного из окружений, выбираем окружение, с которым мы хотим обменяться доменами и нажимаем Swap:

image

5. Давайте проверим:

image

Как видим, обновление прошло успешно.

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

А как Вы управляете жизненным циклом Вашего приложения? Какие инструменты используете? Что еще из функционала посоветуете добавить? Будем признательны, если поделитесь своим опытом в комментариях.

imageТакже приглашаем всех завтра на конференцию «Разработка ПО 2012» CEE-SECR 2012 (Центр Digital October [3], Москва, 10:10) послушать доклад технического директора российского подразделения Jelastic Дмитрия Лазаренко. Приходите, будет интересно! Вы узнаете, кому нужен Private PaaS и какие выгоды он дает. Будут рассмотрены задачи, которые лучше всего решаются с помощью Private PaaS, и основные преимущества Private PaaS над Public PaaS / Private IaaS, способствующие экономии бюджета компании на IT. Дмитрий проведет сравнительный анализ рынка Private PaaS решений и расскажет о новой платформе Jelastic Private PaaS Cloud. Ну и, конечно же, наш докладчик с удовольствием ответит на все интересующие Вас вопросы.

Автор: jelastic

Источник [4]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/maven/18628

Ссылки в тексте:

[1] Jelastic: http://jelastic.com

[2] {hoster_domain}: http://jelastic.com/docs/jelastic-hoster-info

[3] Центр Digital October: http://www.secr.ru/venue

[4] Источник: http://habrahabr.ru/post/156897/