Я не уверен, что это ответит на ваш вопрос, но я просто расскажу о процессе развертывания, который я использую или сталкиваюсь в нескольких проектах, которые я сделал.
Схоже с вами, я никогда не вспоминаю о полном передислокации или обновлении войны. В большинстве случаев мои обновления ограничены несколькими jsp-файлами, возможно, библиотекой, некоторыми файлами классов. Я могу управлять и определять, какие именно артефакты затронуты, и обычно мы упаковывали это обновление в zip-файл вместе со скриптом обновления. Я буду запускать скрипт обновления. Сценарий выполняет следующие действия:
- Резервное копирование файлов, которые будут перезаписаны, возможно, в папку с сегодняшними датой и временем.
- Распакуйте мои файлы
- Остановить сервер приложений
- Переместить файлы поверх
- Запустить сервер приложений
Если время простоя является проблемой, и обычно это так, мои проекты обычно представляют собой HA, даже если они не имеют общего состояния, но используют маршрутизатор, который обеспечивает маршрутизацию слипших сессий.
Еще одна вещь, которую мне любопытно было бы, зачем нуждаться в rsync? Вы должны знать, какие изменения необходимы, определяя их в своей среде подготовки / разработки, а не выполнять дельта-проверки в режиме реального времени. В большинстве случаев вам придется настроить rsync так, чтобы он все равно игнорировал файлы, например, определенные файлы свойств, которые определяют ресурсы, используемые производственным сервером, такие как соединение с базой данных, сервер smtp и т. Д.
Надеюсь, это полезно.