Che cos'è e cosa significa DevOps?

DevOps è un metodo relativamente nuovo e innovativo per realizzare e offrire software di qualità.

Il termine combina le ultime parti di software development e technology operations, perché DevOps si occupa di eliminare i silos e riunire le attività di sviluppo e operative.

DevOps ha fatto molta strada da quando è apparso oltre 10 anni fa. Gli amministratori di sistema desideravano stare al passo con team di sviluppo del prodotto Agile più efficienti, che creavano software di qualità di produzione più frequentemente. I team stavano migliorando nella fornitura di software, ma rimanevano colli di bottiglia nel resto del flusso di valore, in aree come la pianificazione iniziale e l'implementazione e la gestione dei sistemi in produzione. All'epoca, e ancora adesso per molte organizzazioni, questi colli di bottiglia causavano attriti tra i team di sviluppo e operativi. Ad Andrew Clay Shafer e Patrick Debois è stato attribuito il merito di aver coniato il termine DevOps nel 2008, e il concetto ha preso piede con il primo evento DevOpsDays in Belgio nel 2009.

L'implementazione di DevOps non riguarda solo gli strumenti, ma anche il modo in cui le persone lavorano e i processi che utilizzano. DevOps rompe la storica separazione tra i team di progettazione che creano un'applicazione o un servizio e i responsabili dell'esecuzione di quel servizio nella produzione. I processi e il lavoro si allineano all'intero ciclo di vita dei prodotti e ai servizi, oltre a tutto ciò che è necessario per la loro consegna e funzionamento.

Idealmente, un team gestisce tutti gli aspetti del servizio, comprese le funzioni di sicurezza e di test. Nelle organizzazioni più grandi potrebbe esserci ancora qualche specializzazione funzionale, ma rimane fondamentale che il processo e la comunicazione siano focalizzati sulla consegna end-to-end dell'intero servizio. Questa visione incentrata sul prodotto può basarsi su qualcosa di semplice, come un microservizio o un insieme più complesso di risultati finali che comprende una versione (spesso sono le circostanze e il cliente finale a decidere). Nel tempo l'obiettivo è continuare ad apportare modifiche più piccole e replicare più rapidamente.

I nuovi processi e i team sfruttano quanta più automazione possibile e tecnologie che facilitano la connessione end-to-end del ciclo di vita del prodotto, incluso l'importantissimo ciclo di feedback dal cliente al team.

DevOps è importante poiché ha il potenziale per aiutare un'organizzazione a differenziarsi dai concorrenti rispondendo più rapidamente alle esigenze del business. DevOps è un modo nuovo e migliore di creare software con una migliore collaborazione end-to-end, non solo tra i team di sviluppo e addetti alle operazioni, ma anche la collaborazione con discipline come la sicurezza (talvolta indicata come DevSecOps), i test (assicurazione della qualità o QA), controllo della versione e funzionalità di collaborazione tra team come ChatOps. DevOps si traduce in un prodotto software migliore e implementazioni di maggior successo.

Fondamentalmente, DevOps è una best practice. È stato concepito sul presupposto che le organizzazioni di fornitura di applicazioni e servizi funzionano meglio quando i team di sviluppo software collaborano veramente e fanno integrazione continua e consegna continua (CI/CD). Ciò significa che al termine di ogni iterazione, non importa quanto breve, il software è pronto per la produzione, anche se non viene sempre distribuito in produzione ogni volta.

Le grandi organizzazioni subiscono trasformazioni DevOps per risolvere un problema comune e fondamentale con la creazione di software aziendale. Quando gli sviluppatori creano un nuovo software, lo codificano e lo testano in un ambiente di sviluppatori, che è offline e consente loro di risolvere i bug, modificare il codice e perfezionare i requisiti senza mettere in pericolo la loro attività, un'agenzia governativa o un istituto medico o formativo.

Tuttavia, quando è il momento di distribuire il nuovo software o codice nell'ambiente reale, sorgono problemi, perché l'ambiente di sviluppatori non è esattamente uguale all'ambiente di produzione in continua evoluzione. Ciò può provocare veri e propri mal di stomaco o addirittura un colpo al cuore. Gli errori di distribuzione possono condurre a problemi la cui risoluzione richiede molto tempo e denaro. Storicamente, questo problema è stato aggravato da tantissime modifiche che sono state raggruppate in rilasci non frequenti.

I team addetti alle operazioni hanno la responsabilità di garantire che i prodotti funzionino in modo affidabile in produzione con i giusti controlli ed bilanciamenti in atto per garantire un'implementazione affidabile. Possono sorgere attriti tra i team delle operazioni e di sviluppo che tentano di eseguire l'iterazione e portare alla produzione le modifiche ai codici il più velocemente possibile.

Una pipeline di consegna basata su DevOps consiste nel convincere gli sviluppatori e il personale addetto alle operazioni a:

  • lavorare meglio insieme

  • pensare e agire sulla stessa lunghezza d'onda

  • rimuovere barriere e strutture rigidamente separate

  • condividere le responsabilità

  • concentrarsi su QA, controllo della versione, gestione della configurazione e gestione delle versioni come attività di consegna continue e connesse, spesso indicate come flusso del valore

Integrando i team di sviluppo e addetti alle operazioni e aggiungendo l'automazione, le organizzazioni possono migliorare la collaborazione, la cultura del lavoro e infine la produttività. L'integrazione di DevOps si basa sull'automazione dell'infrastruttura e dei workflow, consentendo la consegna continua delle applicazioni in produzione e misurando costantemente le prestazioni delle applicazioni.

L'automazione è una best practice fondamentale per le organizzazioni che utilizzano un modello DevOps. Automatizza il maggior numero possibile di attività, in particolare:

  • Test di funzionalità del codice, utente e sicurezza

  • Workflow, inclusi i limiti delle fasi e le versioni

  • Implementazioni e modifiche dell'infrastruttura

  • Convalida delle modifiche alla gestione della configurazione

DevOps offre un grande vantaggio competitivo tramite funzioni di codice automatizzate che si verificano durante tutto il ciclo di vita dello sviluppo del software. Tuttavia, l'automazione avviene solo se i team sanno che sono disponibili funzionalità di automazione e che molte funzioni che prima erano manuali sono sempre più automatizzate, come la gestione delle modifiche ITIL. L'automazione può migliorare notevolmente l'esperienza degli sviluppatori sollevandoli dalle attività amministrative.

DevOps Change Management - ServiceNow DevOps per la gestione delle modifiche dell'azienda.

Un'altra best practice di DevOps prevede che gli sviluppatori scrivano il software in piccoli blocchi che possono essere integrati, testati, monitorati e implementati nell'arco di poche ore. Questo approccio migliora il vecchio metodo che richiedeva settimane o mesi per scrivere e testare grandi volumi di codici software. I team di sviluppo possono essere più reattivi alle esigenze dell'azienda e vi sono meno possibilità di interruzioni gravi causate da una versione più ampia con molte modifiche. Inoltre, è più facile annullare una piccola modifica se qualcosa va storto durante la produzione. Questa best practice si applica indipendentemente dal fatto che si utilizzino nuove tecnologie cloud-native o un'infrastruttura più tradizionale.

Non tutti i progetti possono essere consegnati in piccoli blocchi, più frequenti; talvolta è più logico raggruppare le modifiche in versioni più grandi o meno frequenti in un ciclo di vita DevOps più ampio. Tuttavia, i team DevOps lavoreranno in base al principio che il loro codice sia immediatamente implementabile.

Anche se la maggior parte delle aziende ha acquisito una notevole esperienza nello sviluppo di Agile e sta sperimentando o investendo totalmente nei principi DevOps, alcune ritengono che DevOps non sia pronto per debuttare nelle organizzazioni più grandi. Questa convinzione nasce da una serie di fattori, compreso il criterio secondo cui l'adozione di DevOps può comportare cambiamenti importanti nell'organizzazione di persone, processi e tecnologia. L'altro fattore è che quasi tutte le grandi imprese sono soggette a molteplici normative, soprattutto quando i sistemi influenzano dati finanziari, informazioni di identificazione personale (PII) o dati sanitari. L'ambiente normativo per le grandi organizzazioni è il motivo per cui hanno forti controlli nelle operazioni IT al fine del rilascio degli aggiornamenti delle applicazioni. Questi controlli sono maturi per l'automazione, poiché sono stati basati su processi manuali.

Man mano che le implementazioni DevOps proseguono e l'esperienza e l'automazione aumentano, DevOps verrà utilizzato più spesso per affrontare i problemi del mondo reale e i problemi aziendali. E quando le persone capiranno come bilanciare velocità e agilità con regolazione e controllo, saranno più che pronte a creare funzionalità software davvero nuove. Le pratiche DevOps di successo si basano su un apprezzamento fondamentale di questa realtà e possono rendere le persone più produttive, poiché i sistemi "pianifica, costruisci, esegui" funzionano in modo più efficiente.

Puoi diffondere la metodologia DevOps in tutta la tua organizzazione in modo intelligente, cancellando il rischio di lavorare in fretta e riducendo al minimo l'attrito tra i team addetti alle operazioni IT e di sviluppo. Le grandi imprese che si affidano a controlli stringenti per la continuità del business possono sfruttare tecnologie emergenti come la gestione del flusso del valore (VSM, Value Stream Management) per ricevere un aiuto nella transizione.

Ciclo di vita DevOps - ServiceNow Sfrutta la piattaforma ServiceNow per la gestione del ciclo di vita DevOps.

Un team DevOps ben gestito esegue iterazioni rapidamente e offre vantaggi in alcuni modi molto semplici: versioni di software più piccole e più frequenti consegnate puntualmente o prima del previsto e con meno problemi nella produzione. Anche se vengono rilevati bug nella produzione, li si risolve più rapidamente e il team apprende e migliora sfruttando i dati disponibili attraverso la collaborazione e la gestione del flusso del valore.

Gli efficienti team DevOps implementano il codice molto più velocemente rispetto agli omologhi meno efficienti e devono affrontare meno errori. La transizione a DevOps incoraggia una mentalità di miglioramento continuo in tutta l'organizzazione, poiché tutte le persone coinvolte hanno accesso alle informazioni sull'intero ciclo di vita. Inoltre, le capacità di intelligenza artificiale emergenti in DevOps porteranno a un'efficienza ancora superiore grazie all'automazione e all'affidabilità migliorata.

Esiste un ovvio business case per DevOps, ma implementarlo potrebbe essere una sfida di leadership che non prevedevi. Occorrono buona preparazione e perseveranza affinché le aziende passino dallo sviluppo di software a cascata ad Agile, fino all'adozione di DevOps. Tuttavia, le ricompense possono essere davvero straordinarie.

Stabilità

Molte best practice DevOps aiutano a migliorare la stabilità. Un esempio è l'attenzione sulle modifiche più piccole da apportare, che difficilmente comportano grandi interruzioni; possono essere ripristinate rapidamente, e spesso automaticamente, se qualcosa va storto. Il processo di integrazione continua di DevOps aiuta a garantire che le modifiche al codice siano combinate e testate in modo adeguato e che l'applicazione di policy e strumenti sia in grado di eliminare tempestivamente i problemi nel ciclo.

Sicurezza

Il report Puppet State of DevOps del 2019 indica che con una base DevOps solida, implementare la sicurezza diventa più semplice e più affidabile. La sicurezza diventa parte del team DevOps così come lo sviluppo del codice, i test e le operazioni. La collaborazione migliora e la sicurezza è intrinseca al processo.

Velocità

Lavorare in iterazioni più piccole e in team end-to-end combinati significa che i cambiamenti possono essere implementati più rapidamente e che i team diventano più reattivi alle esigenze dell'azienda. È possibile ridurre notevolmente il tempo complessivo che intercorre dall'idea iniziale al cambiamento effettivo nella produzione, il che significa un time-to-value più rapido.

Collaborazione

I vantaggi di DevOps sono tutti accentuati da una migliore collaborazione e comunicazione. Gli sviluppatori ottengono un feedback diretto sulle prestazioni del proprio lavoro in produzione e gli operatori hanno maggiori informazioni su cosa viene consegnato e perché. Tutte le persone coinvolte, inclusa la sicurezza e l'assicurazione della qualità, possono condividere e perfezionare le proprie policy grazie al supporto dell'intero team.

Non è facile far lavorare insieme sviluppatori e team addetti alle operazioni per creare in tempi brevi e rilasciare il codice alla produzione. DevOps dipende fortemente dai cambiamenti culturali e di processo, oltre dalla disponibilità degli strumenti DevOps corretti. Molti responsabili IT, engineering e business unit di grandi organizzazioni sono comprensibilmente ansiosi quando pianificano una transizione di tale portata. Tuttavia, il business case per DevOps è convincente e prodotti come ServiceNow DevOps semplificano il workflow. Semplicemente non vi è alcun motivo per cui un'organizzazione dovrebbe rinunciare all'implementazione di DevOps.

Il modello ibrido DevOps collega Dev a Ops - ServiceNow ServiceNow DevOps ti aiuta a connettere lo sviluppo alle operazioni.

Come ottenere DevOps

Espandi il successo di DevOps a tutta l'azienda. Aumenta la velocità senza rischi e riduci al minimo gli attriti tra operazioni e sviluppo dell'IT.