Su Heroku, non appena si preme il nuovo codice, le istanze di pubblicazione Web vengono riavviate ... anche se le aggiunte/modifiche dello schema del database sottostante (tramite syncdb o migrazione a sud) non sono state ancora applicate.Su Heroku, c'è un pericolo in una migrazione di Django syncdb/South dopo che l'istanza è già stata riavviata con il codice del modello modificato?
In molti casi, questo potrebbe solo causare errori innocui e il syncdb/migrazione viene eseguito subito dopo. Ma sono preoccupato che in alcuni casi, il nuovo codice possa semiadavoro apportare modifiche inaspettate nel database di pre-migrazione.
Qual è il modo giusto per essere sicuri contro questo rischio?
Una tecnica potrebbe essere quella di aggiungere syncdb/migrate al Procfile in modo che venga eseguito prima del riavvio del web. Ma, nel caso di più istanze, o forse anche di un caso in cui l'istanza di codice precedente viene lasciata in esecuzione fino al momento in cui è nota l'unica istanza di codice nuovo, c'è ancora una variante del problema in cui il codice è parlando con un DB con uno schema non corrispondente.
Esiste una funzionalità di "sospensione di tutte le istanze Web" (o best practice comune) per consentire la migrazione completa senza traffico web?
O sono eccessivamente preoccupato per un rischio trascurabile nella pratica?
+1 ottima domanda. Ho esattamente la stessa domanda e credo che questo sia un rischio serio che deve essere evitato. Se syncdb/migrate va bene, il tuo sito sarà inattivo per meno di un minuto. Ma se fallisce per qualsiasi motivo, il tuo sito sarà inattivo finché non lo risolverai ... – Spike
Ho lo stesso problema. In realtà è accaduto che il mio sito fosse inattivo, perché la mia migrazione verso sud non ha avuto successo. Fortunatamente, sono stato in grado di eseguire il rollback delle modifiche utilizzando il comando "heroku rollback". – duduklein
Si consiglia di un'istanza di gestione temporanea per "mettere in pratica" la migrazione prima di tentarla sul proprio sito di produzione effettivo. http://devcenter.heroku.com/articles/multiple-environments –