Abbiamo un sito web basato su Django abbastanza semplice per eseguire operazioni CRUD. Ho eseguito test e sviluppo localmente e poi ho controllato le versioni e le modifiche dello schema del database sul server live una volta terminato il test. Di recente abbiamo riscontrato un problema durante il rilascio di alcuni tipi di modifiche. Immaginate la seguente sequenza di eventi:Come aggiornare in modo sicuro un sito web in diretta
- utente apre un modulo web
- sito viene aggiornato per richiedere nuovo campo in questo modulo
- utente invia il modulo che hanno lavorato su
- Server restituisce un errore perché si aspettava di ricevere il nuovo campo aggiunto al passaggio 2
In che modo altri siti gestiscono questo tipo di problemi? Le mie idee:
- Portare il sito offline durante gli aggiornamenti. Questo non risolve il problema, perché un utente può avere un modulo Web aperto per un periodo di tempo infinito prima di inviarlo, ma dopo un certo periodo di tempo è improbabile che qualcuno possa inviare il modulo.
- Fare aggiornamenti automatici a tempi di traffico molto bassi. Ancora una volta questo non risolve il problema, ma il nostro sito non è così popolare e se avessimo fatto un aggiornamento a 3: 00a dubito che ci sarebbero stati molti utenti. Una preoccupazione con questa tecnica sono gli aggiornamenti automatici che non riescono.
- Moduli di versione in modo che il server riconosca che un modulo precedente è stato inviato e fornisce una risposta più user-friendly. Esistono strumenti automatici che potrebbero aiutare con questo?
Pensieri?
Il problema - l'utente invia il modulo durante l'aggiornamento - abbastanza comune da strizzare le mani? O è un ipotetico problema "potrebbe accadere un giorno"? –
@ S.Lott, non saremmo dei buoni programmatori se non ci preoccupassimo dei casi d'angolo. –
Penso che la vera domanda sia "Qual è un buon modo per aggiornare un sito web live?" – winsmith