Che cos'è DevOps?

DevOps combina lo sviluppo (Dev) e le operazioni (Ops) per unire persone, processi e tecnologie nella pianificazione, lo sviluppo e la distribuzione dell'applicazione e nelle operazioni. DevOps consente il coordinamento e la collaborazione tra ruoli in precedenza silo come sviluppo, operazioni IT, progettazione della qualità e sicurezza.

I team adottano le impostazioni cultura, le procedure e gli strumenti devOps per aumentare la fiducia nelle applicazioni create, rispondere meglio alle esigenze dei clienti e raggiungere più velocemente gli obiettivi aziendali. DevOps aiuta i team a fornire continuamente valore ai clienti producendo prodotti migliori e più affidabili.

DevOps e il ciclo di vita dell'applicazione

DevOps influenza il ciclo di vita dell'applicazione durante le fasi di pianificazione, sviluppo, recapito e operazioni. Ogni fase si basa sulle altre fasi e le fasi non sono specifiche del ruolo. Le impostazioni cultura di DevOps coinvolgono tutti i ruoli in ogni fase in qualche misura.

Il diagramma seguente illustra le fasi dello stile di vita dell'applicazione DevOps:

Conceptual diagram that illustrates the DevOps application lifecycle.

Obiettivi e vantaggi di DevOps

Quando un team adotta impostazioni cultura, procedure e strumenti DevOps, può ottenere risultati sorprendenti:

Accelerare il time-to-market

Grazie a un aumento dell'efficienza, alla collaborazione dei team migliorata, agli strumenti di automazione e ai team di distribuzione continua, è possibile ridurre rapidamente il tempo dall'inizio del prodotto al lancio del mercato.

Adattarsi al mercato e alla concorrenza

Le esigenze cultura di DevOps richiedono ai team un focus sul primo cliente. Sposando agilità, collaborazione in team e concentrandosi sull'esperienza dei clienti, i team possono offrire costantemente valore ai clienti e aumentare la loro competitività nel marketplace.

Mantenere la stabilità e l'affidabilità del sistema

Adottando procedure di miglioramento continuo, i team sono in grado di creare una maggiore stabilità e affidabilità dei prodotti e dei servizi distribuiti. Queste procedure consentono di ridurre gli errori e i rischi.

Migliorare il tempo medio di ripristino

Il tempo medio per la metrica di ripristino indica il tempo necessario per il ripristino da un errore o da una violazione. Per gestire errori software, violazioni della sicurezza e piani di miglioramento continuo, i team devono misurare e lavorare per migliorare questa metrica.

Adottare impostazioni cultura DevOps

Per implementare completamente DevOps, è necessario adottare impostazioni cultura DevOps. Coltivare una cultura DevOps richiede cambiamenti profondi nel modo in cui le persone lavorano e collaborano. Quando le organizzazioni si impegnano in una cultura DevOps, creano un ambiente per l'evoluzione dei team con prestazioni elevate. Sebbene l'adozione di procedure DevOps automatizza e ottimizza i processi tramite la tecnologia, senza passare a una cultura DevOps all'interno dell'organizzazione e dei suoi utenti, non si otterranno i vantaggi completi di DevOps.

L'immagine seguente acquisisce gli aspetti chiave delle impostazioni cultura del sito live di Microsoft.

Diagram of Microsoft's live site culture.

Le procedure seguenti sono componenti chiave delle impostazioni cultura di DevOps:

  • Collaborazione, visibilità e allineamento: una caratteristica distintiva di una cultura DevOps sana è la collaborazione tra i team. La collaborazione inizia con visibilità. Sviluppo, IT e altri team devono condividere i processi, le priorità e le preoccupazioni di DevOps tra loro. Pianificando il loro lavoro insieme, sono meglio posizionati per allinearsi agli obiettivi e alle misure di successo in relazione all'azienda.
  • Cambiamenti nell'ambito e nella responsabilità: man mano che i team si allineano, prendono la proprietà e diventano coinvolti in altre fasi del ciclo di vita, non solo quelle centrali per i propri 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 agili rilasciando il software in cicli brevi. 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 concorrenza.
  • Apprendimento continuo: i team DevOps ad alte prestazioni stabiliscono una mentalità orientata alla crescita. Non riescono rapidamente e incorporano gli apprendimento nei processi. Si sforzano di migliorare continuamente, aumentare la soddisfazione dei clienti e accelerare l'innovazione e l'adattabilità del mercato.

Implementare procedure DevOps

Per implementare DevOps, seguire le procedure DevOps descritte nelle sezioni seguenti per tutto il 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 (CI) è la procedura usata dai team di sviluppo per automatizzare, unire e testare il codice. L'integrazione continua aiuta a rilevare i bug all'inizio del ciclo di sviluppo, che li rende meno costosi da correggere. I test automatizzati vengono eseguiti come parte del processo di integrazione continua per garantire la qualità. I sistemi CI producono artefatti e li alimentano per rilasciare i processi per favorire distribuzioni frequenti.

Il recapito continuo (CD) è un processo in base al quale il codice viene compilato, testato e distribuito in uno o più ambienti di test e produzione. La distribuzione e il test in più ambienti aumentano la qualità. I sistemi CD producono artefatti distribuibili, tra cui infrastruttura e app. I processi di rilascio automatizzati usano questi artefatti per rilasciare nuove versioni e correzioni ai sistemi esistenti. I sistemi che monitorano e inviano avvisi vengono continuamente eseguiti per ottenere visibilità sull'intero processo cd.

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. Questa procedura viene in genere implementata usando sistemi di controllo della versione come Git, che consentono a più sviluppatori di collaborare nel codice di creazione. 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.

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.

Oltre all'infrastruttura come codice, è facile creare modelli e automatizzare la definizione e la configurazione del sistema, che aiutano i team a gestire ambienti complessi su larga scala.

Monitoraggio continuo

Il monitoraggio continuo significa avere visibilità completa e in tempo reale sulle prestazioni e sull'integrità dell'intero stack di applicazioni. Questa visibilità varia dall'infrastruttura sottostante che esegue l'applicazione a componenti software di livello superiore. La visibilità viene eseguita tramite la raccolta di dati di telemetria e metadati e l'impostazione degli avvisi per condizioni predefinite che garantiscono attenzione da 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.

Pianificazione

Nella fase di pianificazione i team DevOps ideano, definiscono e descrivono le funzionalità e le funzionalità delle applicazioni e dei sistemi che pianificano per la compilazione. Teams tiene traccia dello stato di avanzamento delle attività a livelli bassi e elevati di granularità, da prodotti singoli a più portfolio di prodotti. Teams usa le procedure DevOps seguenti per pianificare con agilità e visibilità:

  • Creare backlog.
  • Tenere traccia dei bug.
  • Gestire lo sviluppo di software Agile con Scrum.
  • Usare le schede Kanban.
  • Visualizzare lo stato di avanzamento con i dashboard.

Per una panoramica delle diverse lezioni apprese e procedure adottate da Microsoft per supportare la pianificazione di DevOps nei team software aziendali, vedere Come Microsoft pianifica con DevOps.

Sviluppo

La fase di sviluppo include tutti gli aspetti dello sviluppo di codice software. In questa fase, i team di DevOps eseguono le attività seguenti:

  • Selezionare un ambiente di sviluppo.
  • Scrivere, testare, esaminare e integrare il codice.
  • Compilare il codice in artefatti da distribuire in vari ambienti.
  • Usare il controllo della versione, in genere Git, per collaborare al codice e lavorare in parallelo.

Per innovare rapidamente senza sacrificare qualità, stabilità e produttività, i team DevOps:

  • Usare strumenti altamente produttivi.
  • Automatizzare i passaggi banali e manuali.
  • Eseguire l'iterazione in piccoli incrementi tramite test automatizzati e integrazione continua (CI).

Per una panoramica delle procedure di sviluppo adottate da Microsoft per supportare il passaggio a DevOps, vedere Come Microsoft sviluppa con DevOps.

Distribuzione

Il recapito è il processo di distribuzione coerente e affidabile delle applicazioni in ambienti di produzione, idealmente tramite recapito continuo (CD).

Nella fase di recapito, i team DevOps:

  • Definire un processo di gestione delle versioni con fasi chiare di approvazione manuale.
  • Impostare controlli automatizzati per spostare le applicazioni tra le fasi fino al rilascio finale ai clienti.
  • Automatizzare i processi di recapito per renderli scalabili, ripetibili, controllati e testati correttamente.

Il recapito include anche la distribuzione e la configurazione dell'infrastruttura di base dell'ambiente di distribuzione. I team DevOps usano tecnologie come l'infrastruttura come codice (IaC), i contenitori e i microservizi per offrire ambienti di infrastruttura completamente regolamentati.

Cassaforte le procedure di distribuzione possono identificare i problemi prima che influiscano sull'esperienza del cliente. Queste procedure aiutano i team DevOps a offrire con facilità, fiducia e tranquillità.

I principi e i processi Core DevOps sviluppati da Microsoft per fornire sistemi di distribuzione efficienti sono descritti in Come Microsoft offre software con DevOps.

Operazioni

La fase operativa prevede la gestione, il monitoraggio e la risoluzione dei problemi delle applicazioni in ambienti di produzione, inclusi cloud ibridi o pubblici come Azure. I team DevOps mirano all'affidabilità del sistema, alla disponibilità elevata, alla sicurezza avanzata e a un tempo di inattività zero.

Le procedure di distribuzione automatizzate e sicure aiutano i team a identificare e mitigare rapidamente i problemi quando si verificano. Per mantenere la vigilanza sono necessari dati di telemetria avanzati, avvisi interattivi e visibilità completa su applicazioni e sistemi sottostanti.

Le procedure usate da Microsoft per gestire piattaforme online complesse sono descritte in Come Microsoft gestisce sistemi affidabili con DevOps.

Passaggi successivi

Altre risorse

Formazione e certificazioni