У нас есть веб-приложение asp.net/MVC2, размещенное на Amazon Windows IIS7, в которое я хотел бы развертывать обновления с минимальным временем простоя.
Основываясь на настройке IIS ARR с тремя сайтами, как описано здесь Нулевое время простоя загрузки / отката в IIS Я хотел бы придумать способ развертывания обновлений моей базы данных (MySQL на Amazon RDS) таким образом, чтобы минимизировать или исключить простои.
Кто-нибудь делает что-нибудь подобное? Приложение должно быть развернуто в базе данных правильной версии схемы, и у нас есть система, которая управляет этими изменениями во время развертывания.
Я могу представить себе использование ARR для изящного слива живого сайта и вызова вновь подготовленного сайта, одновременно выполняя миграции db и имея новое приложение, удерживающее обработку веб-запросов до тех пор, пока не будут выполнены изменения db, но это кажется очень трудным для координации времени и даже сложнее проверить, не говоря уже о проблеме тайм-аутов клиента, если процесс занимает больше времени, чем браузер хочет ждать.
Спасибо!
Ни у кого нет отличного ответа на это. Вы должны внести изменения в схему с обратной совместимостью, какими бы сложными они ни были.
Обычно это означает, что ваше приложение не может зависеть только от одной версии схемы, но должно иметь возможность поддерживать несколько схем во время перехода. (Ваши транзакции должны обновлять обе схемы и т. Д.)
Обратите внимание, что даже хранилища данных без схемы NoSQL не решают эту проблему, а требуют, чтобы вы решили ее во многом таким же образом: если у вас есть ключ с N значениями, и вам нужно добавить новое значение, вашему приложению потребуется чтобы иметь дело с возможностью того, что ключ еще не обновлен.
Удачи!