Best Practices für die Bereitstellung von Java-Webanwendungen bei minimalen Ausfallzeiten?

Bei der Bereitstellung einer großen Java-Webanwendung (> 100 MB .war) verwende ich derzeit den folgenden Bereitstellungsprozess:

Die WAR-Anwendungsdatei wird lokal auf dem Entwicklungscomputer erweitert.Die erweiterte Anwendung wird von der Entwicklungsmaschine in die Live-Umgebung synchronisiert.Der App-Server in der Live-Umgebung wird nach dem rsync neu gestartet. Dieser Schritt ist nicht unbedingt erforderlich, aber ich habe festgestellt, dass durch einen Neustart des Anwendungsservers bei der Bereitstellung "java.lang.OutOfMemoryError: PermGen space" aufgrund des häufigen Ladens von Klassen vermieden wird.

Gute Dinge über diesen Ansatz:

Mit rsync wird die Datenmenge minimiert, die von der Entwicklungsmaschine an die Live-Umgebung gesendet wird. Das Hochladen der gesamten WAR-Datei dauert mehr als zehn Minuten, während ein RSYNC-Vorgang einige Sekunden dauert.

Schlechte Dinge an diesem Ansatz:

Während der Ausführung von rsync wird der Anwendungskontext neu gestartet, da die Dateien aktualisiert werden. Im Idealfall sollte der Neustart nach Abschluss von rsync erfolgen, nicht, wenn es noch ausgeführt wird.Der Neustart des App-Servers verursacht etwa zwei Minuten Ausfallzeit.

Ich möchte einen Bereitstellungsprozess mit den folgenden Eigenschaften finden:

Minimale Ausfallzeit während des Bereitstellungsprozesses.Minimaler Zeitaufwand für das Hochladen der Daten.Wenn der Bereitstellungsprozess App-Server-spezifisch ist, muss der App-Server Open Source sein.

Frage:

Was ist angesichts der angegebenen Anforderungen der optimale Bereitstellungsprozess?

Antworten auf die Frage(18)

Ihre Antwort auf die Frage