Это будет зависеть от изменений, которые вы делаете, как предлагает Entendu. Какую долю обновлений кода можно запускать без ошибок, если база данных еще не обновлена? Для всего, что не зависит от обновлений базы данных (и, возможно, вы можете немного изменить процесс разработки, чтобы сделать это более распространенным), на самом деле ничего особенного делать не приходится. Я предполагаю, что вы хотите выполнять развертывание с минимальным временем простоя, в противном случае это просто потребует некоторых основных операций синхронизации. В этом случае всегда будет какое-то время с нежелательными эффектами (даже если сайт просто находится в режиме только для чтения), но я думаю, что большую часть времени он может быть довольно небольшим.
Вы можете выполнить базовую оптимизацию, например, заранее установить «новый» каталог на каждом сервере, а затем переключить их все, чтобы одновременно указывать на новый каталог (возможно, используя символические ссылки, как в ответе Entendu), чтобы вы могли получить все серверы переключаются на новые файлы в течение 5-10 секунд.
Это оставляет проблему обновлений базы данных. Если они должны выполняться только с одного сервера, вы можете перевести остальные в режим обслуживания или настроить балансировщик нагрузки, чтобы они не использовались, пока это происходит. Конечно, если они не могут быть выполнены, пока пользователи активны на сайте, вам просто нужно, чтобы все было в режиме обслуживания, но для простых обновлений это может быть то, что вы можете сделать за 30 секунд или меньше.
Возможно, стоит иметь разные сценарии развертывания для разных типов изменений, поэтому вы можете запустить минимальный необходимый процесс, будь то копирование файлов, небольшое обновление базы данных или значительное изменение базы данных.
Если вы можете оптимизировать обновления файлов и баз данных и посмотреть, есть ли какие-то простые изменения, которые вы можете внести в способ разработки, это может приблизить вас, но я не знаю, является ли что-то из этого новым для вас :)