Il modello di sviluppo software DevOps fa ormai parte del cuore pulsante della trasformazione digitale di questi anni e rappresenta una delle fondamenta sulle quali sviluppare le applicazioni di nuova generazione, come quelle basate su container e microservizi, vediamo perché insieme a Giulio Roggero, cofondatore e CTO di Mia-Platform.
DevOps: chiave di volta per l’agilità del business
Unendo le competenze dei team di sviluppo (Dev) e di quelli operativi (Ops), DevOps ha nella condivisione e collaborazione i suoi pilastri al fine di accelerare i tempi di programmazione, testing e rilascio delle applicazioni aziendali e rispondere in tempi sempre più prossimi al reale alle richieste del business la cui competitività si misura su parametri come agilità, flessibilità, innovazione. Il tutto facendo proprio quel concetto di security by design che ormai è diventato un imperativo, molto spesso anche normativo, al punto che sempre più spesso si parla di DevSecOps (intendendo l’integrazione, all’interno dei team DevOps, anche di competenze di security).
Finito il tempo dei rilasci monolitici, lo sviluppo applicativo di nuova generazione è basato sul concetto di continuous delivery e su un processo iterativo che vede nei continui feedback la carta vincente: “In estrema sintesi – afferma Roggero – quello che si può fare con DevOps è risolvere un problema molto diffuso, e cioè il tipico stato d’animo di apprensione e tensione professionale che, spesso, il team di sviluppo vive il giorno del rilascio in produzione dell’applicazione. Si sa che questo è un momento critico, il cui successo dipende anche da settimane di lavoro, perché quando si rilascia qualcosa di nuovo in produzione si rischia di perturbare un sistema che sta funzionando e producendo business. Le perturbazioni creano rallentamenti, quindi si cerca di evitarle il più possibile. Sull’altro versante ci sono però le imprese, che richiedono al software sempre nuove funzionalità. Molte funzionalità e pochi deploy portano a rilasciare blocchi di codice di dimensioni crescenti, che aumentano la probabilità di perturbare il sistema in produzione. Tutto ciò crea problemi e discontinuità che si riflettono poi in costi: il modello DevOps, invece, fornisce al team di sviluppo la possibilità di vivere i rilasci software come un’attività normale, quotidiana. Attività che, diventando consueta, risulta eseguibile più volte, anche nell’arco della stessa giornata, rendendo la modernizzazione delle applicazioni meno costosa e più semplice”.
Microservizi e container hanno bisogno del DevOps, ma non basta
Se alla base del DevOps, come abbiamo visto, vi è l’obiettivo di realizzare software scalabile e in grado di evolvere rapidamente sulla base delle esigenze che si manifestano anche immediatamente dopo il rilascio di una nuova funzionalità o la nuova versione di un servizio già in distribuzione, alla realizzazione di questo obiettivo concorrono quelle che abbiamo definito le applicazioni di nuova generazione, ossia quelle basate su architetture a microservizi (dove ciascuna funzione dell’applicazione può essere compilata e implementata in modo indipendente) e su container (che permettono di eseguire più parti di un’applicazione in modo indipendente). Un approccio che si completa, infine, con la possibilità di fruire di servizi da applicazioni diverse attraverso API.
I microservizi containerizzati rappresentano la base delle applicazioni cloud native e consentono di ottenere sviluppo e routine più efficienti: potendo sviluppare più microservizi contemporaneamente, più sviluppatori possono lavorare sulla stessa applicazione simultaneamente.
Ma gli esperti concordano nell’affermare che, a fronte della maggiore flessibilità e delle migliori prestazioni applicative, le architetture a microservizi aggiungono complessità che inevitabilmente impattano sulle routine di gestione. Riportiamo un paio di esempi che danno un’idea delle eventuali problematiche: la natura disaccoppiata dei microservizi rende particolarmente complessa l’identificazione dei guasti mediante monitoraggio manuale e metodi di prova; il controllo delle versioni di un servizio è una delle criticità maggiori perché la compatibilità di un servizio potrebbe perdersi e bisogna essere certi di poter sempre tornare alla versione precedente (e questo significa la possibilità di supportare più versioni dei microservizi mentre si è in fase di esecuzione).
Ecco quindi che l’approccio iterativo del DevOps e l’utilizzo di strumenti adeguati diventano fondamentali, come spiega Roggero: “Oggi, per le aziende, ottenere rilasci software rapidi e frequenti è fondamentale. É un tema di processi ma anche di strumenti”, aggiungendo che la DevOps Console di Mia-Platform integra in modalità ‘out-of-the-box’, quindi pronti per l’uso, i principali tool e componenti sul mercato. La Console consente così di unificare la gestione delle pipeline in un unico strumento, facilitando la gestione dei rilasci secondo varie modalità: rolling, blue-green, canary, a seconda delle esigenze. A queste funzionalità, Mia-Platform affianca competenze consulenziali che si estendono anche verso le metodologie e i processi di sviluppo, con particolari competenze in ambito Agile. E poi c’è la governance: “Spesso nelle grandi aziende succede che i diversi team interpretino in maniera differente il metodo DevOps, sviluppando ‘ricette’ personali, che finiscono per rendere estremamente difficoltosa la gestione di tutte le diverse linee guida all’interno dell’organizzazione. La DevOps Console, invece, permette una governance leggera ma forte: consente di adottare set di linee guida uniformi e condivise, a partire dalle quali muoversi in grande libertà e autonomia sfruttando i tanti strumenti a disposizione. Ciò semplifica la gestione dell’intero ciclo di vita del codice, sia per i team di sviluppo interni che per i fornitori esterni”.