Кажется, что в java-пространстве существует тенденция к тому, чтобы отказаться от развертывания веб-приложений Java в контейнере сервлетов Java (или сервере приложений) в виде военного файла (или файла уха) и вместо этого разместить приложение как исполняемый банку со встроенным сервером/HTTP-сервером, таким как причал. И я имею в виду это в большей степени тем, что новые структуры влияют на то, как новые приложения разрабатываются и развертываются, а не как приложения доставляются конечным пользователям (потому что, например, я понимаю, почему Jenkins использует встроенный контейнер, очень легко захватывать и уходить). Примеры фреймворков, использующих вариант исполняемого флага: Dropwizard, Spring Загрузка и Play (ну, он не запускается в контейнере сервлета, но HTTP-сервер встроен).
Мой вопрос: исходя из среды, в которой мы развернули наши приложения (вплоть до этой точки в основном Struts2) на один сервер приложений tomcat, какие изменения, передовые методы или соображения необходимо сделать, если мы планируем использовать подход с встроенным контейнером? В настоящее время у нас есть около 10 домашних приложений, работающих на одном сервере tomcat, и для этих небольших приложений возможность совместного использования ресурсов и управления на одном сервере хороша. Наши приложения не предназначены для распространения среди конечных пользователей в среде. Однако, продвигаясь вперед, если мы решаем использовать более новую структуру java, должен ли этот подход измениться? Является ли переход к исполняемым банкам, вызванным растущим использованием облачных развертываний (например, Heroku)?
Если у вас есть опыт управления несколькими приложениями в стиле воспроизведения развертывания по сравнению с традиционным развертыванием военного файла на одном сервере приложений, пожалуйста, поделитесь своим пониманием.