Migrazione DB e slot di distribuzione di Azure

13

Sto pianificando di inviare una nuova applicazione Web a un servizio di app Web di Azure (ex sito Web di Azure). Mi piacerebbe utilizzare gli slot di distribuzione per poter testare la mia distribuzione prima di inviarla alla produzione. Tutto ciò va bene fino a quando non è richiesta alcuna modifica dello schema DB. Ma se c'è una modifica dello schema non posso avere due versioni del software che funzionano sulla stessa versione db. Dal momento che sto usando EF Migrations, la spinta verso lo slot di staging porterebbe immediatamente all'aggiornamento del DB all'ultima versione.

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

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

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

    
posta Sam7 01.04.2015 - 02:06
fonte

2 risposte

2

Le versioni Zero-downtime che utilizzano gli slot di Servizio app di Azure e un singolo database condiviso da Staging e Produzione sono possibili, ma è necessario assicurarsi che tutte le modifiche al database siano retrocompatibili, in modo che le versioni attuali e nuove dell'applicazione Web possano eseguire simultaneamente negli alloggiamenti di Staging e produzione.

Alcune regole che assicurano che funzioni:

  • Qualsiasi nuova colonna del database dovrebbe essere annullabile o avere valori predefiniti
  • Rinominare le colonne non è consentito
  • L'eliminazione di colonne non è consentita

Quando hai bisogno di apportare modifiche distruttive, come rinominare o rilasciare colonne, hai bisogno di 2 rilasci per fare questo:

  1. Dovrebbe essere rilasciata 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 farai cambiamenti distruttivi molto spesso.

    
risposta data 16.04.2018 - 10:44
fonte
0

hai guardato 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.

Potresti quindi avere una stringa di connessione specifica per lo slot per lo slot di gestione temporanea e applicare la migrazione anche agli slot di swap.

    
risposta data 10.05.2016 - 14:11
fonte