Наилучшей практики для развертывания веб-приложений на Java с минимальным временем простоя?
при развертывании большого Java webapp (>100 МБ .война) в настоящее время я использую следующий процесс развертывания:
- приложение .файл war развертывается локально на машине разработки.
- расширенное приложение rsync:ed от машины разработки до живой среды.
- сервер приложений в реальной среде будет перезапущен после того, как rsync. Этот шаг не является строго необходимым, но я обнаружил, что перезапуск сервера приложений на развертывание избегает "Ява.ленг.OutOfMemoryError: PermGen space " из-за частой загрузки класса.
хорошие вещи об этом подходе:
- rsync минимизирует объем данных, отправленных с компьютера разработки в живую среду. Загрузка всего .файл war занимает более десяти минут, в то время как rsync занимает пару секунд.
плохие вещи об этом подходе:
- В то время как rsync работает контекст приложения перезапускается с момента обновления файлов. В идеале перезапуск должен произойти после завершения rsync, а не когда он все еще работает.
- перезапуск сервера приложений вызывает примерно две минуты простоя.
Я хотел бы найти процесс развертывания со следующими свойствами:
- минимальное время простоя во время процесса развертывания.
- минимальное время передачи данных.
- Если процесс развертывания конкретный сервер приложений, сервер приложений должен быть с открытым исходным кодом.
вопрос:
- учитывая заявленные требования, каков оптимальный процесс развертывания?
Comments