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’.

 

img-pagina-5

 

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, GitOps, per il controllo versione su tutti gli elementi che entrano in gioco nel ciclo di sviluppo, e FinOps per governare i costi del cloud.

 

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.


Torna all'inizio

Mia Platform - White Paper - Tutto quello che devi sapere per orientarti nel mondo del DevOps

© MIA s.r.l. Tutti i diritti riservati