Обновление только код
Если вы просто обновляете код приложения, пассажир должен позволить вам сделать это, не пропуская удар. Однако это не защитит вас, если обновление пойдет не так, для этого вам следует рассмотреть возможность использования двух или более веб-серверов с балансировкой нагрузки, которые можно обновлять по отдельности в циклическом режиме.
Обновление базы данных
Как пользователь, я бы предпочел видеть страницу "не работает", чем мой браузер вращается в течение 10 секунд. Если вы объясните, что время простоя будет порядка нескольких секунд, и установите автоматическое обновление страницы.
Если вы непреклонны в отношении отсутствия простоя при обновлении базы данных, у вас есть несколько вариантов:
Вы можете реорганизовать базу данных таким образом, чтобы сохранить действующую старую схему. Это означает, что вы можете сохранить две версии вашего приложения в одной базе данных и со временем перейти на новую схему. Есть много статей о рефакторинге баз данных, большинство из которых выступают за использование триггеров / и т. Д. Для достижения желаемого результата. Лично я думаю, что это много усилий, а не много вознаграждения.
В зависимости от вашего приложения вы можете быть сильно склонны к чтению и записи, что означает, что вы можете показать страницу «обслуживания» для некэшированных данных при обновлении базы данных (именно так Facebook обновляет свою базу данных). Это еще более эффективно, если большая часть ваших данных хранится в memcached или redis. В качестве альтернативы вы можете переключиться на ведомое устройство только для чтения базы данных и отключить любые действия записи.
Надеюсь, это поможет!