Wydaje się, że w przestrzeni Java istnieje tendencja do odchodzenia od wdrażania aplikacji internetowych w języku Java do kontenera serwletów Java (lub serwera aplikacji) w postaci pliku wojennego (lub pliku ear), a zamiast tego spakowania aplikacji jako wykonywalnego pliku jar z wbudowany serwlet / serwer HTTP, taki jak jetty. I mam na myśli to bardziej w sposobie, w jaki nowsze frameworki wpływają na to, jak nowe aplikacje są opracowywane i wdrażane, a nie na to, jak aplikacje są dostarczane do użytkowników końcowych (ponieważ na przykład rozumiem, dlaczego Jenkins używa osadzonego kontenera, bardzo łatwego do pobrania i użycia ). Przykłady frameworków przyjmujących opcję wykonywalnego jar: Dropwizard , Spring Boot i Play (cóż, nie działa na kontenerze serwletów, ale serwer HTTP jest osadzony).
Moje pytanie brzmi: pochodząc ze środowiska, w którym wdrażaliśmy nasze (do tego momentu głównie Struts2) aplikacje na jednym serwerze aplikacji Tomcat, jakie zmiany, najlepsze praktyki lub uwagi należy wprowadzić, jeśli planujemy zastosować podejście kontenera osadzonego ? Obecnie mamy około 10 własnych aplikacji działających na jednym serwerze tomcat i dla tych małych aplikacji możliwość współdzielenia zasobów i zarządzania na jednym serwerze jest przyjemna. Nasze aplikacje nie są przeznaczone do rozpowszechniania wśród użytkowników końcowych, aby działały w ich środowisku. Jeśli jednak zdecydujemy się wykorzystać nowszy framework java, czy to podejście powinno się zmienić? Czy przejście na pliki wykonywalne jars jest spowodowane rosnącym wykorzystaniem wdrożeń w chmurze (np. Heroku)?
Jeśli masz doświadczenie w zarządzaniu wieloma aplikacjami w stylu wdrażania Play w porównaniu z tradycyjnym wdrażaniem plików wojennych na jednym serwerze aplikacji, podziel się swoimi spostrzeżeniami.