Per garantire il time-to-market nel rilascio di nuove applicazioni e servizi digitali è oggi sempre più importante adottare le metodologie DevOps e DevSecOps negli ambiti delle software factory e dell’IT. Questi metodi, che a partire dal nome, mettono insieme development, operation e security (fasi essenziali d’ogni rilascio software) hanno l’obiettivo di velocizzare i progetti, migliorare la qualità dei servizi offerti agli utenti finali e in definitiva aiutare le aziende a competere in un business che è sempre più dinamico e dipendente dalle componenti digitali. Le metodologie DevOps e DevSecOps industrializzano la produzione IT e coinvolgono in profondità l’organizzazione. Per questo l’adozione richiede competenza e gradualità per essere portata a termine con successo.
Le metodologie DevOps e DevSecOps sono state concepite per industrializzare la catena di produzione del software. Metodi con cui i team di sviluppo, delle operation IT e della security smettono di avere come obiettivi diversi, quali la scrittura di un codice, le prestazioni di un server o la capacità d’intervento sulle vulnerabilità ad attacchi cyber. Tutti insieme cooperano con l’obiettivo di soddisfare le esigenze dell’utente finale che userà il software o i servizi che vi sono basati.
Un cambio di paradigma che giustifica l’interesse raccolto dalle metodologie DevOps e DevSecOps da parte di un gran numero d’imprese che hanno al proprio interno una software factory oppure il cui business (pensiamo oggi a servizi assicurativi, finanziari, servizi digitali) dipende dalla capacità di rilasciare in tempo o adattare velocemente il software. Supportando cicli veloci di sviluppo e rilascio in produzione, le metodologie DevOps e DevSecOps aiutano a mettere in pratica il metodo agile nella gestione dei progetti.
Aiutano inoltre a collegare i processi di continuous integration & continuous delivery (CI/CD, che sono alla base dell’automazione nello sviluppo) con i controlli di sicurezza, le fasi di test, i deploy in staging, in produzione, oltre alla raccolta dei feedback utente con cui decidere l’opportunità d’incorporare modifiche e nuove funzionalità. Cicli di modifica e di aggiornamento più brevi sono funzionali sia al time-to-market sia alla risoluzione dei problemi e al miglioramento della sicurezza.
Per mettere in pratica le metodologie DevOps e DevSecOps servono strumenti in grado di presidiare tutte le fasi del ciclo di sviluppo e di produzione software e soprattutto di garantirne l’integrazione. Il mercato offre un gran numero di soluzioni proprietarie e open source adatte a svolgere i compiti più importanti. Tra questi ci sono il supporto alla programmazione: scrittura del codice, gestione degli artefatti, creazione delle build, automazione dell’integrazione e rilascio continuo nella logica CI/CD. Ci sono i tool di provisioning, di controllo versione, di gestione delle configurazioni. Servono inoltre strumenti per i test, deploy e monitoraggio in produzione e per la gestione dei feedback utente. Nel campo della sicurezza si aggiungono gli strumenti per i test statici e dinamici sul codice, l’auditing delle modifiche, reporting di vulnerabilità e altri strumenti per l’uso sicuro dei container e del cloud. Va da sé che l’implementazione delle metodologie DevOps e DevSecOps debba chiudere i gap funzionali tra gli strumenti in uso, introdurre i tool mancanti a misura dell’azienda o dell’esperienza dei team e garantirne la migliore integrazione.
Per mettere in pratica le metodologie DevOps e DevSecOps non basta avere i tool per automatizzare la produzione e il deploy software, ma serve un cambiamento culturale e organizzativo capace di rendere i team di sviluppo, sicurezza e operation in grado di cooperare in modo efficace. Una delle maggiori difficoltà è coniugare le competenze dello sviluppatore con quelle dei sistemisti che lavorano sul middleware, sulle soluzioni d’orchestrazione kubernetes e sui moderni supporti per il cloud. C’è alla base un problema culturale e di comunicazione spesso esacerbato da terminologie settoriali. L’approccio più efficace è quello di colmare le lacune delle persone, formare gli sviluppatori con percorsi specifici, partendo da chi ha competenze più solide ed esperienze su container e cloud. Iniziando dalle persone si evitano i fallimenti e i passi indietro che accompagnano l’introduzione dei supporti (presunti) “chiavi in mano” alle metodologie DevOps e DevSecOps. L’implementazione richiede la conoscenza della realtà d’impresa e delle persone, quindi il disegno di un percorso graduale e su misura di cambiamento che dà priorità alle aree maggiormente suscettibili di miglioramento.