Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
DevOps combina lo sviluppo (Dev) e le operazioni (Ops) per unire persone, processi e tecnologie nella pianificazione delle applicazioni, sviluppo, distribuzione e 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. Una cultura DevOps coinvolge tutti i ruoli in ogni fase in qualche misura.
Il diagramma seguente illustra le fasi dello stile di vita dell'applicazione DevOps:
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 una cultura DevOps
Per implementare completamente DevOps, è necessario adottare una 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 della cultura del sito live di Microsoft.
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. Ad esempio, gli sviluppatori diventano responsabili non solo per l'innovazione e la qualità stabiliti nella fase di sviluppo, ma anche per le prestazioni e la stabilità che le loro modifiche portano nella fase operativa. Allo stesso tempo, gli operatori IT sono sicuri di includere governance, sicurezza e conformità nel piano e nella fase di 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 poiché lo stato di avanzamento è incrementale, riducendo così l'impatto sulla stabilità del sistema. L'abbreviamento del ciclo di rilascio consente anche alle organizzazioni di adattarsi e reagire alle esigenze dei clienti in continua evoluzione e alla pressione competitiva.
- Apprendimento continuo: i team DevOps ad alte prestazioni stabiliscono una mentalità orientata alla crescita. Falliscono rapidamente e incorporano gli insegnamenti nei loro processi. Si sforzano di migliorare continuamente, aumentare la soddisfazione dei clienti e accelerare l'innovazione e l'adattabilità del mercato.
Implementare pratiche DevOps
Per implementare DevOps, seguire le procedure DevOps descritte nelle sezioni seguenti per tutto il ciclo di vita dell'applicazione. Alcune di queste procedure consentono di accelerare, automatizzare e migliorare una fase specifica. Altri si estendono su diverse fasi, aiutando i team a creare processi semplici che consentono di migliorare la 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. Il CI aiuta a rilevare i bug in anticipo nel ciclo di sviluppo, rendendoli 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 forniscono ai processi di rilascio per facilitare implementazioni 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 garantire visibilità sull'intero processo di CD.
Controllo della versione
Il controllo della versione è la pratica di gestire il codice nelle versioni, tenendo traccia 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 forniscono un processo chiaro per unire le modifiche al codice che si verificano negli stessi file, gestire i conflitti e ripristinare le modifiche apportate agli stati precedenti.
L'uso del controllo della versione è una pratica fondamentale di DevOps, che aiuta i team di sviluppo a lavorare insieme, dividere le attività di codifica tra i membri del team e archiviare tutto il codice per semplificare il ripristino, se necessario. Il controllo della versione è anche un elemento necessario in altre procedure, ad esempio l'integrazione continua e l'infrastruttura come codice.
Sviluppo di software Agile
Agile è un approccio di sviluppo software che enfatizza la collaborazione del team, il feedback dei clienti e degli utenti e l'elevata adattabilità al cambiamento attraverso brevi cicli di rilascio. I team che praticano Agile forniscono modifiche e miglioramenti continui ai clienti, raccolgono il loro feedback, quindi imparano e regolano in base alle esigenze e alle esigenze dei clienti. Agile è sostanzialmente diverso da altri framework più tradizionali, ad esempio a cascata, che include cicli di rilascio lunghi definiti da fasi sequenziali. Kanban e Scrum sono due framework comuni associati a Agile.
Infrastruttura come codice
L'infrastruttura come codice definisce le risorse di sistema e le topologie in modo descrittivo che consente ai team di gestire tali risorse come codice. Queste definizioni possono anche essere archiviate e versionate nei sistemi di controllo della versione, in cui possono essere esaminate e ripristinate, proprio come accade per il codice.
La pratica dell'infrastruttura come codice consente ai team di distribuire le risorse di sistema in modo affidabile, ripetibile e controllato. L'infrastruttura come codice consente anche di automatizzare la distribuzione e di ridurre il rischio di errori umani, soprattutto per ambienti di grandi dimensioni complessi. Questa soluzione ripetibile e affidabile per la distribuzione dell'ambiente consente ai team di gestire ambienti di sviluppo e test identici all'ambiente di produzione. La duplicazione di ambienti in data center diversi e piattaforme cloud diventa analogamente più semplice ed efficiente.
Gestione della configurazione
La gestione della configurazione si riferisce alla gestione dello stato delle risorse in un sistema, inclusi server, macchine virtuali e database. Usando gli strumenti di gestione della configurazione, i team possono implementare le modifiche in modo controllato e sistematico, riducendo i rischi di modifica della configurazione del sistema. I team usano gli strumenti di gestione della configurazione per tenere traccia dello stato del sistema e contribuire a evitare la deriva della configurazione, ovvero come la configurazione di una risorsa di sistema possa deviare nel tempo rispetto allo stato desiderato definito per essa.
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à si ottiene tramite la raccolta di dati di telemetria e metadati e l'impostazione degli avvisi per condizioni predefinite che richiedono attenzione da parte di un operatore. I dati di telemetria comprendono i dati degli eventi e i log raccolti da varie parti del sistema, che vengono archiviati in cui possono essere analizzati e sottoposti a query.
I team DevOps ad alte prestazioni assicurano di impostare avvisi interattivi e significativi e raccogliere dati di telemetria avanzati in modo da poter trarre informazioni dettagliate da grandi quantità di dati. Queste informazioni dettagliate consentono al team di attenuare i problemi in tempo reale e vedere come migliorare l'applicazione nei cicli di sviluppo futuri.
Planning
Nella fase di pianificazione, i team DevOps ideano, definiscono e descrivono le funzionalità e le capacità delle applicazioni e dei sistemi che pianificano di sviluppare. 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 arretrati.
- Tenere traccia dei bug.
- Gestire lo sviluppo di software Agile con Scrum.
- Utilizza 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.
Consegna!
Il processo di consegna è la distribuzione coerente e affidabile delle applicazioni negli ambienti di produzione, idealmente tramite consegna continua (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 servizio di consegna include anche l'implementazione e la configurazione dell'infrastruttura fondamentale dell'ambiente di consegna. I team DevOps usano tecnologie come l'infrastruttura come codice (IaC),i contenitori e i microservizi per offrire ambienti di infrastruttura completamente regolamentati.
Le procedure di distribuzione sicure possono identificare i problemi prima che influiscano sull'esperienza del cliente. Queste procedure aiutano i team DevOps a fornire continuamente con facilità, sicurezza 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.
Operations
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
- Pianificare carichi di lavoro efficienti con DevOps
- Sviluppare software moderno con DevOps
- Offrire servizi di qualità con DevOps
- Gestire sistemi affidabili con DevOps
Altre risorse
- Soluzioni DevOps in Azure
- Il percorso devOps in Microsoft
- Iniziare a eseguire DevOps con Azure
- Sicurezza in DevOps (DevSecOps)
- Che cos'è la progettazione della piattaforma?
Formazione e certificazioni
- Introduzione ad Azure DevOps
- Introduzione a DevOps Dojo: Creare efficienze che supportano l'azienda
- AZ-400: Introduzione a un percorso di trasformazione DevOps
- Facilitare la comunicazione e la collaborazione
- Esame AZ-400: progettazione e implementazione di soluzioni Microsoft DevOps
- AZ-400: Implementare la sicurezza e convalidare le codebase per la conformità