Gli obiettivi di dinamismo e flessibilità del business promessi dalla digital transformation non possono essere raggiunti senza l’adozione di metodi e organizzazioni più efficaci. Nell’ambito dell’IT ha oggi grande interesse l’adozione del metodo DevOps, sintesi di development e operations, che rende più efficienti i processi di sviluppo software e la messa in produzione delle applicazioni. Un metodo sempre più necessario per sostenere i progetti digitali portati avanti con modalità agile, dove i risultati funzionali e di business sono ottenuti attraverso più iterazioni di un ciclo che comprende sviluppo, test, rilascio e raccolta dei feedback utente. Un processo che, per essere efficace e rispettare il time-to-market, dev’essere il più possibile veloce e continuo, come in una catena di montaggio, attraverso l’integrazione degli strumenti usati, l’automazione, l’aggiornamento organizzativo e delle competenze dei team coinvolti. DevOps richiede cambiamenti profondi, realizzabili attraverso apporti tecnologici ed esperienziali appropriati.
Cos’è e perché oggi è importante DevOps
Sempre più aziende scelgono oggi il metodo di sviluppo agile, sinonimo di progetti snelli con rilasci veloci e in continuo miglioramento, ma soprattutto funzionali ai nuovi business che non consentono di fissare con precisione tutti i requisiti in anticipo e tantomeno di attendere i tempi di rilascio di un’applicazione definitiva e completa. Con il metodo agile si mettono a fuoco gli obiettivi di business e le richieste degli utenti, riducendo i costi delle modifiche e degli inevitabili cambi di rotta. DevOps è il metodo per tradurre l’approccio agile nella pratica informatica, mettendo a fattor comune le risorse per lo sviluppo e le operations, migliorando la comunicazione tra i team che operano nella catena di produzione a vantaggio della qualità e dell’efficienza dei rilasci. Con DevOps, i processi che vanno dallo sviluppo del codice alla produzione, con le tappe intermedie di verifica e di test, sono integrati tra loro e supportati dall’automazione. Spezzate nelle componenti funzionali, le applicazioni in sviluppo possono attraversare il ciclo di produzione in modo più rapido, distribuite nelle diverse fasi, senza le lungaggini dei passaggi di consegne tra team. Con DevOps i team hanno lo stesso obiettivo, che non è scrivere codice, fare test, o installare e gestire software, ma ottenere un risultato di business. Agile e DevOps insieme cambiano il modo di concepire i servizi digitali nelle le realtà che devono rispondere rapidamente agli stimoli del mercato, disegnare soluzioni digitali in modo più dinamico con sviluppo e rilascio fluidi e massima attenzione alle istanze degli utenti.
I cambiamenti da realizzare per implementare DevOps
Per mettere in pratica il metodo DevOps serve pianificare un cambiamento profondo a livello di tutti i processi che riguardano sviluppo software e messa in produzione. Il primo, più importante, è quello culturale e organizzativo. Con DevOps dev’essere realizzata una più ampia condivisione del lavoro e delle competenze tra chi sviluppa e chi gestisce le operation. Un obiettivo che oggi è più facile da realizzare rispetto al passato, grazie agli sviluppi tecnologici che hanno virtualizzato l’infrastruttura informatica rendendola sempre più software-defined, sia che si tratti di data center on-premise sia di servizi in cloud. La condivisione tra i team dev’essere supportata dall’integrazione della catena di tool e strumenti che vengono usati per lo sviluppo, per i test e la gestione delle operation. Integrazione che può avvenire attraverso semplici tool d’integrazione, ma anche piattaforme e portali di supporto per il lavoro delle persone, con repository per gli artefatti, e strumenti, per esempio, per l’organizzazione del lavoro dei team e il controllo dei cicli di produzione. L’integrazione dà supporto ai processi di continuous integration e continuous deploy (CI/CD) che garantiscono la velocità e la qualità dei rilasci fatti con DevOps.
I supporti per implementare il DevOps
Sul piano tecnico, l’implementazione di DevOps richiede l’integrazione delle piattaforme di sviluppo, di monitoraggio e di gestione in uso presso i team per ottenere più fluidità nei cicli di CI/CD. In molti casi può essere sufficiente creare ponti logici tra i tool per eliminare passaggi manuali e documentazioni cartacea tra i team, in altri può essere necessario completare la dotazione di tool e aggiornare l’esistente. Serve quindi poter disporre di infrastrutture IT flessibili con risorse d’elaborazione, di rete e di storage il più possibili virtualizzate e software-defined, sia che si trovino nel data center dell’azienda sia in cloud privato, pubblico o ibrido. La capacità di utilizzare software in container attraverso orchestratori consente di ottenere alti livelli d’automazione nei deploy e una gestione IT uniforme su infrastrutture diverse, on premise e di cloud. Poiché la security non può oggi essere trascurata è opportuno integrarne i controlli in modo che non risultino onerosi o diventino una minaccia alla fluidità dei processi e a rispetto del time-to-market. La soluzione più efficace è inserire controlli di security strutturali e dinamici all’interno del ciclo DevOps con DevSecOps (DevOps + Security). L’integrazione della security fin dalle fasi iniziali del ciclo di produzione aiuta a rilasciare software sicuro by design e a condividere nei team l’attenzione e la cultura della sicurezza, oltre che a ridurre drasticamente i costi di correzione per le problematiche di sicurezza rilevate.
Il compito del partner nell’aiutare l’evoluzione di sviluppo e operation
Per implementare DevOps sono necessari progetti su misura che partendo dall’assessment dei tool, risorse e processi esistenti provvedano a disegnare il percorso di cambiamento, con i necessari supporti per la trasformazione e l’acquisizione delle competenze attraverso programmi formativi ad hoc per i team. La collaborazione tra i team di sviluppo e di operation necessita della creazione di un territorio linguistico e di competenze in comune tra le persone. L’avanzamento tecnologico può richiedere d’integrare le conoscenze esistenti con quelle necessarie per disegnare moderno software a microservizi, per usare automazione nei test, fare deploy in cloud riducendo i costi ed evitando il lock-in nei confronti dei provider. Horizon Digital mette a disposizione dei clienti le competenze per analizzare e mettere a punto processi DevOps moderni ed efficaci e aggiornare operatività e sviluppo software secondo le modalità cloud-ready e le best practice. L’approccio agnostico verso i tool e i fornitori di sistemi informatici e servizi di cloud permette a Horizon Digital di operare con soluzioni tradizionali o innovative scegliendo ciò che può offrire i maggiori vantaggi nella specifica realtà del cliente.