Intervenire sul ciclo di sviluppo del software per renderlo più efficiente e veloce, oggi, è sempre più importante per via dei cambiamenti del mercato, delle innovazioni nei processi digitali e delle esigenze di time-to-market. Lo sviluppo tradizionale e il deploy realizzati con la metodologia waterfall – ossia con fasi in cascata per la raccolta dei requisiti, lo sviluppo, i test ed il rilascio in produzione – non sono più in grado di portare il prodotto nelle mani degli utenti con la velocità richiesta. Il software e i relativi servizi rischiano di arrivare a destinazione troppo tardi, quando la finestra di opportunità per fare business è sfumata oppure sono cambiate le esigenze degli utenti.

Un ciclo di sviluppo del software integrato con le operation e gestito nella logica DevOps è oggi essenziale per portare avanti i progetti con la modalità agile, ossia introducendo funzionalità e aggiornamenti in modo incrementale, in accordo con le richieste e i feedback degli utenti. Modalità che, necessariamente, richiedono cicli di sviluppo e di deploy del software più rapidi ed automatizzati e, spesso e volentieri, il supporto di un di un partner dotato in grado di massimizzarne i benefici.

Vediamo qui in breve come ottenere questo risultato.


DevOps: l’automazione che velocizza il ciclo di sviluppo del software

Sintesi tra development e operation, DevOps raccoglie un insieme di pratiche metodologiche che, con il supporto di strumenti adeguati, abilita l’integrazione del ciclo di sviluppo del software con il deploy delle applicazioni, eliminando gran parte dei processi manuali che creano rallentamenti nei processi che vanno dalla scrittura del codice alla produzione. L’automazione, ottenuta integrando i tool utilizzati a supporto delle varie fasi, riduce drasticamente i tempi necessari all’esecuzione del ciclo oltre agli errori umani che potrebbero causare problematiche di qualità o di sicurezza.

Per funzionare, l’integrazione dei tool dev’essere accompagnata dalla speculare integrazione organizzativa tra i team di sviluppo e di operation. La cooperazione dei team è fondamentale per mettere a fattor comune tutte le informazioni disponibili, a cominciare dai feedback d’uso degli utenti finali. In questo modo, l’obiettivo delle persone coinvolte non è più limitato alla scrittura o alla messa in produzione software, ma diventa quello di soddisfare gli utenti finali e concorrere agli obiettivi di business aziendali.

DevOps presuppone quindi la presenza di team cooperanti, laddove nel passato ogni team ha lavorato in autonomia, con propri tool di supporto e dati a silos, da caricare e scaricare manualmente ad ogni avanzamento del ciclo di sviluppo del software. Con DevOps le diverse fasi del ciclo che conduce le applicazioni in produzione possono essere percorse molto più rapidamente. Lavorando in un contesto che non è non più isolato da specifiche riportate su carta o da ticket con richieste di modifica, gli sviluppatori possono scrivere codici più efficienti, ottimizzati e di qualità.


Il rapporto di DevOps con lo sviluppo agile e il deploy continuo

DevOps è la risposta alle esigenze create dallo sviluppo di progetti con metodologia agile, ossia ispirati ai principi del noto “Manifesto Agile” che nel 2001 ha definito un modello di sviluppo focalizzato sulla capacità di realizzare rilasci frequenti e in tempi brevi del software. La capacità d’essere veloci nello sviluppo richiede la scelta della metodologia agile più appropriata, attraverso framework come Scrum – che enfatizza gli aspetti di gestione di progetto legati a contesti in cui è difficile fare pianificazioni – oppure Kanban che rende esplicito il flusso di lavoro, consentendo di individuare le opportunità di miglioramento.

Questi framework aiutano i team di sviluppo a definire gli obiettivi e le priorità, quindi ad assegnare i compiti e identificare problemi. Rispetto ai metodi più tradizionali, le pratiche agili presuppongono la formazione di team di sviluppo piccoli, cross-funzionali e auto-organizzati, sviluppo iterativo e incrementale, pianificazione adattiva e coinvolgimento continuo degli utilizzatori nel ciclo di sviluppo del software. Altra caratteristica del ciclo di sviluppo software con metodologia DevOps è il supporto dell’integrazione continua (CI) e della distribuzione continua (CD). “CI” si traduce nella capacità di gestire i processi che servono all’aggiunta di nuovo codice e al testing su singole porzioni dell’applicazione in sviluppo in modo continuo e automatizzato. “CD” significa che è supportato in modo automatico e continuo anche il processo di messa in produzione del codice, previa la necessaria validazione o collaudo.

È in questo senso fondamentale l’evoluzione delle capacità di virtualizzazione dell’infrastruttura IT verso i concetti di software defined o infrastructure as a code, che permettono di affiancare i rilasci di nuovo codice con l’insieme di requisiti hardware e configurazioni utili al suo deploy. È in questo modo che agile, DevOps e le moderne infrastrutture IT on-premise ed in cloud concorrono ad accelerare i cicli di sviluppo software e al time-to-market delle applicazioni.