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?