Una versione ben eseguita riguarda la pianificazione e la comunicazione. Quindi, prima di condurre una pubblicazione, prendi in considerazione queste domande:
-
Quanto è probabile che il rilascio sia lungo e ci sono dei rischi nel permettere alle persone di continuare a interfacciare con il mio prodotto mentre è in corso il rilascio? Se c'è un rischio per il sistema , considera di prendere il sistema offline e di inserire un messaggio "Sistema attualmente in fase di manutenzione" al suo posto.
-
Ci sono clienti che potrebbero essere tenuti a notificare in anticipo la versione? Devo comunicare loro una possibile interruzione del servizio o un peggioramento delle prestazioni durante il rilascio? Personalmente, sbaglio sempre dalla parte della comunicazione eccessiva e della comunicazione a tutti i clienti di una prossima versione o finestra di manutenzione su un blog pubblico o un luogo simile.
-
Quali sono i miei piani di emergenza nel caso in cui il rilascio non vada a buon fine? Ad esempio, se il rilascio non funziona correttamente dovremmo eseguire il rollback e ripristinare il sistema in modo da ridurre al minimo il tempo sono offline? E se sì, i passaggi per il rollback di una release sono ben documentati? O dovrei avere le persone giuste su chiamata o a portata di mano per assistere con i problemi di risoluzione dei problemi nel caso si presentassero. Personalmente, ritengo che il modo migliore per approcciare la pianificazione di qualsiasi release sia quello di presumere che qualcosa vada storto con il rilascio. In questo modo mi sono costretto a pensare prima su alcuni di questi problemi.
Inoltre, quando si tratta di eseguire una versione, uno dei modi migliori per assicurarti che funzioni senza intoppi è quello di esercitarsi, esercitarsi, esercitarsi e documentare tutto ciò che incontri lungo la strada . Quindi, con largo anticipo sull'implementazione del nuovo codice in produzione, esercitarsi a distribuire il codice in un ambiente di staging sicuro e correttamente sandboxed. Chiedere alla persona responsabile della distribuzione in produzione, eseguire la distribuzione del test alla messa in scena. Considera questa tua prova generale e comportati come faresti se fosse questa la cosa reale. Documenta tutto ciò che fai in ogni fase; documenta ogni comando che esegui, qualsiasi codice SQL che esegui, tutti i file che modifichi e come li hai modificati e per ogni passo lungo il percorso documenta ciò che ti aspetti di vedere se la procedura viene eseguita correttamente. Se e quando incontri un problema di qualche tipo, documenta cosa hai fatto per risolverlo.
Quindi la distribuzione pratica è completa, controlla le tue note e vedi se è possibile perfezionare il processo per eliminare gli errori. Quindi fai tutto da capo . Continuare a esercitarsi fino a quando l'esecuzione di un rilascio diventa di routine 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 del rilascio può fare per facilitare il corretto svolgimento del rilascio. Ma cosa può fare l'ingegneria per ridurre al minimo i rischi in una versione?
-
Mantiene le versioni piccole. In parole semplici, più complesso è il set di modifiche al codice contenuto da una release, più rischioso diventerà il rilascio. Le tue operazioni sono favorevoli, prevedendo di avere un maggior numero di piccole versioni, piuttosto che un numero minore di grandi versioni nello stesso periodo di tempo.
-
Test, test, test. non basta testare il codice nell'ambiente QA, utilizzare l'ambiente di staging per testare anche il software. Spesso ci sono bug che hanno poco o nulla a che fare con il codice stesso, ma hanno una causa alla radice che risiede nella configurazione dell'ambiente stesso (o in qualche mix dei due). Per trovare questi problemi è necessario testare il codice in un ambiente che rispecchia da vicino la produzione, ad esempio la gestione temporanea.
Come ultima parola, a volte ciò che è più importante non è ciò che facciamo per evitare che le cose vadano storte, ma è il modo in cui ci comportiamo quando sbagliano. Pertanto, penso che sia importante costruire una cultura nella tua azienda attorno alla trasparenza operativa. Non cercare di nascondere i problemi dei clienti, sii prossimo. Utilizza Twitter attivamente per far sapere ai clienti se ci sono problemi che il tuo team operativo è al corrente e che sta lavorando per risolvere ( Lighthouse è fantastico Questo!). Considera la pubblicazione di una pagina di "stato" per il tuo servizio che i clienti possono fare riferimento per vedere se qualcosa non va ( TypePad offre un ottimo esempio di questo) . Linea di fondo, errare sempre sul lato della comunicazione eccessiva. I tuoi clienti ti ringrazieranno per questo.