Многопользовательский веб-сайт, отдельные базы данных - как развернуть обновления схемы / общих данных? - PullRequest
1 голос
/ 14 января 2012

У нас есть мультитенантная система с отдельной базой данных на каждого арендатора (но с той же схемой и кодом приложения).Как мы можем лучше всего развертывать обновления для арендаторов?Процесс развертывания автоматизирован, но мне не особо нравится переводить всю систему в автономный режим, пока какие-либо сценарии обновления выполняются для каждого владельца базы данных?(особенно если у одного арендатора возникли непредвиденные проблемы из-за данных в его системе - очевидно, что мы хотели бы избежать этого).

Какие стратегии люди успешно использовали для этого?Если бы вместо этого я запускал каждого арендатора на отдельном экземпляре веб-сайта, который обновлялся отдельно - было бы больше накладных расходов на обслуживание, но, возможно, больше гибкости в случае проблем при обновлении?Не уверен, что может быть менее болезненным в долгосрочной перспективе?Спасибо.

1 Ответ

2 голосов
/ 14 января 2012

Наш способ решения именно этой проблемы:

  • Имеется два экземпляра: один запускает старый код, другой - новый код
  • Начинайте (очевидно) со всех сайтов-арендаторов, указываядо старой версии
  • Цикл арендаторов (возможно, автоматически)
  • .... Скопировать базу данных во временную
  • .... Запустить обновление и скопировать копию БД
  • .... стирать, полоскать, повторять до успешного преобразования данных
  • .... тестировать новый код с временно преобразованной БД
  • .... удалить временную БД
  • .... Перевести сайт арендатора в автономный режим
  • .... Запустить обновление на реальной БД (это должно работать, если в последнюю минуту изменения не привели к новым проблемам)
  • .... Точка арендаторасайт к комбинации нового кода / преобразованной базы данных
  • Конечный цикл

До настоящего момента это работало довольно хорошо, фактически оно довольно часто спасало наш бекон: проблемы возникают с первымнесколько арендаторов, которые могут предложить исправление или два в новом коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...