Ich plane, eine neue Webanwendung auf einen Azure Web App-Dienst (ehemalige Azure-Website) zu übertragen. Ich möchte die Bereitstellungssteckplätze nutzen, um meine Bereitstellung zu testen, bevor sie in die Produktion übertragen wird. Das ist alles in Ordnung, solange keine Änderung des DB-Schemas erforderlich ist. Bei einer Schemaänderung können jedoch nicht zwei Softwareversionen auf derselben Datenbankversion ausgeführt werden. Da ich EF Migrations verwende, würde der Push auf den Staging-Slot sofort zu einem DB-Update auf die neueste Version führen.
Meine Frage ist also, ob Bereitstellungs-Slots verwendet werden, wenn eine DB-Migration erforderlich ist.
Wie geht das bei großen SaaS-Anbietern? Führen sie mit der neuen Version sofort eine DB-Migration durch? Das würde sicherlich zu Ausfallzeiten führen.
Ich kann mir nur ziemlich komplexe Lösungen für dieses Problem vorstellen. Gibt es etwas Einfaches?
Antworten:
Ausfallsichere Releases mit Azure App Service-Slots und einer von Staging und Production gemeinsam genutzten Datenbank sind möglich. Sie müssen jedoch sicherstellen, dass alle Datenbankänderungen abwärtskompatibel sind, damit die aktuelle und die neue Version der Webanwendung gleichzeitig ausgeführt werden können die Staging- und Production-Slots.
Einige Regeln, die sicherstellen, dass dies funktioniert:
Wenn Sie destruktive Änderungen vornehmen müssen, z. B. das Umbenennen oder Löschen von Spalten, benötigen Sie zwei Releases, um dies zu tun:
Das klingt zwar etwas kompliziert, aber in der Praxis werden Sie wahrscheinlich nicht sehr oft destruktive Änderungen vornehmen.
quelle
Haben Sie sich die slotspezifischen Konfigurationselemente angesehen? Unter WebApp / Einstellungen / Anwendungseinstellungen können Sie Einstellungen für die Web-App vornehmen, aber auch festlegen, ob diese nur für diesen Slot gilt.
Sie können daher eine slotspezifische Verbindungszeichenfolge für Ihren Staging-Slot verwenden und die Migration auch auf das Austauschen von Slots anwenden.
quelle