Це залежатиме від змін, які ви вносите, як пропонує Ентенду. Яка частка оновлень коду може бути запущена без помилок, якщо база даних ще не оновлена? Для всього, що не залежить від оновлень бази даних (і, можливо, ви можете трохи змінити процес розробки, щоб зробити це більш поширеним), насправді нічого особливого робити не потрібно. Я припускаю, що ви хочете робити розгортання з мінімальним простоєм, інакше це займе лише деякі основні операції синхронізації. У цьому випадку завжди знайдеться вікно часу з небажаними ефектами (навіть якщо сайт просто у режимі лише для читання), але я думаю, що це може бути досить мало часу.
Ви можете виконати основну оптимізацію, наприклад, встановити "новий" каталог на кожному сервері заздалегідь, а потім перемкнути їх у всьому, щоб одночасно вказувати на новий каталог (можливо, використовуючи посилання, як у відповіді Ентеду), щоб ви могли отримати все сервери перейшли на нові файли протягом 5-10 секунд.
Це залишає питання оновлення бази даних. Якщо вони виглядають лише з одного сервера, ви можете перевести інших в режим технічного обслуговування або налаштувати балансир навантаження, щоб не використовувати їх, поки це відбувається. Звичайно, якщо їх не вдається зробити під час активних користувачів на сайті, вам просто потрібно буде мати все в режимі обслуговування, але для простих оновлень це можна зробити приблизно за 30 секунд або менше.
Можливо, варто мати різні сценарії розгортання для різних типів змін, тому ви можете запустити мінімально необхідний процес, будь то просто копіювання файлів, запуск невеликого оновлення бази даних або велика зміна бази даних.
Якщо ви можете оптимізувати оновлення файлів і баз даних і подивитися, чи є прості зміни, які ви можете внести до способу розробки, що може вас зблизити, але я не знаю, чи щось із цього вам нове :)