DevOps è uno dei termini più usati nel mondo dello sviluppo software dell’ultimo decennio. Esso è la crasi delle parole inglesi development, che identifica gli sviluppatori, e operations, che nella fattispecie riguarda invece i professionisti delle Ops IT. Si tratta, in sostanza, di una metodologia di sviluppo software basata su logiche di condivisione e collaborazione tra tutti gli stakeholder che, a diverso titolo, prendono parte allo sviluppo software e sono idealmente suddivisi nelle categorie dei Dev e degli Ops.
Per comprendere il successo della metodologia va fatta una breve premessa: oggi, le applicazioni su cui poggia il business costituiscono la base del suo successo ed è quindi fondamentale accelerare il più possibile i tempi di rilascio del software lungo tutto il suo lifecycle, che si tratti di una nuova applicazione, un aggiornamento, una funzionalità o un bug fix. È infatti dall’introduzione costante di funzionalità avanzate, dall’analisi dei dati e dall’integrazione tra i sistemi che molte aziende costruiscono il proprio vantaggio competitivo, da cui la necessità di iter agili e continui, che possano dare piena soddisfazione sia all’IT che al business, nonché all’utente finale.
In particolare, è l’approccio a silos tra sviluppatori (Dev) e professionisti delle Operations IT (Ops) ad aver tradizionalmente rallentato il time to market e, di conseguenza, la competitività dell’azienda a 360 gradi. Ciò è dovuto principalmente all’assenza di comunicazione e collaborazione, a responsabilità ritenute – più o meno erroneamente – disgiunte e ad una visione parziale e limitata dell’intero processo di sviluppo e deployment del software, nonché – in termini più astratti – del suo ruolo sullo stato di salute dell’azienda. DevOps è dunque un metodo che, facendo perno sull’integrazione di cui sopra e su metodologie agili di sviluppo, accelera la progettazione, il testing e il rilascio di applicazioni sia in un contesto di data center tradizionale che in cloud.
Le caratteristiche della metodologia DevOps
Concretamente, DevOps si sostanzia in una serie di pratiche che puntano ad automatizzare e accelerare il più possibile il processo di rilascio del software. Pilastri della metodologia sono l’integrazione tra i team di sviluppo e le operations, ambienti identici di sviluppo e produzione, il forte contributo dell’automazione (del provisioning dell’infrastruttura, dei workflow, del testing…) e, a livello di sviluppo, le metodologie Agile, con tanto di team compatti, funzionali e auto-organizzati. Altri elementi cardine sono poi lo sviluppo incrementale, parallelo e iterativo di porzioni di codice, il coinvolgimento costante degli stakeholder, l’integrazione continua (CI), che si sostanzia in test automatizzati sul codice, e la distribuzione continua (CD), che invece automatizza il processo di messa in produzione del codice già validato.
Rispetto alle metodologie tradizionali, l’impatto a livello culturale è enorme, motivo per cui il change management è un aspetto essenziale per tutte quelle aziende che desiderano evolvere verso metodologie DevOps: ciò non si applica, ovviamente, a tutte quelle strutture che sono nate in epoca recente e che fanno proprio di innovazione e agilità i propri marchi di fabbrica. In linea di massima, però, si può affermare che alla base del successo del nuovo paradigma ci siano due elementi: un più o meno radicale cambio di mindset e gli strumenti giusti, ovvero i DevOps Tools.
Categorie e principali funzionalità dei DevOps Tools
La metodologia DevOps punta a rendere il ciclo di sviluppo del software più rapido ed efficiente, ma senza gli strumenti adeguati sarebbe pressoché impossibile gestire con produttività tutte le fasi e i micro-processi che costituiscono tale iter. Per questo motivo sono disponibili sul mercato moltissimi tool diversi e dalle funzionalità talvolta parzialmente sovrapposte che vanno a formare quella toolchain su cui le aziende fondano la propria rinnovata agilità: una delle sfide che esse devono affrontare sta proprio nel modellare la pipeline DevOps in funzione degli strumenti che decidono di adottare, puntando (logicamente) sul massimo livello di integrazione. Altra possibilità è affidarsi a un modello DevOps as-a-service, in cui lo strato applicativo è selezionato, integrato e fornito da un provider con competenze specifiche. Di seguito, le principali categorie e funzionalità dei DevOps Tools:
- Strumenti per la scrittura del codice e creazione delle build
- Tool di Continuous Integration/Continuous Delivery (CI/CD), fonte essenziale di automazione
- Strumenti per il testing e il deployment
- Strumenti di pianificazione delle iterazioni e dei rilasci
- Tool di gestione delle configurazioni, controllo versioni e provisioning
- Tool di reporting di bug ed errori
- Strumenti funzionali alla necessità di feedback continuo
- Tool amministrativi e di sicurezza
Le 5 soluzioni top
Microsoft
Microsoft Azure DevOps
Azure DevOps non è un tool ma una suite di strumenti che Microsoft mette a disposizione dei team per automatizzare e agevolare le pipeline di sviluppo del software. Secondo la definizione del vendor, Azure DevOps mira a ottenere una “Pianificazione più intelligente, collaborazione migliore e distribuzione più rapida con un set di servizi moderni per lo sviluppo”. Sono quindi disponibili diversi strumenti, tra cui Azure Pipelines, che è di fatto il tool di CI/CD per la creazione, test e distribuzione in qualsiasi linguaggio (Node.js, Python, Java, PHP, Ruby…) e verso cloud differenti, tra cui Azure, Amazon Web Services (AWS) e Google Cloud Platform. Altri strumenti della piattaforma sono i servizi di testing (Azure Test Plans), di repository (Azure Repos) e gli Azure Boards, che si sostanziano in tool di pianificazione, verifica e analisi del lavoro dei team, nonché Azure Artifacts e un marketplace con oltre 1000 estensioni.
- Svariati servizi DevOps tra cui Azure Boards, Azure Pipelines, Azure Repos e Azure Artifacts
- Marketplace con più di 1000 estensioni
- Semplicità di impostazione pipeline automatizzate
- Contratto di servizio con disponibilità al 99,9%
CloudBees
CloudBees Core
Strumento noto ai team DevOps, Jenkins è un server di automazione open source che rientra nell’ambito della Continuous Delivery (CD) ed è disponibile come applicazione stand alone, tramite pacchetti di sistema nativi o container Docker. Jenkins nasce per gestire in modo efficiente tutto il processo di sviluppo, testing e distribuzione, integrando i passaggi all’interno di una pipeline e automatizzando svariati task legati allo sviluppo, testing e implementazione del codice.
Cloudbees, dal canto suo, è una società leader nel settore della Continuous Integration & Delivery (CI/CD) nonché il maggiore contributor del progetto Jenkins. La sua soluzione, CloudBees Core, è basata su Jenkins ma vi estende le funzionalità adattandole a best practice di livello enterprise. Cloudbees Core si basa su un’architettura scalabile, integra tool dedicati a semplificarne la gestione, tiene in massima considerazione sicurezza e compliance e favorisce la collaborazione tra i team, oltre ad offrire la massima flessibilità di deployment on-premise e sui più popolari servizi di cloud pubblico (AWS, GCP e Azure).
- Funzionalità di continuous delivery as-a-service
- Gestione di accessi a compliance da un’unica console
- Flessibilità di deployment: on-premises e cloud
- Adatto ad applicazioni moderne e legacy
- Creato per Kubernetes e Docker
- Gestione semplificata dei task
Atlassian
Jira Software
Jira Software viene definito come “strumento di gestione dei progetti per team Agile”. In un unico software, peraltro dalla UI molto curata, moderna e di semplice utilizzo, Atlassian integra funzionalità di gestione delle release e di project management, permettendo ai team Agile l’organizzazione e la pianificazione puntuale di tutte le fasi del ciclo di sviluppo. Questo significa poter distribuire task nei team, pianificare sprint, monitorare l’avanzamento dei progetti, definire priorità e organizzare tutte le attività essenziali. Jira Software supporta i framework Scrum e Kanban con bacheche flessibili e dettagliate, offre funzionalità di roadmap e la creazione di report dettagliati, anch’essi funzionali alla medodologia Agile. Inoltre, Jira è dotato di soluzioni enterprise finalizzate alla sicurezza e alla scalabilità all’interno dell’organizzazione.
- Avantazate funzionalità di gestione release e project management
- Monitoraggio costante delle attività dei team
- Report visivi in tempo reale
- Integrazione con centinaia di strumenti per sviluppatori
- Protezione di tipo enterprise con Atlassian Access
- Più di 3.000 estensioni
Broadcom
Nolio Release Automation
Nolio Release Automation, ex CA Release Automation, è un tool dedicato a semplificare, controllare e automatizzare tutta la pipeline di Continuous Delivery (CD). Nolio Release Automation promuove i concetti di semplificazione, automazione e accelerazione del deployment, sposando l’ideale dello zero-touch application deployment. La soluzione si fonda su un potente motore di automazione, che si occupa direttamente e in modo automatico della distribuzione delle applicazioni verso data center e cloud, e su Release Automation, il tool dedicato alla pianificazione e all’ottimizzazione della pipeline CD. I benefici riconosciuti della soluzione CA (ora Broadcom) sono la possibilità di gestire pianificazioni, workflow ed esecuzione delle release da un’unica console, la qualità delle dashboard personalizzabili nonché la scalabilità e l’apertura, data la possibilità di integrazione con altri strumenti di CD.
- Gestione end-to-end del rilascio delle applicazioni
- Potente motore di automazione
- Più di 1.800 integrazioni con altri strumenti della continuous delivery toolchain
- Dashboard completamente configurabili
IBM
UrbanCode Deploy
IBM UrbanCode Deploy nasce come strumento integrato per l’ottimizzazione e l’accelerazione della software delivery. Semplificando, si tratta di una soluzione integrata di automazione che consente il deployment delle applicazioni in cloud, data center e ambienti virtualizzati. Secondo le parole stesse del vendor, UrbanCode “abilita la Continuous Delivery per qualsiasi combinazione di applicazione on-premises, cloud e mainframe eliminando ogni genere di processo manuale”. Tramite UrbanCode Deploy è possibile automatizzare il deployment, l’aggiornamento e anche il roll-back delle applicazioni, mentre un completo inventory management system rende più semplice la collaborazione all’interno dei team e migliora la qualità del software. Si segnala, infine, la ricchezza di funzionalità di controllo e verifica e un’ampia libreria di plug-in che permettono a IBM UrbanCode Deploy di eseguire operazioni automatizzate su svariate applicazioni IBM e di terze parti.
- Soluzione dedicata all’automazione dei processi di rilascio delle applicazioni
- Automazione deployment, aggiornamento, rollback, disinstallazione
- Deployment in cloud, data center e ambienti virtualizzati
- Inventory Management System
- Più di 100 integrazioni