Развертывание – это еще один аспект создания программного продукта, который хорошо поддается автоматизации. Это позволяет получить все преимущества надежного процесса: повысить точность, скорость и контроль над выполнением нужных действий. В первой части были рассмотрены восемь принципов автоматизированного развертывания приложений. В этой статье мы поговорим о следующих семи не менее полезных принципах:
Принцип двоичной согласованности, гарантирующий, что ни один артефакт не будет потерян в процессе развертывания приложения в целевых окружениях.
Принцип одноразового контейнера, в соответствии с которым среда для развертывания должна переводиться в заранее известное состояние. Благодаря этому снижается вероятность ошибок.
Принцип удаленного развертывания, гарантирующий взаимодействие с несколькими удаленными серверами с центрального компьютера или кластера.
Принцип обновления базы данных, целями которого являются организация и централизованное управление скриптовым процессом для выполнения последовательных изменений в базе данных.
Принцип тестирования развертывания, в соответствии с которым перед развертыванием и после него должны выполняться специальные проверки, чтобы убедиться, что приложение работает как ожидается.
Принцип отката среды, который возвращает приложение и базу данных в исходное состояние в случае неудачного развертывания.
Принцип защиты файлов, предписывающий ограничивать доступ к определенным файлам, использующимся системой сборки приложения.
Об этой серии
Поскольку мы являемся разработчиками, наша задача состоит в автоматизации труда конечных пользователей. При этом многие из нас не уделяют достаточно внимания автоматизации своего собственного труда. Серия статей Практическая автоматизация посвящена практическим принципам автоматизации процесса разработки и отвечает на вопросы, когда и как их следует применять.
На рисунке 1 показано взаимодействие между принципами развертывания, описываемыми в этой статье (незакрашенные прямоугольники соответствуют принципам, рассмотренным в предыдущей статье).
Рисунок 1. Принципы автоматизации развертывания
Следование данным семи дополнительным принципам организации автоматизированного развертывания вкупе с восемью, представленными в предыдущей статье, помогут вам развертывать ваши приложения одним нажатием на кнопку.
Компилируйте один раз, разворачивайте многократно в разных средах
Название. Двоичная согласованность
Принцип. Один архив (WAR или EAR) используется при разворачивании приложения в различных целевых окружениях.
Противоположный принцип. Приложение компилируется отдельно для каждой среды развертывания.
После многочисленных споров с коллегами на эту тему я твердо решил придерживаться точки зрения, которую можно сформулировать, как «компилируйте один раз для всех сред развертывания» (противоположным является подход «компилируйте систему под каждую среду развертывания»). Например, артефактом при развертывании Web-приложений на Java является файл Web-архива (WAR) или корпоративного архива (EAR). Этот файл должен помещаться в систему контроля версий и помечаться тегом один раз (например, DEV для среды разработки).
Принцип однократной компиляции и многократного развертывания иллюстрируется на рисунке 2, в соответствии с которым файл brewery.war создается на сервере сборки, а затем разворачивается в каждой из целевых сред.