Ad un certo punto della tua carriera, se non l'hai già fatto, sarai coinvolto in un rilascio software monolitico, cioè un rilascio software con interdipendenze e bug ostinati che richiede la presenza dell'intero team 24 ore su 24. Per non parlare del fatto che, una volta in produzione, probabilmente richiederà diverse patch.
Il codice di rilascio, cioè la il rilascio di software, è un forte barometro dell'agilità per gli sviluppatori di software. Ogni sforzo teso a velocizzare la pianificazione, la codifica e i test è inutile se il rilascio non è un processo fluido. Ecco perché i team Agile e DevOps si avvalgono dell'automazione, riuniscono sviluppo e operazioni all'inizio della fase di sviluppo, mettono in pratica la continuous integration e risolvono immediatamente i difetti.
Mantenere il codice in uno stato di rilascio è la caratteristica distintiva dello sviluppo Agile. Tutta la pianificazione Lean e lo sviluppo iterativo del mondo saranno inutili se non consentono di rilasciare il codice nel momento in cui decidi che è pronto.
I rilasci software eccellenti iniziano con un'architettura modulare
In qualsiasi programma software, è preferibile effettuare rilasci software in modo facile e con una frequenza elevata. Un team può rendere il rilascio una parte naturale della propria cultura Agile, creando un'architettura modulare (o effettuandone il refactoring). Invece di avere una grande applicazione (come il monolite sopra menzionato), all'inizio del programma modularizzalo in più elementi. Raggruppa funzioni simili in applicazioni o componenti più piccoli e stabilisci contratti relativi alle API chiari tra ogni applicazione e componente. Tali API possono essere testate automaticamente con ogni build per garantire la compatibilità e ridurre i rischi nel rilascio software.
In un'architettura modulare non occorre rilasciare l'intero stack software in una versione "in stile big bang" e i contratti relativi alle API semplificano l'aggiornamento dei componenti e garantiscono la compatibilità tra le versioni. In poche parole, i rilasci software modulari richiedono un minor numero di parti dinamiche e questo si traduce in rilasci o più semplici.
I rilasci software eccellenti iniziano con un'architettura modulare e sono potenziati da rapporti solidi
Lo sviluppo software raramente avviene nel vuoto. In effetti, uno sviluppo software eccellente coinvolge l'intero team, dalla gestione del prodotto alle operazioni. Il team operativo, ad esempio, ha un ruolo chiave nella distribuzione del software in produzione poiché fa in modo che il software raggiunga gli utenti finali.
I team di sviluppo possono contribuire a informare e potenziare i team operativi con queste tecniche:
- Rendi chiara la distinta base per ogni rilascio software. I team operativi non sempre hanno lo stesso livello di contesto per il rilascio di cui dispone il team di sviluppo.
- Per ogni ticket risolto nel rilascio, fornisci un link che riporti allo strumento di monitoraggio dei ticket e al sistema di controllo del codice sorgente, in modo che il team operativo disponga dello stesso livello di contesto in caso di problemi durante la distribuzione.
- A volte si verificano problemi quando si invia il codice dall'ambiente di sviluppo a quello di staging. Gestiscili, poiché potrebbero ripresentarsi durante l'invio in produzione.
- Possono verificarsi problemi di distribuzione, quindi offri sempre al team operativo un percorso di escalation chiaro per risolverli in modo fluido.
I team operativi possono fornire assistenza alle controparti nello sviluppo con questi suggerimenti:
- Quando emergono problemi in produzione, prenditi il tempo necessario per comprendere le cause primarie e le soluzioni. In questo modo potrai evitarli, o gestirli meglio, in futuro.
- Esegui la migrazione dei dati di configurazione dalla produzione agli ambienti di staging e sviluppo per evitare discrepanze rispetto alla configurazione.
Mentre il codice migra dallo sviluppo allo staging fino alla produzione, la configurazione chiave e i dati utente migrano esattamente nel modo opposto: dalla produzione allo staging fino allo sviluppo. Questa relazione bidirezionale è utile nell'ambiente di sviluppo per modellare da vicino l'ambiente di produzione. Ciò determina una riduzione dei bug e delle sorprese il giorno del rilascio.
I rilasci software eccellenti sono semplici da distribuire
Automatizza, automatizza e automatizza di nuovo!
L'automazione di un rilascio software è il modo più indicato per migliorare una cultura dei rilasci. Se il rilascio di software non è automatizzato, inizia ad automatizzare il rilascio di software in un ambiente di staging. Quando tutti potranno apprezzarne la semplicità, il passo naturale successivo sarà quello di automatizzare anche le distribuzioni di produzione.
Se i rilasci sono difficili, esercitati effettuando rilasci software frequenti, anche se si tratta solo di staging. Se il team di sviluppo percepisce le criticità del rilascio, l'innovazione sarà più semplice (e automatizzata).
I test automatizzati e la continuous integration sono discipline chiave alla base di rilasci eccellenti. Assicurati che i tempi di compilazione e i tempi di test siano i più brevi possibile e ricorda che le build facili da convalidare sono più facili da rilasciare. Questo perché il ciclo di convalida segue più da vicino il team.
I rilasci software eccellenti sono strepitosi!
Mantenere il codice in uno stato rilasciabile è la caratteristica distintiva dello sviluppo Agile.
A nostro avviso i rilasci software piccoli e frequenti sono più facili da gestire per le nostre proprietà SaaS. Per i prodotti scaricabili, una stretta collaborazione tra team di sviluppo, operazioni e progettazione di build fa miracoli. Questi gruppi dovrebbero collaborare per automatizzare i rilasci software e adattare in modo proattivo l'automazione alle modifiche imminenti ai prodotti. Molti team di Atlassian distribuiscono automaticamente ogni build di branch principale riuscita in un ambiente di test. Quando è il momento di promuovere un rilascio software in staging o di rilasciare il software ai clienti, questi team possono attivare l'automazione della distribuzione premendo semplicemente un pulsante.
In qualità di sviluppatori di software, un rilascio software dovrebbe essere il punto saliente del nostro ciclo di innovazione. I clienti interagiscono con il codice che abbiamo scritto e forniscono il loro feedback. Proprio così: quando i rilasci diventano un aspetto naturale della tua giornata di lavoro, portare il codice in produzione è più facile e potrai dire con soddisfazione: "Questo è il mio codice!"
Inizia gratuitamente con il modello di pianificazione dei progetti DevOps
Sviluppa, distribuisci e gestisci le applicazioni con un approccio agli strumenti aperto.