Как деплоются приложения Java EE?

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

Интересно посмотреть как обстоят дела в другом лагере.
До этого работал только с Java SE и использовал её только как вспомогательное средство интересно, как деплоят приложения на всякие wildfly и подобные сервера приложений, как устроен zero downtime и миграции бд?
Пока играюсь с wildfly, научился деплоить на локальный хост еарник с помощью maven, возник вопрос как поступают с деплоем, когда нужно обновить частично, только один модуль?
  • Вопрос задан
  • 1294 просмотра
Пригласить эксперта
Ответы на вопрос 1
@bobzer
Java EE Developer
нужно обновить частично, только один модуль
Соответственно, этот модуль должен быть самостоятельным артефактом Maven. Обычно, артефакт для EAR описывает формирование приложения из других модулей и конфигурационных файлов. Следует разбить приложение на артефакты (обычно jar/war), которые входят в состав EAR.

Вообще, при сборке для промышленной среды надежнее собирать всё приложение (EAR в вашем случае) целиком. А при сборке для окружения разработчика вообще удобнее использовать не сборщик Maven, а среду разработки. Idea, например, прекрасно понимает формат конфигураций Maven и на их основе может создавать свои артефакты (и настоятельно порекомендует это сделать при обнаружении pom.xml). Если собирать артефакты с помощью Idea, то даже при сборке EAR целиком фактически будут обновляться только изменённые файлы, что ускоряет процесс сборки на порядки, в сравнении с Maven. Это достигается за счёт того, что у Idea есть свой контроль версий и она знает что именно следует пересобрать, а что можно оставить как есть. Наибольший выигрыш получается для exploded артефактов (которые не архивируются, а выкладываются в виде структуры папок с файлами), т.к. в таком случае не приходится перепаковывать модули целиком при изменении небольшого количества файлов в них.

Для каждого артефакта Maven Idea создаст две версии своих артефактов - упакованную и не упакованную (exploded). В случае, если ваше приложение состоит из нескольких модулей, может потребоваться ручное вмешательство в сгенерированные артефакты, т.к. exploded-артефакт верхнего уровня в конфигурации по-умолчанию содержит подчинённые артефакты в упакованном виде. Потребуется удалить вариант в упакованном виде и на его место вставить exploded-вариант. Минус состоит в том, что при изменении артефакта Maven, Idea предложит перегенерировать и свои артефакты, все ручные настройки при этом пропадут. Но настройки топологии проекта меняются нечасто, поэтому лишней минутой работы по ручной реконфигурации обычно можно пренебречь...

Если Вы только начали экспериментировать с Java EE, то создание EAR может быть неоправданным усложнением, т.к. во многих случаях веб-артефакт более низкого уровня - WAR - прекрасно справляется со всеми задачами Enterprise-приложения. При этом получается более простая структура, соответственно и с настройкой сборки проблем меньше.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Хабаровск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽
19 апр. 2024, в 05:01
999999 руб./за проект
19 апр. 2024, в 03:52
1000 руб./за проект
19 апр. 2024, в 03:01
1000 руб./за проект