Będzie to zależeć od wprowadzanych zmian, jak sugeruje Entendu. Jaką część aktualizacji kodu można uruchomić bez powodowania błędów, jeśli baza danych nie jest jeszcze zaktualizowana? W przypadku wszystkiego, co nie zależy od aktualizacji bazy danych (a być może możesz nieco zmienić proces programowania, aby był bardziej powszechny), tak naprawdę nie ma nic specjalnego do roboty. Zakładam, że chcesz wykonywać wdrożenia przy minimalnym przestoju, w przeciwnym razie wystarczyłoby kilka podstawowych operacji synchronizacji. W takim przypadku zawsze będzie trochę czasu z niepożądanymi efektami (nawet jeśli strona ma tylko tryb do odczytu), ale sądzę, że przez większość czasu może być dość mała.
Możesz przeprowadzić podstawową optymalizację, na przykład skonfigurować „nowy” katalog na każdym serwerze z wyprzedzeniem, a następnie przełączyć je na wszystkie, aby wskazać nowy katalog w tym samym czasie (być może korzystając z dowiązań symbolicznych jak w odpowiedzi Entendu), aby uzyskać wszystkie serwery przełączyły się na nowe pliki w ciągu 5-10 sekund.
Pozostawia to problem aktualizacji bazy danych. Jeśli są to czynności, które należy wykonać tylko z jednego serwera, możesz ustawić inne w trybie konserwacji lub wyregulować moduł równoważenia obciążenia, aby nie używać ich w tym czasie. Oczywiście, jeśli nie można tego zrobić, gdy użytkownicy są aktywni w witrynie, wystarczy mieć wszystko w trybie konserwacji, ale w przypadku prostych aktualizacji może to być coś, co można zrobić w około 30 sekund lub krócej.
Być może warto mieć różne skrypty wdrażania dla różnych typów zmian, abyś mógł uruchomić minimalny wymagany proces, czy to tylko kopiowanie plików, uruchomienie małej aktualizacji bazy danych, czy dokonanie poważnej zmiany bazy danych.
Jeśli możesz zoptymalizować aktualizacje plików i baz danych i sprawdzić, czy istnieją proste zmiany, które możesz wprowadzić w sposobie opracowywania, może cię to przybliżyć, ale nie wiem, czy coś takiego jest dla ciebie nowe :)