Слоты миграции БД и развертывания Azure


15

Я планирую отправить новое веб-приложение в службу веб-приложений Azure (бывший веб-сайт Azure). Я хотел бы использовать слоты для развертывания, чтобы иметь возможность протестировать мое развертывание, прежде чем запускать его в производство. Это нормально, пока не требуется изменение схемы БД. Но если происходит изменение схемы, у меня не может быть двух версий программного обеспечения, работающих на одной и той же версии БД. Поскольку я использую EF Migrations, переход на промежуточный слот немедленно приведет к обновлению БД до последней версии.

Итак, мой вопрос, есть ли какое-либо использование слотов развертывания, когда требуется миграция БД?

Как это делается для крупных поставщиков SaaS. Выполняют ли они миграцию БД с новой версией? Это наверняка приведет к простоям.

Я могу только думать о довольно сложных решениях этой проблемы, есть что-нибудь простое?


Так у вас нет базы данных разработчиков?
JeffO

Да, у нас есть система разработки и контроля качества. Система, описанная выше, предназначена для производственных целей.
Sam7

@ Sam7 Вам удалось найти решение этой проблемы? Приветствия
WestDiscGolf

Боюсь, что нет. В настоящее время мы тестируем изменения миграции в отдельной среде.
Sam7

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

Ответы:


3

Возможны выпуски с нулевым временем простоя с использованием слотов службы приложений Azure и единой базы данных, совместно используемой Staging and Production - но вы должны убедиться, что все изменения базы данных обратно совместимы, чтобы текущая и новая версии веб-приложения могли работать одновременно в Постановка и производство игровых автоматов.

Некоторые правила, обеспечивающие это:

  • Любые новые столбцы базы данных должны быть обнуляемыми или иметь значения по умолчанию
  • Переименование столбцов не допускается
  • Удаление столбцов не допускается

Когда вам нужно внести деструктивные изменения, такие как переименование или удаление столбцов, вам нужно сделать 2 релиза:

  1. Должна быть выпущена новая версия веб-приложения, которая устраняет зависимость от переименованных / удаленных столбцов.
  2. Сделан дополнительный релиз, который выполняет деструктивные изменения

Хотя это звучит немного сложно, на практике вы, скорее всего, не будете часто вносить деструктивные изменения.


0

Вы смотрели на отдельные элементы конфигурации слота? В WebApp / «Настройки» / «Настройки приложения» вы можете указать настройки для веб-приложения, а также определить, относится ли оно только к этому слоту.

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


2
Это противоречит моей идее о том, чтобы промежуточный сайт работал с тем же набором данных (-> база данных), что и производственный.
Sam7
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.