Лучшие практики для развертывания веб-приложений Java с минимальным временем простоя?

При развертывании большого веб-приложения Java (> 100 МБ .war) в настоящее время я использую следующий процесс развертывания:

Файл приложения .war расширяется локально на компьютере разработчика.Расширенное приложение rsync: ed из машины разработки в живую среду.Сервер приложений в рабочей среде перезапускается после rsync. Этот шаг не является строго необходимым, но я обнаружил, что перезапуск сервера приложений при развертывании позволяет избежать «java.lang.OutOfMemoryError: PermGen space» из-за частой загрузки классов.

Хорошие вещи об этом подходе:

Функция rsync минимизирует объем данных, отправляемых с компьютера разработчика в оперативную среду. Загрузка всего файла .war занимает более десяти минут, тогда как rsync занимает пару секунд.

Плохие вещи об этом подходе:

Во время работы rsync контекст приложения перезапускается, поскольку файлы обновляются. В идеале перезапуск должен произойти после завершения rsync, а не когда он все еще работает.Перезапуск сервера приложений вызывает примерно две минуты простоя.

Я хотел бы найти процесс развертывания со следующими свойствами:

Минимальное время простоя во время процесса развертывания.Минимальное время, затраченное на загрузку данных.Если процесс развертывания зависит от сервера приложений, то сервер приложений должен быть открытым.

Вопрос:

Учитывая заявленные требования, каков оптимальный процесс развертывания?

Ответы на вопрос(18)

Ваш ответ на вопрос