Практическая автоматизация: Принципы автоматизации развертывания приложений, часть 2

Интерфейсы

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

Принцип одноразового контейнера, в соответствии с которым среда для развертывания должна переводиться в заранее известное состояние. Благодаря этому снижается вероятность ошибок.

Принцип удаленного развертывания, гарантирующий взаимодействие с несколькими удаленными серверами с центрального компьютера или кластера.

Принцип обновления базы данных, целями которого являются организация и централизованное управление скриптовым процессом для выполнения последовательных изменений в базе данных.

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

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

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

Об этой серии

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

На рисунке 1 показано взаимодействие между принципами развертывания, описываемыми в этой статье (незакрашенные прямоугольники соответствуют принципам, рассмотренным в предыдущей статье).

Рисунок 1. Принципы автоматизации развертывания

Следование данным семи дополнительным принципам организации автоматизированного развертывания вкупе с восемью, представленными в предыдущей статье, помогут вам развертывать ваши приложения одним нажатием на кнопку.

Компилируйте один раз, разворачивайте многократно в разных средах

Название. Двоичная согласованность

Принцип. Один архив (WAR или EAR) используется при разворачивании приложения в различных целевых окружениях.

Противоположный принцип. Приложение компилируется отдельно для каждой среды развертывания.

После многочисленных споров с коллегами на эту тему я твердо решил придерживаться точки зрения, которую можно сформулировать, как «компилируйте один раз для всех сред развертывания» (противоположным является подход «компилируйте систему под каждую среду развертывания»). Например, артефактом при развертывании Web-приложений на Java является файл Web-архива (WAR) или корпоративного архива (EAR). Этот файл должен помещаться в систему контроля версий и помечаться тегом один раз (например, DEV для среды разработки).

Принцип однократной компиляции и многократного развертывания иллюстрируется на рисунке 2, в соответствии с которым файл brewery.war создается на сервере сборки, а затем разворачивается в каждой из целевых сред.