Najlepsze praktyki wdrażania aplikacji WWW Java przy minimalnym przestoju?

Podczas wdrażania dużej aplikacji WWW Java (> 100 MB .war) używam obecnie następującego procesu wdrażania:

Plik .war aplikacji jest rozwijany lokalnie na komputerze programistycznym.Rozszerzona aplikacja to rsync: ed z maszyny programistycznej do środowiska Live.Serwer aplikacji w środowisku rzeczywistym jest restartowany po rsync. Ten krok nie jest konieczny, ale odkryłem, że ponowne uruchomienie serwera aplikacji podczas wdrażania unika „java.lang.OutOfMemoryError: przestrzeń PermGen” z powodu częstego ładowania klas.

Dobre rzeczy dotyczące tego podejścia:

Rsync minimalizuje ilość danych wysyłanych z maszyny programistycznej do środowiska na żywo. Przesłanie całego pliku .war zajmuje ponad dziesięć minut, podczas gdy rsync zajmuje kilka sekund.

Złe rzeczy dotyczące tego podejścia:

Podczas działania rsync kontekst aplikacji jest restartowany, ponieważ pliki są aktualizowane. W idealnej sytuacji ponowne uruchomienie powinno nastąpić po zakończeniu rsync, a nie wtedy, gdy jeszcze działa.Ponowne uruchomienie serwera aplikacji powoduje około dwóch minut przestoju.

Chciałbym znaleźć proces wdrażania o następujących właściwościach:

Minimalny czas przestoju podczas procesu wdrażania.Minimalny czas przesyłania danych.Jeśli proces wdrażania jest specyficzny dla serwera aplikacji, serwer aplikacji musi być open-source.

Pytanie:

Biorąc pod uwagę określone wymagania, jaki jest optymalny proces wdrażania?

questionAnswers(18)

yourAnswerToTheQuestion