Существует несколько тактик, которые вы можете использовать - в зависимости от времени / ресурсов, которые вы готовы выделить на обновление.
Возможно, в зависимости от того, как вы выполняете миграцию, это можно сделать с абсолютно нулевым временем простоя.
Чем сложнее ваше приложение / сайт, тем сложнее может быть стратегия миграции, если вы не хотите простоев.
Мы достигли нулевого времени простоя с помощью:
- Настройка новых серверов с новой версией сайта и базы данных.
- Изменение балансировки нагрузки для разделения трафика на два пула new-app и old-app.
- Настройка балансировщиков нагрузки начинает отправку трафика на серверы новых приложений, но сохраняет существующие сеансы на серверах старых приложений
- Новые сеансы в новом приложении проверяют, были ли перенесены данные клиента, а если нет - быстро это делает.
- Постепенное отключение серверов «старого приложения» при снижении нагрузки, обновление до нового приложения и добавление в пул балансировки нагрузки нового приложения.
- По окончании сеансов данные о клиентах переносятся в новую базу данных.
- Если позволяет загрузка, перенесите неактивные данные о клиентах в новую базу данных.
Конечно, это более сложно - поскольку нам нужно было поддерживать доступ к данным клиентов в двух средах и постепенно переходить.
Это позволяет нам откатить изменения, если будут замечены некоторые проблемы - например, чрезмерное использование ЦП или памяти на одном из серверов новых приложений.
Для небольшого сайта, где у вас нет бюджета на дополнительные серверы, вы можете достичь этого, просто используя несколько IP-адресов, или какую-либо форму внутреннего программного обеспечения для балансировки нагрузки для перенаправления запросов на старые, или новый сайт. Это может еще больше усложнить ситуацию.
Если вы не можете запустить старое приложение и новое приложение из одного и того же хранилища данных (серверные веб-службы, база данных и т. Д.) - тогда ваши приложения должны будут знать, что им потребуется синхронизировать данные между старыми / new - например, при сохранении / обновлении данных о клиентах запись должна происходить в обоих местах.