DevOps è un paradigma di sviluppo software di crescente diffusione nei reparti IT delle imprese. Questa metodologia si sta diffondendo grazie alla capacità di fornire benefici chiave: DevOps, automatizzando le fasi di build, test e deployment, permette non solo di ridurre i costi di rilascio del software, ma anche di accrescere velocità e frequenza dei rilasci stessi, senza compromessi in termini di qualità, affidabilità e solidità del codice sviluppato.
Definizione e origini di DevOps
Nel modello DevOps, contrazione delle parole ‘development’ (Dev) e ‘operations’ (Ops), ossia le squadre di professionisti che tradizionalmente formano il reparto IT, vengono costituiti feature team che, condividendo pratiche e principi di lavoro, e utilizzando determinati strumenti software lungo tutto il ciclo di sviluppo, contribuiscono a creare una pipeline di distribuzione del codice completamente automatizzata.
La metodologia DevOps viene illustrata per la prima volta nel 2009 alla O’Reilly Velocity Conference, da John Allspaw, software engineer, e Paul Hammond, web developer, all’epoca impiegati in Flickr, la piattaforma globale di gestione e condivisione immagini.
DevOps integra i metodi di sviluppo Agile e Lean Software Development (LSD) con una serie di altre pratiche, che estendono i concetti di agilità ed efficienza oltre il dominio dello sviluppo software, per arrivare a includere l’intero ciclo di sviluppo del codice (SDLC) e i sistemi IT necessari al funzionamento del codice stesso.
Cardini essenziali su cui è imperniato DevOps
Le colonne portanti di DevOps sono essenzialmente tre:
1) Automazione dell’infrastruttura
Adottando modalità di gestione dell’infrastruttura come “Infrastructure as Code” (IaC), è possibile automatizzare tramite script il deployment di tutto l’ambiente IT richiesto per la creazione e il funzionamento del codice: gli script eseguono in automatico la configurazione dell’hardware, dei sistemi operativi, della rete, di container e macchine virtuali. La modalità IaC permette di gestire in automatico anche le attività di testing, ad esempio configurando e standardizzando l’implementazione degli ambienti e automatizzando l’esecuzione dei test a livello end-to-end.
2) Sviluppo iterativo CI/CD (continuous integration/continuous delivery/continuous deployment)
Sul versante software development, la modalità di sviluppo CI/CD automatizza, accelera e razionalizza le attività di sviluppo, testing e deployment del codice applicativo, rendendo possibile la creazione di una pipeline di fornitura del software completamente integrata.
3) Controllo qualità e manutenzione sistemi
Attraverso DevOps, il controllo qualità tramite l’automazione dei test, ma anche l’aggiornamento del software, e la manutenzione dei sistemi IT sono assicurati di continuo e in automatico, lungo tutto il ciclo di sviluppo del codice. Ciò permette di migliorare la governance IT, nonostante la complessità del codice e l’aumento della velocità e della frequenza di rilascio di nuove versioni del software. Questo perché, come già accennato, attraverso il paradigma IaC è possibile automatizzare non solo il deployment iniziale dell’infrastruttura IT, ma anche le successive attività di controllo versione e manutenzione delle configurazioni di server e sistemi in ambienti di test e produzione che, altrimenti, andrebbero ogni volta gestite in modalità ‘manuale’.
DevOps, questione di cambiamento culturale
Parlando di tool di DevOps si fa riferimento a numerose categorie di strumenti, spesso open source, ciascuna dedicata a specifiche fasi del ciclo di sviluppo. Vi sono strumenti di controllo versione, come Git, che mantengono traccia di tutte le modifiche nella base di codice; server di automazione della pipeline come Jenkins; tool IaC come Ansible. Ma anche strumenti di monitoraggio continuo come Kibana, e software di orchestrazione di container come Kubernetes. Esistono poi piattaforme che consentono di organizzare e controllare tutti questi strumenti da un’unica console, come la DevOps Console di Mia-Platform.
Avere una strategia DevOps, tuttavia, non significa soltanto identificare e selezionare determinati strumenti e tecnologie di automazione dello sviluppo software e del deployment dell’infrastruttura IT.
Queste innovazioni tecnologiche, infatti, non sono sufficienti, se non si attua un reale cambiamento culturale, in grado di superare la tradizionale separazione di competenze e responsabilità tra i team, per abbracciare una modalità di lavoro in cui i nuovi strumenti servono a generare comunicazione tra i processi e collaborazione tra le persone.
I benefici e gli altri paradigmi basati su DevOps
Tra i benefici chiave che DevOps porta a un’organizzazione IT troviamo:
- Accelerazione delle attività di creazione, testing, aggiornamento e rilascio del codice applicativo;
- Potenziamento di sicurezza e affidabilità dei processi e del codice;
- Miglioramento costante del SDLC, grazie a feedback continui;
- Adattabilità continua ai cambiamenti del mercato e alle richieste degli utenti.
La popolarità di DevOps ha portato alla nascita di altri modelli, che intendono riprodurre i principi di DevOps in contesti specifici; tra questi spiccano DataOps, per l’analisi dei dati, e GitOps, per il controllo versione su tutti gli elementi che entrano in gioco nel ciclo di sviluppo .
Conclusioni
La migrazione verso DevOps non si compie, semplicemente, installando e utilizzando alcuni strumenti e tecnologie: DevOps è una filosofia di sviluppo software che può realizzarsi solo attraverso un percorso di cambiamento culturale e delle modalità di lavoro all’interno del reparto IT. Oggi, per le imprese, adottare il paradigma DevOps costituisce un passo essenziale per riuscire a innovare e potenziare le metodologie di sviluppo del software, e tenere il passo con le dinamiche di mercato.