Condividi tramite


Toolchain DevOps

Una toolchain DevOps è una raccolta di strumenti che consente ai team devOps di collaborare nell'intero ciclo di vita del prodotto e di affrontare le principali nozioni fondamentali di DevOps.

Gli strumenti di una toolchain DevOps includono operano come unità integrata per la pianificazione, l'integrazione continua, il recapito continuo, le operazioni, la collaborazione e il feedback. È possibile esaminare alcuni esempi di tecnologie DevOps in diverse fasi di DevOps in Definire l'ecosistema di tecnologie DevOps.

Considerazioni sulla toolchain DevOps

  • I processi di DevOps possono essere già in uso nell'intera organizzazione quando si seleziona una toolchain. È consigliabile trovare il giusto equilibrio tra l'adozione di tecnologie adatte alle esigenze del team e l'obiettivo di standardizzare ed evitare ecosistemi DevOps eterogenei nell'organizzazione.

  • È possibile adottare diversi tipi di toolchain DevOps:

    • All-in-one: offre una soluzione completa che potrebbe non essere integrata con altri strumenti di terze parti. Le toolchain all-in-one possono essere utili per le organizzazioni che iniziano il percorso DevOps. Esempio: toolchain completa di Azure DevOps.
    • Personalizzato: consente ai team di portare e combinare gli strumenti esistenti che conoscono e hanno già in uso nella toolchain DevOps più ampia. L'integrazione è essenziale per questi tipi di toolchain per evitare di passare da uno schermo all'altro, accedere a più posizioni e dover condividere informazioni tra gli strumenti. Esempio: Azure DevOps e gitHub Toolchain.
  • Prendere in considerazione l'uso di toolchain che vengono aggiornati regolarmente e che hanno assistenza disponibile ogni volta che è necessario tramite posta elettronica o portale online. Questo è un requisito per qualsiasi prodotto o servizio che si trova nel percorso critico per il mercato.

Pianificazione

  • Prendere in considerazione l'adozione di uno strumento che supporta le procedure di pianificazione continua:
    • Pianificazione del rilascio
    • Identificazione epica e funzionalità
    • Definizione priorità
    • Stima
    • Definizione della storia utente
    • Perfezionamento del backlog
    • Pianificazione dello sprint
    • Scrum giornaliero
    • Revisione sprint
    • Retrospettiva

Integrazione continua e recapito continuo

  • Quando si implementa l'integrazione continua (CI)/Continuous Delivery (CD), prendere in considerazione l'adozione di uno strumento che supporta:
    • Sistemi di controllo della versione. Tutto il contenuto del progetto deve essere archiviato in un unico repository di controllo della versione, ad esempio Git: codice, test, script di database, script di compilazione e distribuzione e qualsiasi altra operazione necessaria per creare, installare, eseguire e testare l'applicazione.
    • Strategia di diramazione.
    • Compilazioni automatizzate.
  • La scelta del repository è influenzata anche dai requisiti di sovranità/residenza dei dati. Se è necessario ospitare i dati in locale in un paese o in un'area geografica diversa dagli Stati Uniti, è necessario disporre di repository Azure DevOps quando GitHub Repos non può essere usato.
  • Per ridurre al minimo la quantità di configurazione manuale necessaria per effettuare il provisioning delle risorse, prendere in considerazione l'adozione dell'infrastruttura come codice (IaC). IaC consente di applicare procedure di progettazione software come test e controllo delle versioni, che rendono l'infrastruttura e le distribuzioni automatizzate, coerenti e ripetibili. Mantenere gli script e i modelli sotto il controllo del codice sorgente come qualsiasi altro codice gestito.
  • Adottare gli strumenti di analisi del codice per rilevare i difetti del codice il prima possibile. Includere controlli di pre-distribuzione per convalidare e confermare le modifiche prima di qualsiasi distribuzione (ad esempio: funzione "what-if".
  • Gli strumenti CI/CD accelerano il time-to-market per il prodotto. Gli strumenti che consentono di parallelizzare le attività e sfruttare la scalabilità elastica nell'infrastruttura ospitata nel cloud migliorano le prestazioni del processo CI/CD.
  • Prendere in considerazione l'uso delle funzionalità dello strumento CI/CD che supportano la misura delle prestazioni di DevOps. I dashboard e i report possono tenere traccia degli aspetti del processo di sviluppo, ad esempio lead time, tempo del ciclo, velocità del lavoro e così via.

Operazioni continue

Le operazioni continue sono un obiettivo che consente alle organizzazioni di mantenere la continuità dell'output tra sistemi interni e clienti attraverso la distribuzione ininterrotta di servizi o funzioni critiche. Gli obiettivi delle operazioni continue sono:

  • Per ridurre o eliminare la necessità di tempi di inattività pianificati o interruzioni, ad esempio manutenzione pianificata, ottimizzazione della capacità e distribuzione.
  • Per aumentare l'affidabilità complessiva e la resilienza dei sistemi in tre aspetti: con persone, processi e strumenti.

Usare gli strumenti nativi del cloud per:

  • Monitorare le metriche chiave per le prestazioni e la disponibilità del servizio.
  • Ottenere esperienza digitale e informazioni dettagliate sui clienti.
  • Generare risposte guidate dall'intelligence per eventi imprevisti, ripristino del sistema o ridimensionamento.
    • Diagnostica di Azure e Application Insights sono il metodo standard per tenere traccia dell'integrità e dello stato delle risorse di Azure. Monitoraggio di Azure offre anche monitoraggio e gestione centralizzate per soluzioni cloud o ibride.
  • Automatizzare la manutenzione proattiva e le attività come la distribuzione o gli aggiornamenti del sistema.
    • Automazione di Azure è uno strumento nativo del cloud che è possibile usare per creare un'automazione basata su eventi per diagnosticare e risolvere i problemi.

Collaborazione e feedback

  • I cicli di feedback rapido sono al centro del processo CI/CD. Uno strumento CI/CD usa commenti e suggerimenti per risolvere le condizioni nella logica del flusso di lavoro CI/CD e visualizza le informazioni agli utenti, in genere tramite un dashboard.

  • Il supporto per le notifiche tramite posta elettronica e l'integrazione con IDE o piattaforme di comunicazione garantisce che sia possibile rimanere informati su cosa accade senza dover controllare un dashboard. Assicurarsi di avere la flessibilità necessaria per configurare gli avvisi ricevuti, in quanto il recupero di troppi avvisi li trasforma in rumore di fondo.

  • Qualsiasi strumento scelto per la collaborazione deve supportare le procedure di collaborazione seguenti:

    • Collaborazione Kanban
    • Collaborazione di contenuti wiki
    • Collaborazione chatops
    • Sala del team

Raccomandazioni della toolchain DevOps per le zone di destinazione di Azure

Le toolchain DevOps per l'implementazione della zona di destinazione di Azure devono considerare tutte le fasi devOps descritte in precedenza:

  • Pianificazione
  • CI/CD (incluse funzionalità di automazione, ad esempio Infrastruttura come codice)
  • Operazioni
  • Collaborazioni e feedback

Esaminare le indicazioni per la distribuzione e le considerazioni sulla zona di destinazione per scegliere un'opzione di implementazione in Scelta dell'adozione della zona di destinazione.

Indipendentemente dalla metodologia selezionata (avviare piccole e espanse o su scala aziendale), esistono alcune topologie comuni che le aziende tendono a seguire durante la progettazione dei flussi di lavoro DevOps e delle toolchain.

  • Toolchain completa di Azure DevOps: per le aziende che già investono pesantemente nell'ecosistema Microsoft, questa topologia consente di sfruttare appieno le integrazioni native tra prodotti e servizi Microsoft e semplificare i processi chiave.
  • Toolchain di Azure DevOps e GitHub: questa topologia consente di usare i punti di forza di Azure e GitHub come parte di una soluzione ben integrata.

Toolchain completa di Azure DevOps

Diagramma di una toolchain completa di Azure DevOps.

Fase DevOps Strumenti
Pianificazione Azure Boards offre funzionalità di pianificazione potenti e flessibili per sviluppatori e altri utenti, inclusi backlog gerarchici, bacheche Kanban personalizzabili, personalizzazione avanzata dei processi, dashboard del team e report personalizzati.
CI/CD Azure Repos consente di creare repository Git privati e supporta client Git diversi, strategia di diramazione e protezione. Azure Repos offre anche la residenza dei dati localizzata nel cloud per consentire la conformità alle normative europee. Azure Pipelines consente ai clienti di configurare pipeline automatizzate per CI/CD, tra cui per la creazione di report di test avanzati e offre un potente supporto per le pipeline a più fasi. Le autorizzazioni, i controlli, i controlli personalizzati e la creazione di report automatizzati dei risultati dei test in Azure Pipelines consentono di applicare procedure consigliate per la sicurezza, la conformità e la distribuzione sicura nell'organizzazione e supportano l'esecuzione e la scalabilità parallele dei passaggi. Azure Artifacts fornisce un feed per archiviare i pacchetti e per esaminare e convalidare ogni pacchetto a scopo di sicurezza e fornisce anche un controllo e un controllo granulari delle autorizzazioni. I piani di test di Azure in Azure DevOps offrono una soluzione di gestione dei test basata su browser per test esplorativi, manuali e di accettazione degli utenti. Gli utenti dei piani di test di Azure usano in genere Anche Azure Boards per la pianificazione e la gestione dei progetti. È possibile collegare storie utente e altri requisiti ai test case e documentare i bug rilevati tramite test. Adottare le estensioni del Marketplace per DevOps per migliorare l'analisi statica del codice con strumenti come scanner di credenziali, scanner open source, bug e scanner di vulnerabilità e altro ancora.
Operazioni I dashboard e i report di Azure forniscono report personalizzati che consentono di monitorare le metriche chiave delle prestazioni del servizio. Diagnostica di Azure e Application Insights rappresentano i metodi standard per rilevare l'integrità e lo stato delle risorse di Azure. Monitoraggio di Azure offre monitoraggio e gestione centralizzati. Automazione di Azure può essere usato per creare un'automazione basata su eventi per diagnosticare e risolvere i problemi. Defender per il cloud DevOps usa una console centrale per consentire ai team di sicurezza di proteggere le applicazioni e le risorse dal codice al cloud in ambienti multi-pipeline, tra cui Azure DevOps e GitHub.
Collaborazioni e feedback Il wiki di Azure DevOps consente di condividere informazioni con i membri di altri team e supporta la modifica collaborativa del contenuto e della struttura. Azure Boards offre collaborazione Kanban e supporto per commenti e discussioni negli elementi di backlog. È possibile integrare Microsoft Teams con Azure DevOps per un'esperienza di collaborazione team completa.

Toolchain di Azure DevOps e GitHub

Diagramma di una toolchain di Azure DevOps e GitHub.

Fase DevOps Strumenti
Pianificazione Azure Boards offre una soluzione stabile e scalabile per la pianificazione, la gestione dei repository, la visualizzazione dei dati e l'organizzazione gerarchica degli elementi di lavoro. Si integra con GitHub, in modo da poter collegare elementi di lavoro e commit di GitHub. Consente anche di scegliere il flusso di lavoro ideale, sia che si tratti di un flusso di lavoro semplice, predefinito o di un flusso di lavoro personalizzato creato con il motore di personalizzazione di Azure Boards potente e flessibile. Quando è necessario visualizzare i dati, Azure Boards consente di compilare e configurare facilmente dashboard personalizzati e monitorare lo stato di avanzamento durante i cicli di vita del progetto.
CI/CD Usare la versione GitHub Enterprise (GHE) di GitHub, che include repository GitHub, GitHub Advanced Security (GHAS) e GitHub Advanced Security per Azure DevOps. GHAS include CodeQL, analisi del codice, analisi dei segreti e revisione delle dipendenze. GHE offre anche Codespaces, un IDE cloud che è possibile usare per sviluppare codice e che può sostituire Visual Studio Code, che in genere le organizzazioni includono in scenari Azure DevOps full-stack. È possibile usare GitHub Actions per automatizzare i flussi di lavoro non di compilazione se i repository si trovano in GitHub. Se si hanno scenari più complessi in cui è necessario accedere al codice dall'esterno di GitHub o richiedere una gestione centralizzata per i modelli di flusso di lavoro e le pipeline di compilazione, adottare Azure Pipelines. Per Azure Boards è possibile integrare Azure Pipelines con i repository GitHub. Per informazioni sull'integrazione di Azure DevOps e GitHub, vedere Usare Azure DevOps e GitHub. GitHub Packages è un servizio di pacchetto software che consente di ospitare i propri pacchetti privatamente o pubblicamente. GitHub offre il supporto del registro contenitori per l'hosting di immagini Docker o OCI. Sono necessari token di accesso per pubblicare, installare o eliminare pacchetti e proteggere la gestione del ciclo di vita dei pacchetti. Per automatizzare i pacchetti, è possibile integrare GitHub Packages con GitHub Actions, API GitHub e webhook per creare flussi di lavoro DevOps che includono codice, integrazione continua e distribuzioni in un'unica interfaccia.
Operazioni GitHub Insights fornisce report analitici basati sui dati dell'istanza di GitHub Enterprise Server per comprendere e migliorare il processo di distribuzione del software. Per la diagnostica e la gestione della zona di destinazione, usare i servizi di Azure consigliati nello scenario Azure DevOps full-stack.
Collaborazione e feedback È possibile usare Le discussioni di GitHub per condividere domande, idee, conversazioni, richieste di commenti (RFC), pianificazione delle risorse e annunci. Usare Azure Boards per creare e configurare facilmente dashboard personalizzati e monitorare lo stato di avanzamento durante i cicli di vita del progetto. Adottare Microsoft Teams per un'esperienza completa di collaborazione in team.