Che cos'è DevOps?

Scopri in che modo DevOps unifica persone, processi e tecnologia per offrire più rapidamente prodotti migliori ai clienti.

Definizione di DevOps

DevOps, una combinazione di sviluppo (Dev) e operazioni (Ops), è l'unione di persone, processi e tecnologia per offrire continuamente valore ai clienti.

Quali sono i vantaggi di DevOps per i team? DevOps permette a ruoli in precedenza isolati, tra cui sviluppo, operazioni IT, controllo della qualità e sicurezza, di coordinarsi e collaborare per fornire prodotti migliori e più affidabili. Grazie all'adozione di una cultura DevOps insieme alle procedure e agli strumenti DevOps, i team possono rispondere meglio alle esigenze dei clienti, migliorare l'attendibilità delle applicazioni create e raggiungere più rapidamente gli obiettivi aziendali.

Vantaggi di DevOps

I team che adottano la cultura, le procedure e gli strumenti DevOps ottengono prestazioni elevate e creano più rapidamente prodotti, incrementando la soddisfazione dei clienti. I miglioramenti a livello di collaborazione e produttività sono essenziali anche per raggiungere obiettivi aziendali come questi:

Accelerazione del time-to-market

Adattamento al mercato e alla competizione

Conservazione della stabilità e dell'affidabilità del sistema

Miglioramento del tempo medio per il ripristino

DevOps e il ciclo di vita dell'applicazione

DevOps influenza il ciclo di vita dell'applicazione nelle fasi di pianificazione, sviluppo, distribuzione e operatività. Ogni fase è basata sulle altre e nessuna fase è assegnata a un ruolo specifico. In una cultura DevOps effettiva ogni ruolo è coinvolto in qualche misura in ogni fase.

Piano

Durante la fase di pianificazione i team DevOps concepiscono, definiscono e descrivono le funzionalità delle applicazioni e dei sistemi da creare. Tengono traccia dell'avanzamento a livelli ridotti ed elevati di granularità, dalle attività di un singolo prodotto alle attività relative a portfolio o a più prodotti. La creazione di backlog, la verifica dei bug, la gestione di Agile Software Development con Scrum, l'uso delle lavagne Kanban e la visualizzazione dello stato con i dashboard sono alcuni dei modi in cui i team DevOps pianificano con flessibilità e visibilità.

Sviluppare

La fase di sviluppo include tutti gli aspetti della codifica, tra cui scrittura, test, revisione e integrazione del codice da parte dei membri del team, oltre all'inserimento del codice in artefatti della compilazione che possono essere distribuiti in diversi ambienti. I team DevOps si impegnano per innovare rapidamente senza sacrificare la qualità, la stabilità e la produttività. A tale scopo usano strumenti a produttività elevata, automatizzano i passaggi ripetitivi e manuali ed eseguono l'iterazione in piccoli incrementi tramite test automatizzati e integrazione continua.

Distribuzione

Il recapito è il processo di distribuzione di applicazioni negli ambienti di produzione in modo coerente e affidabile. La fase di recapito include anche la distribuzione e la configurazione dell'infrastruttura di base completamente regolamentata che costituisce tali ambienti.

Durante la fase di recapito i team definiscono un processo di gestione del rilascio con fasi di approvazione manuale chiare. I team configurano anche attività di controllo automatizzate che spostano le applicazioni da una fase all'altra fino alla disponibilità per i clienti. L'automazione di questi processi li rende scalabili, ripetibili e controllati. In questo modo i team che adottano DevOps possono eseguire frequentemente la distribuzione con facilità e in tutta sicurezza.

Operazioni

La fase operativa prevede la manutenzione, il monitoraggio e la risoluzione dei problemi delle operazioni negli ambienti di produzione. Durante l'adozione delle procedure DevOps i team si impegnano per assicurare l'affidabilità del sistema e la disponibilità elevata e cercano di ridurre a zero il tempo di inattività, rafforzando al tempo stesso la sicurezza e la governance. I team DevOps cercano di identificare i problemi prima che influiscano sull'esperienza dei clienti e di attenuare rapidamente i problemi quando si verificano. Questo livello di vigilanza richiede telemetria avanzata, avvisi di utilità pratica e visibilità completa delle applicazioni e del sistema sottostante.

Cultura DevOps

Benché l'adozione delle procedure DevOps automatizzi e ottimizzi i processi tramite la tecnologia, tutto è basato sulla cultura interna dell'organizzazione e sulle persone che contribuiscono al lavoro. Per stabilire una cultura DevOps sono necessarie profonde modifiche al modo in cui per persone lavorano e collaborano. Quando le organizzazioni scelgono di adottare una cultura DevOps possono tuttavia creare l'ambiente per lo sviluppo di team a prestazioni elevate.

Collaborazione, visibilità e allineamento

Uno degli aspetti fondamentali di una cultura DevOps ottimale è costituito dalla collaborazione tra team, che inizia dalla visibilità. Diversi team, ad esempio quelli addetti a sviluppo e operazioni IT, devono condividere i rispettivi processi DevOps, le priorità e le preoccupazioni. I team devono inoltre pianificare insieme il lavoro e allineare obiettivi e indicatori di successo correlati al business.

Cambiamenti a livello di ambito e responsabilità

Grazie all'allineamento, i team acquisiscono la proprietà e vengono coinvolti in fasi aggiuntive del ciclo di vita, non solo nelle fasi centrali per i rispettivi ruoli. Gli sviluppatori diventano ad esempio responsabili non solo dell'innovazione e della qualità della fase di sviluppo, ma anche delle prestazioni e della stabilità offerte dalle loro modifiche nella fase operativa. Al tempo stesso i responsabili delle operazioni IT devono includere governance, sicurezza e conformità nella fase di pianificazione e sviluppo.

Cicli di rilascio più brevi

I team DevOps rimangono flessibili rilasciando software in brevi cicli. I cicli di rilascio più brevi semplificano la pianificazione e la gestione dei rischi perché il progresso è incrementale e ciò riduce anche l'impatto sulla stabilità del sistema. La riduzione del ciclo di rilascio permette inoltre alle organizzazioni di adattarsi e reagire all'evoluzione delle esigenze dei clienti e alla pressione della competizione.

Apprendimento continuo

I team DevOps a prestazioni elevate si concentrano sulla crescita. Falliscono e rispondono immediatamente agli errori e incorporano le lezioni apprese nei processi, migliorando continuamente, incrementando la soddisfazione dei clienti e accelerando l'innovazione e l'adattabilità al mercato. DevOps è un percorso e favorisce quindi una crescita continua.

Procedure DevOps

Oltre a stabilire una cultura DevOps, i team applicano l'approccio DevOps implementando alcune procedure nell'intero ciclo di vita dell'applicazione. Alcune procedure contribuiscono all'accelerazione, all'automazione e al miglioramento di una fase specifica. Altre procedure sono relative a più fasi e aiutano i team a creare processi semplici che contribuiscono al miglioramento della produttività.

Integrazione continua e recapito continuo (CI/CD)

L'integrazione continua è una procedura di sviluppo software che prevede il merge frequente delle modifiche del codice da parte degli sviluppatori nel ramo principale del codice. L'integrazione continua si avvale del test automatizzato, che viene eseguito a ogni commit di nuovo codice per assicurare la stabilità costante del codice nel ramo principale.

Il recapito continuo corrisponde alla distribuzione automatizzata frequente delle nuove versioni dell'applicazione in un ambiente di produzione. Grazie all'automazione dei passaggi necessari per la distribuzione, i team riducono i problemi che si potrebbero verificare durante la distribuzione e consentono aggiornamenti più frequenti.

Quando vengono adottate entrambe le procedure, il processo risultante viene definito CI/CD e include l'automazione completa di tutti i passaggi tra il commit del codice e la distribuzione in produzione. L'implementazione di CI/CD consente ai team di concentrarsi sulla compilazione di codice e rimuove il sovraccarico e il potenziale errore umano dai passaggi manuali e ripetitivi. CI/CD rende anche più rapido e meno rischioso il processo di distribuzione di nuovo codice. Le distribuzioni vengono quindi eseguite più spesso e in incrementi più piccoli, aiutando i team a diventare più flessibili, più produttivi e più sicuri nell'esecuzione di codice.

Controllo della versione

Il controllo della versione consiste nella procedura di gestione del codice in versioni diverse, ovvero nel controllo delle revisioni e della cronologia delle modifiche per semplificare la revisione e il ripristino del codice. Questo approccio viene in genere implementato con sistemi di controllo della versione, ad esempio Git, che consentono a più sviluppatori di collaborare alla creazione del codice. Questi sistemi offrono un processo chiaro per l'unione delle modifiche al codice apportate negli stessi file, la gestione dei conflitti e il rollback delle modifiche a stati precedenti.

L'uso del controllo della versione è una procedura fondamentale per DevOps e aiuta i team di sviluppo a collaborare, dividere le attività di codifica tra i membri del team e archiviare tutto il codice per semplificarne il ripristino in caso di necessità.

Il controllo della versione è anche un elemento necessario in altri approcci, ad esempio l'integrazione continua e l'infrastruttura come codice.

Scopri di più su Git

Agile Software Development

Agile è un approccio per lo sviluppo software che enfatizza la collaborazione tra team, il feedback da clienti e utenti e una capacità elevata di adattamento alle modifiche tramite brevi cicli di rilascio. I team che applicano l'approccio Agile forniscono modifiche e miglioramenti continui ai clienti, raccolgono il rispettivo feedback, quindi apprendono e apportano modifiche in base ai desideri e alle esigenze dei clienti. Agile è significativamente diverso da altri framework più tradizionali come la metodologia a cascata, che include lunghi cicli di rilascio definiti da fasi sequenziali.

Kanban e Scrum sono due framework molto diffusi associati ad Agile.

Infrastruttura come codice

L'infrastruttura come codice definisce le risorse e le topologie del sistema in un modo descrittivo che consente ai team di gestire tali risorse con lo stesso approccio usato per il codice. Queste definizioni possono essere anche archiviate e sottoposte a controllo della versione in sistemi di controllo della versione, dove possono essere revisionati e ripristinati, esattamente come il codice.

L'uso dell'infrastruttura come codice aiuta i team a distribuire risorse di sistema in modo affidabile, ripetibile e controllato. L'infrastruttura come codice contribuisce anche all'automazione del codice e riduce il rischio di errore umano, in particolare per ambienti complessi di grandi dimensioni. Questa soluzione ripetibile e affidabile per la distribuzione di ambienti permette ai team di mantenere ambienti di sviluppo e test identici a quelli di produzione. Anche la duplicazione degli ambienti in data center diversi e piattaforme cloud diverse risulta più semplice e più efficiente.

Gestione della configurazione

Per gestione della configurazione si intende la gestione dello stato delle risorse in un sistema, inclusi server, macchine virtuali e database. Grazie agli strumenti di gestione della configurazione, i team possono implementare modifiche in modo controllato e sistematico, riducendo il rischio di modifiche alla configurazione del sistema. I team usano gli strumenti di gestione della configurazione per tenere traccia dello stato del sistema ed evitare le deviazioni dalla configurazione, ovvero la deviazione della configurazione di una risorsa del sistema nel tempo rispetto allo stato desiderato definito in modo specifico per tale risorsa.

In combinazione con l'infrastruttura come codice, la definizione e la configurazione del sistema sono facili da modellizzare e automatizzare, permettendo ai team di gestire ambienti complessi su larga scala.

Monitoraggio continuo

Per monitoraggio continuo si intende la visibilità completa in tempo reale delle prestazioni e dell'integrità dell'intero stack di applicazioni, dall'infrastruttura sottostante che esegue l'applicazione ai componenti software di livello superiore. La visibilità è costituita dalla raccolta di telemetria e metadati, oltre alla configurazione di avvisi per condizioni predefinite che richiedono l'attenzione di un operatore. La telemetria comprende dati sugli eventi e log raccolti da diverse parti del sistema e archiviati in posizioni in cui è possibile analizzarli e sottoporli a query.

I team DevOps a prestazioni elevate si assicurano di configurare avvisi significativi di utilità pratica e di raccogliere dati di telemetria avanzati, per poter ottenere informazioni dettagliate da quantità elevatissime di dati. Queste informazioni dettagliate aiutano i team ad attenuare i problemi in tempo reale e a scoprire come migliorare l'applicazione nei cicli di sviluppo futuri.

Strumenti DevOps

I team hanno a disposizione molti strumenti DevOps per favorire una cultura DevOps nell'organizzazione. La maggior parte dei team si affida ad alcuni strumenti, creando toolchain ottimali per le proprie esigenze per ogni fase del ciclo di vita dell'applicazione. Benché l'adozione di uno strumento specifico o una tecnologia non corrisponda all'adozione di DevOps, quando la cultura DevOps è presente e i processi sono definiti, le persone possono implementare e semplificare le procedure DevOps se scelgono gli strumenti appropriati. Ottieni gli strumenti per l'implementazione dell'approccio DevOps:

DevOps e il cloud

L'adozione del cloud ha trasformato in modo significativo il modo in cui i team creano, distribuiscono e gestiscono le applicazioni. L'adozione di DevOps inoltre offre ai team maggiori opportunità di miglioramento delle procedure e del servizio clienti.

Flessibilità cloud

Grazie alla possibilità di effettuare rapidamente il provisioning e configurare ambienti cloud in più aree con risorse illimitate, i team ottengono flessibilità per la distribuzione delle app. Invece di dover acquistare, configurare e mantenere server fisici, i team creano ora ambienti cloud complessi in pochi minuti e quindi li arrestano quando non sono più necessari.

Kubernetes

Sempre più applicazioni usano la tecnologia basata su contenitori, quindi Kubernetes sta diventando la soluzione leader di settore per l'orchestrazione di contenitori su larga scala. L'automazione dei processi di creazione e distribuzione di contenitori tramite pipeline CI/CD e del monitoraggio di tali contenitori in produzione sta diventando essenziale nell'epoca di Kubernetes.

Elaborazione serverless

Grazie allo spostamento della maggior parte delle attività di gestione dell'infrastruttura al provider di servizi cloud, i team possono concentrarsi sulle app invece che sull'infrastruttura sottostante. L'elaborazione serverless permette di eseguire le applicazioni senza dover configurare e gestire server. Alcune opzioni riducono la complessità e il rischio dello sviluppo e delle operazioni.

Inizia a usare DevOps

L'adozione di DevOps può apparire inizialmente complessa a causa delle diverse procedure e soluzioni disponibili. Il segreto consiste nell'iniziare con piccole modifiche e imparare dagli altri.

Domande frequenti

  • L'approccio DevOps viene adottato in diversi ruoli in un'organizzazione e richiede la stretta collaborazione tra i ruoli. Nella maggior parte dei casi i ruoli DevOps includono lo sviluppo, le operazioni IT, la sicurezza e il supporto tecnico.
  • DevOps non è limitato a un singolo ruolo. Chiunque contribuisca a ogni fase del ciclo di vita dell'applicazione deve adottare la cultura DevOps. In alcune organizzazioni, tuttavia, alcune persone o team si concentrano esclusivamente sull'abilitazione dell'automazione, sulla definizione di procedure e sull'implementazione di pipeline CI/CD. A volte il titolo ufficiale di questi ruoli è tecnico DevOps o specialista DevOps.
  • L'adozione di DevOps nelle organizzazioni di grandi dimensioni può risultare estremamente complessa. La modifica della cultura di un'organizzazione di grandi dimensioni e la standardizzazione dei processi e degli strumenti richiedono pazienza e costanza. Nella maggior parte delle organizzazioni di grandi dimensioni sono presenti early adopter delle procedure DevOps. Quando tali procedure raggiungono la maturità e offrono risultati positivi, gli altri team iniziano in genere ad adottare DevOps.
  • Il vero significato di DevOps è costituito dall'offerta di valore continuo ai clienti. Il risultato dell'adozione di DevOps deve essere misurato in correlazione con gli obiettivi di business. I team DevOps si allineano rispetto a tali obiettivi e li raggiungono usando cicli di rilascio brevi. Tali cicli consentono una risposta Agile al mercato e l'apprendimento continuo tramite il feedback dei clienti.
  • DevOps e Agile sono framework moderni di sviluppo software per la produzione di un prodotto, un lancio o una versione. DevOps è una cultura che favorisce la collaborazione tra i ruoli coinvolti nello sviluppo e nella manutenzione del software. Agile è una metodologia di sviluppo progettata per mantenere la produttività e favorire i rilasci nel contesto concreto di esigenze in continua evoluzione. DevOps e Agile non si escludono a vicenda e vengono spessi adottati insieme.
  • Oltre all'integrazione continua, il recapito continuo e la distribuzione continua sono procedure che permettono di automatizzare le fasi di distribuzione del software.