Migrazione DB e slot di distribuzione di Azure


15

Sto pianificando di inviare una nuova applicazione Web a un servizio app Web di Azure (ex sito Web di Azure). Mi piacerebbe utilizzare gli slot di distribuzione per poter testare la mia distribuzione prima di portarla in produzione. Va tutto bene finché non è richiesta alcuna modifica dello schema DB. Ma se c'è un cambio di schema non posso avere due versioni di software che funzionano sulla stessa versione di db. Dal momento che sto usando EF Migrations, la spinta nello slot di gestione temporanea comporterebbe immediatamente un aggiornamento del DB all'ultima versione.

Quindi la mia domanda è, se c'è qualche uso di slot di distribuzione quando è richiesta una migrazione db?

Come è fatto per i grandi fornitori SaaS. Stanno eseguendo immediatamente una migrazione del DB con la nuova versione? Ciò causerebbe sicuramente dei tempi di inattività.

Posso solo pensare a soluzioni piuttosto complesse a questo problema, c'è qualcosa di semplice?


Quindi non hai un database di sviluppo?
JeffO

Sì, abbiamo un sistema di sviluppo e controllo qualità. Il sistema sopra descritto è a scopo di produzione.
Sam7,

@ Sam7 sei riuscito a trovare una soluzione a questo problema? Saluti
WestDiscGolf,

Temo di no. Al momento stiamo testando le modifiche alla migrazione in un ambiente separato.
Sam7,

@ Sam7: penso che tu possa gestirlo da un file .config separato con una propria stringa di connessione al tuo db. ma hai ragione, quando distribuisci dallo stage alla produzione, il vantaggio di un rollback non funziona più. le modifiche al db verranno applicate immediatamente. sono curioso di trovare una soluzione nel prossimo futuro ...
Roger S.

Risposte:


3

Sono possibili versioni a zero tempi di inattività usando gli slot del servizio app di Azure e un singolo database condiviso da gestione temporanea e produzione, ma è necessario assicurarsi che tutte le modifiche al database siano compatibili con le versioni precedenti, in modo che le versioni correnti e nuove dell'app Web possano essere eseguite contemporaneamente in gli spazi di stadiazione e produzione.

Alcune regole che assicurano che funzioni:

  • Qualsiasi nuova colonna del database deve essere nullable o avere valori predefiniti
  • La ridenominazione delle colonne non è consentita
  • Eliminare le colonne non è consentito

Quando è necessario apportare modifiche distruttive, come rinominare o eliminare le colonne, sono necessarie 2 versioni per fare ciò:

  1. È necessario rilasciare la nuova versione dell'app Web, che rimuove la dipendenza dalle colonne rinominate / eliminate
  2. Viene rilasciata una versione aggiuntiva che esegue le modifiche distruttive

Anche se questo sembra un po 'complicato, in pratica probabilmente non apporterai cambiamenti distruttivi molto spesso.


0

hai esaminato gli elementi di configurazione specifici dello slot? In WebApp / Impostazioni / Impostazioni applicazione è possibile specificare le impostazioni per l'app Web ma anche definire se si applica solo a questo slot.

Pertanto, è possibile disporre di una stringa di connessione specifica per lo slot di gestione temporanea e applicare la migrazione anche agli slot di scambio.


2
Ciò va contro la mia idea di far funzionare il sito di staging dallo stesso set di dati (-> database) della produzione.
Sam7,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.