Il termine DevOps nasce dalla contrazione inglese di “development” (sviluppo) e “operations”, ossia il team che si occupa degli aspetti di messa in produzione del software e del suo mantenimento in esercizio. Il DevOps non fa però riferimento soltanto ad un gruppo operativo, ma è un cambiamento culturale e metodologico che comprende un insieme di pratiche, di strumenti automatici e processi di Sviluppo e Lean Management. Grazie ad esso è possibile migliorare la catena di produzione del software per renderla più rapida ed efficiente. Per attuare tale miglioramento risulta essenziale la collaborazione tra i due team Development ed Operations che devono sempre essere allineati sulle attività svolte e sugli obiettivi di business da perseguire.
DevOps, un mix di cultura, metodologia e team building
Il DevOps non è una metodologia recente, né una costruzione ex novo, ma un flusso operativo che all’interno delle aziende si è sempre praticato a beneficio del business, ma soltanto negli ultimi anni ha ricevuto una denominazione e un riconoscimento. Il DEvOps è fondamentale per migliorare l’integrazione tra sistemisti e sviluppatori in un’ottica di crescita ed ottimizzazione. Secondo il nostro DevOps Evangelist, Pasquale Camastra, il DevOps si può definire come:
Un mix di <<cultura (è la componente fondante), competenza, condivisione, collaborazione, [di] design pensato per l’Utente Finale (e non contro di esso), leadership, team building, non è strettamente Agile, non è (solo) Continuous Delivery e Continuous Improvement, non è nato con il cloud, ma con il cloud (di ultima generazione) è emerso ed è diventato più “comodo”>>.
Per incentivare la collaborazione fra sistemisti e sviluppatori può essere utile il DevOps Officer, una figura autorevole, con ottime doti comunicative e in grado di condurre i due team Dev ed Ops verso l’obiettivo comune del far arrivare l’applicazione in esercizio. Al tempo stesso questa figura dovrebbe diffondere la cultura della collaborazione che è essenziale per far funzionare correttamente questa metodologia.
DevOps e Cloud, un circolo virtuoso
L’evoluzione tecnologica degli ultimi anni, così come l’avvento del cloud e degli Smartphone, ha reso più “stretti” i cicli di realizzazione delle applicazioni, eliminando le barriere tra competenze prima nettamente separate tra chi fa sviluppo software e chi si occupa di operation.
Il cloud, in particolare nella sua accezione PaaS e SaaS, dispone ormai di servizi pensati per alleggerire il compito del personale dell’operation che sta diventando sempre di più volto al monitoraggio degli SLA dei servizi cloud piuttosto che alla reale operatività sui sistemi, stimolando in essi una conoscenza applicativa prima non necessaria. Allo stesso modo, i servizi Cloud aiutano lo sviluppatore nella composizione delle applicazioni non più from scratch, ma come patchwork di servizi esterni forniti da terzi, obbligandolo ad acquisire conoscenze di tipo gestionale che non avrebbe dovuto conoscere negli ambienti on-premise. In questo caso il concetto di DevOps si realizza nell’uso da parte dei due gruppi Dev e Ops, in Cloud, di una pipeline comune in cui risulta difficile definire esattamente i confini operativi tra un gruppo e l’altro.
Continuous delivery, un esempio di integrazione DevOps
Nella metodologia DevOps il “continuous delivery” o “distribuzione continua” in italiano, è uno dei driver di collaborazione tra i gruppi Dev e Ops. Grazie a questo modello di sviluppo del software, le modifiche al codice vengono applicate ad una build, testate e preparate per il rilascio in produzione in modo automatico. Prima che le modifiche vengano mandate in produzione, il gruppo DevOps deve approvarle. Possono essere testati vari aspetti: per esempio le interfacce, le integrazioni, il caricamento o l’affidabilità delle API. La distribuzione continua è molto utile agli sviluppatori perché così possono analizzare in maniera più approfondita gli aggiornamenti e rilevare eventuali problemi.
DevOps e metodologia Agile, benefici e innovazione
La metodologia Agile ha l’obiettivo di consegnare software di qualità sviluppati in tempi brevi. Tale metodologia sviluppa il software in finestre di tempo limitate chiamate “iterazioni” ed in ognuna di queste vengono sviluppate nuove funzionalità del software. Il tempo di ogni iterazione è di qualche settimana per ridurre i malfunzionamenti del software. Grazie alla collaborazione, all’integrazione e alla comunicazione tra il team di sviluppo e quello di operation, si punta a ridurre i tempi dell’iter: rilascio del prodotto, collaudo del software, evoluzione e mantenimento al fine di realizzare un software più affidabile e sicuro. Si riducono, inoltre, i rischi di frequenti ed ingenti modifiche al programma.
Secondo i nostri esperti di DevOps implementare il DevOps in un ambiente che già utilizza la metodologia Agile dà i risultati migliori e rende più semplice l’approccio alla metodologia rispetto all’implementazione in un ambiente tradizionale. Naturalmente ciò non significa che in un ambiente tradizionale il DevOps non possa essere implementato, anzi sarebbe opportuno che lo fosse per far sì che i due team non continuino ulteriormente a lavorare separatamente, ma possano integrarsi e collaborare al meglio. La metodologia DevOps introdotta in un ambiente tradizionale potrebbe avere l’ulteriore vantaggio di favorire lo svecchiamento delle metodologie usate stimolando uno slancio crescente verso l’innovazione.
Redatto da Lucia D’Adamo, in collaborazione con Pasquale Camastra, supervisionato da Marco Pirrone