All’interno di un’organizzazione IT, le pratiche di release management hanno l’obiettivo di controllare e presidiare tutte le fasi di lavorazione del codice che portano al rilascio finale di una data versione del software. Queste fasi, nell’ambito del ciclo di sviluppo software (SDLC – software development lifecycle), includono la progettazione, quindi la pianificazione delle funzionalità e degli aggiornamenti che dovranno caratterizzare il rilascio software, e le fasi di sviluppo, testing, deployment e manutenzione della software release. Il processo di release management coordina le attività di sviluppo del codice con le operation IT per far in modo che, al momento del rilascio di un software in produzione, o della distribuzione di una app agli utenti finali, il codice risulti stabile, il più possibile privo di bug e difetti, e sappia rispondere ai requisiti definiti in funzione delle priorità e obiettivi di business.
Cos’è il release management
Il Release Management è il processo attraverso il quale si pianifica, programma, testa e distribuisce un servizio, una applicazione o componente dell’infrastruttura IT. Coinvolge sia il rilascio di nuovi oggetti sia gli aggiornati. Questa pratica serve a ridurre al minimo i rischi, garantire la qualità del prodotto e a mantenere la compliance, sia normativa sia di sicurezza. A tutti gli effetti si tratta di una attività che rientra nell’area di influenza DevSecOps, visto che richiede di coordinare le attività di sviluppo del codice con le altre attività informatiche per garantire la sicurezza al momento del rilascio.
Le attività da coordinare all’atto del rilascio di un software o della pubblicazione di una App sono infatti numerose. Senza dubbio bisogna verificare che il codice sia stabile, privo di bug e che non introduca problematiche di sicurezza, ma è necessario anche monitorarne le prestazioni, assicurarsi che la distribuzione avvenga nei tempi e con le modalità previste e che l’interazione con gli altri strumenti non crei problematiche impreviste.
Qual è il processo della gestione del release
Il processo di gestione del release comprende l’organizzazione di tutte le fasi del ciclo di vita di una versione del software, dallo sviluppo alla distribuzione, includendo anche gli aspetti organizzativi e gestionali che in molti casi rimangono fuori dai tavoli strettamente tecnici più orientati alla costruzione del codice e al suo test. Si tratta di una disciplina relativamente nuova, che si è resa necessaria negli ultimi anni con l’affermarsi di pratiche di sviluppo in cui le release sono sempre più agili e frequenti.
Proprio perché il suo obiettivo è di seguire ciascuna release dall’origine alla fine del ciclo di vita, in un ipotetico ciclo di release management possiamo identificare come primo passo proprio quello della raccolta di richieste di cambiamento. Ecco come si presenta in modo schematico:
Release management framework
Per poter costruire un sistema di release management in grado di funzionare e portare valore aggiunto all’interno del processo di sviluppo del software è indispensabile partire da un presupposto iniziale, comune per tutti i contesti in cui l’agilità è un requisito fondamentale: maggiore è la tempestività richiesta, più definite, precise e circostanziate devono essere le procedure gestionali e organizzative. Un buon relase management framework, insomma, deve poter supportare il cambiamento continuo, garantire la flessibilità necessaria e rendere il processo di release il più possibile automatizzato in modo da potersi applicare ai paradigmi dello sviluppo moderno senza introdurre eccessivi overhead ma mantenendo una struttura replicabile e funzionale.
Ecco un esempio di release management framework:
Trasformazione digitale: servono pratiche di release management più agili
La digital transformation, attraverso l’affermazione di paradigmi IT come il cloud, ha cambiato nel profondo il modo di operare delle imprese sul mercato, al punto che oggi il software occupa ormai un ruolo cruciale in qualunque attività di business. Non solo, ma la pressione competitiva impone oggi a ciascuna azienda di differenziare i propri prodotti e servizi, migliorando di continuo la qualità, le funzionalità e la user experience delle applicazioni che dipendenti, clienti, consumatori utilizzano quotidianamente per interagire con il brand attraverso vari canali e touchpoint (negozi fisici, web, mobile, reti sociali, e-mail). Di conseguenza, oggi, per soddisfare le esigenze di tali utenti, occorre rilasciare il software con maggior rapidità e frequenza, accelerando necessariamente il processo di release management.
Come velocizzare il release management con il DevOps
Nonostante la crescente complessità raggiunta da applicazioni e servizi digitali e la necessità di accelerare il processo di release management, è fondamentale, come ricordato, mantenere elevata anche la qualità del software. Ciò però finisce per diventare insostenibile per quelle organizzazioni IT che ancora gestiscono il release management attraverso un approccio tradizionale e sequenziale, come quello ‘waterfall’. Quest’ultimo risulta troppo lento e, soprattutto, non possiede meccanismi di feedback e correzione degli errori tra una fase e l’altra (analisi dei requisiti, design, implementazione, integrazione e testing, deployment, manutenzione) del SDLC, prevedendo il testing solo al termine del processo di sviluppo.
In tali contesti, una metodologia come il DevOps è in grado di generare automazione e agilità nel processo di release management, rispondendo alle moderne esigenze di sviluppo e distribuzione del software.
Paradigma DevOps: i vantaggi di CI/CD nel release management
Quando correttamente implementato in un’organizzazione, il modello DevOps permette di automatizzare le fasi di build, test e deployment del codice, riducendo tempi e costi di rilascio, e accelerando la velocità e frequenza di distribuzione delle nuove versioni, senza per questo incidere negativamente sulla qualità e l’affidabilità del software che è stato sviluppato.
Al cuore del processo di release management che DevOps rende possibile c’è la pratica di sviluppo e distribuzione CI/CD (continuous integration/continuous delivery/continuous deployment), che, in sostanza, ha la funzione di superare i tipici problemi d’integrazione (“integration hell”) a cui si va incontro applicando approcci classici come quello waterfall.
Come funziona CI/CD
Nella pratica CI/CD, ciascuno sviluppatore, una volta creato il proprio codice, lo deposita in un repository comune, dove viene integrato in automatico (CI) con le porzioni di codice (feature branch) sviluppate dagli altri membri del team, tramite la creazione di una build, che contiene tutte le modifiche, e viene subito sottoposta a test automatizzato, per l’identificazione immediata di eventuali bug e difetti di funzionamento. Quando tale automazione viene estesa, dall’ambiente di sviluppo e test, anche a quello di produzione, si parla anche di distribuzione continua e deployment continuo (CD), e della implementazione di una completa pipeline CI/CD.
Un approccio fondamentale per la tutela finale di tempi, costi, qualità e dell’intero processo di business.