Una versione ben eseguita riguarda la pianificazione e la comunicazione. Quindi, prima di eseguire una versione, prendere in considerazione queste domande:
Quanto tempo richiederà il rilascio e ci sono dei rischi nel consentire alle persone di continuare a interfacciarsi con il mio prodotto mentre è in corso il rilascio? Se esiste un rischio per il sistema, prendere in considerazione la possibilità di disconnettere il sistema e di inserire un messaggio "Sistema in manutenzione attualmente in corso" al suo posto.
Ci sono clienti che potresti aver bisogno di comunicare in anticipo sul rilascio? Devo comunicare loro una possibile interruzione del servizio o un peggioramento delle prestazioni mentre è in corso il rilascio? Personalmente sbaglio sempre dal lato di comunicare eccessivamente e di dire a tutti i clienti di un'imminente finestra di rilascio o manutenzione su un blog pubblico o un luogo simile.
Quali sono i miei piani di emergenza se il rilascio dovesse andare storto? Ad esempio, se il rilascio non va a buon fine, dovremmo ripristinare e ripristinare il sistema in modo tale da ridurre al minimo ogni volta che siamo offline? E se è così, i passaggi per il rollback di una versione sono ben documentati? O dovrei avere le persone giuste a disposizione o a portata di mano per aiutare a risolvere i problemi che dovessero verificarsi. Personalmente, penso che il modo migliore per affrontare la pianificazione di qualsiasi versione sia quello di supporre che qualcosa andrà storto con la versione. In questo modo mi sono costretto a pensare in anticipo ad alcuni di questi problemi.
Successivamente, quando si tratta di eseguire una versione, uno dei modi migliori per assicurarsi che funzioni correttamente è esercitarsi, esercitarsi, esercitarsi e documentare tutto ciò che si incontra lungo la strada. Quindi, molto prima di distribuire il nuovo codice nella produzione, esercitarsi prima di distribuire il codice in un ambiente di gestione temporanea sicuro e correttamente sandbox. Avere la persona che sarà responsabile della distribuzione in produzione, eseguire la distribuzione di prova in stadiazione. Considera questa prova generale e comportati come faresti se fosse la cosa vera. Documenta tutto ciò che fai in ogni fase del processo; documenta ogni comando che esegui, qualsiasi codice SQL che esegui, qualsiasi file che modifichi e come li hai modificati e per ogni passaggio lungo la strada documenta ciò che ti aspetti di vedere se la procedura viene eseguita correttamente. Se e quando riscontri un problema di qualche tipo, documenta cosa hai fatto per risolverlo.
Quindi la distribuzione pratica è completa, controlla le tue note e vedi se riesci a perfezionare il processo per eliminare gli errori. Quindi ricominciare da capo . Continua ad esercitarti fino a quando l'esecuzione di una versione diventa ordinaria come seguendo un semplice foglio di istruzioni, come "accedi a questa macchina, esegui questo comando; quindi accedi al database ed esegui questo comando SQL; quindi ..."
Di seguito sono elencate le operazioni che un team di gestione delle operazioni o delle versioni può fare per facilitare l'esecuzione di una versione. Ma cosa può fare l'ingegneria per ridurre al minimo i rischi in una versione?
Mantenere i rilasci piccoli. In poche parole, più complesso è il set di modifiche al codice contenuto in una versione, più rischiosa sarà la versione. Favorisci il tuo team operativo pianificando di avere un numero maggiore di rilasci piccoli, anziché un numero inferiore di rilasci di grandi dimensioni nello stesso periodo di tempo.
Test, test, test. Non limitarti a testare il tuo codice nel tuo ambiente di QA, usa anche l'ambiente di staging per testare anche il tuo software. Spesso ci sono bug che hanno poco o nulla a che fare con il codice stesso, ma piuttosto hanno una causa principale che si trova nella configurazione dell'ambiente stesso (o in qualche mix dei due). Per trovare questi problemi è necessario testare il codice in un ambiente che rispecchi da vicino la produzione, ovvero la stadiazione.
Come ultima parola, a volte ciò che è più importante non è ciò che facciamo per evitare che le cose vadano male, ma è come ci comportiamo quando sbagliano. Pertanto, penso che sia importante costruire una cultura nella tua azienda attorno alla trasparenza operativa. Non cercare di nascondere problemi ai clienti, sii imminente. Usa Twitter attivamente per far sapere ai clienti se ci sono problemi di cui il tuo team operativo è attualmente a conoscenza e che sta lavorando per risolvere ( Lighthouse è fantastico in questo!). Prendi in considerazione la pubblicazione di una pagina "status" per il tuo servizio a cui i clienti possono fare riferimento per vedere se qualcosa non va ( TypePad ne offre un ottimo esempio). In conclusione, sempre errato sul lato della comunicazione eccessiva. I tuoi clienti ti ringrazieranno per questo.