Raccomandazioni per migliorare la velocità di compilazione

Si applica a questa raccomandazione per l'eccellenza operativa di Azure Well-Architected Framework:

OE:04 Ottimizzare i processi di sviluppo e controllo della qualità del software seguendo le procedure comprovate del settore per lo sviluppo e il test. Per la designazione di ruolo non ambigua, standardizzare le procedure tra i componenti, ad esempio strumenti, controllo del codice sorgente, modelli di progettazione delle applicazioni, documentazione e guide di stile.

Guide correlate: Consigli per la standardizzazione di strumenti e processi | Consigli per l'uso dell'integrazione continua

Questa guida descrive i suggerimenti per migliorare le prestazioni dell'infrastruttura di distribuzione. È importante avere un processo di compilazione in esecuzione il primo giorno dello sviluppo del prodotto. Le compilazioni sono l'heartbeat del sistema di recapito continuo perché lo stato della compilazione viene visualizzato quando il prodotto è distribuibile. Le compilazioni forniscono informazioni cruciali sullo stato del prodotto, quindi è consigliabile cercare sempre compilazioni veloci.

È difficile risolvere un problema di compilazione se la compilazione richiede più tempo. Quando si verificano ritardi e diventano normalizzati, i team tendono a diventare meno motivati a risolvere il problema.

Strategie di progettazione chiave

Tempi di compilazione

Per eseguire compilazioni più veloci, è possibile:

  • Scegliere gli agenti che soddisfano i requisiti di prestazioni: velocizzare le compilazioni selezionando i computer di compilazione corretti. Macchine veloci possono fare la differenza tra ore e minuti. Se le pipeline si trovano in Azure Pipelines, è possibile eseguire i processi usando un agente ospitato da Microsoft. Quando si usano agenti ospitati da Microsoft, la manutenzione e gli aggiornamenti vengono presi in considerazione automaticamente. Per altre informazioni, vedere Agenti ospitati da Microsoft.

  • Ottimizzare il percorso del server di compilazione: quando si compila il codice, i dati vengono inviati attraverso la rete. Gli input per le compilazioni vengono recuperati da un repository del controllo del codice sorgente e dal repository degli artefatti. L'output del processo di compilazione deve essere copiato, inclusi gli artefatti compilati, i report di test, i risultati del code coverage e i simboli di debug. È importante che queste azioni di copia vengano eseguite rapidamente. Se si usa il proprio server di compilazione, assicurarsi che il server di compilazione si trovi vicino alle origini e a un percorso di destinazione. Caricamenti e download rapidi possono ridurre il tempo di compilazione complessivo.

  • Scalabilità orizzontale dei server di compilazione: un singolo server di compilazione potrebbe essere sufficiente per un piccolo prodotto. Man mano che aumentano le dimensioni e l'ambito del prodotto e il numero di team che lavorano sul prodotto, un singolo server potrebbe non essere sufficiente. Scalare orizzontalmente l'infrastruttura su più macchine quando si raggiunge il limite. Per altre informazioni, vedere Creare e gestire pool di agenti.

  • Ottimizzare la compilazione:

    • Aggiungere processi paralleli per velocizzare il processo di compilazione. Per altre informazioni, vedere Pagare i processi paralleli e configurarli.

    • Abilitare le esecuzioni parallele del gruppo di test, che spesso consentono di risparmiare molto tempo, soprattutto quando si eseguono test di integrazione e interfaccia utente. Per altre informazioni, vedere Eseguire test in parallelo per qualsiasi test runner.

    • Usare la nozione di moltiplicatore, in cui è possibile scalare le compilazioni su più agenti di compilazione. Per altre informazioni, vedere Specificare i processi nella pipeline.

    • Prendere in considerazione lo spostamento di test di integrazione, interfaccia utente e smoke test in una pipeline di versione. Il passaggio a una pipeline di versione migliora la velocità di compilazione e la velocità del ciclo di feedback di compilazione.

    • Pubblicare gli artefatti di compilazione in una soluzione di gestione dei pacchetti, ad esempio NuGet o Maven. La pubblicazione in una soluzione di gestione dei pacchetti consente di riutilizzare più facilmente l'artefatto di compilazione.

Intervento umano

L'organizzazione potrebbe scegliere di creare diversi tipi di compilazioni per ottimizzare i tempi di compilazione. Le build possibili includono:

  • Compilazione di integrazione continua (CI): lo scopo di questa compilazione è garantire che il codice venga compilato e che vengano eseguiti unit test. Questa compilazione viene attivata a ogni commit. Funge da heartbeat del progetto e fornisce immediatamente feedback qualitativo al team. Per altre informazioni, vedere Specificare gli eventi che attivano le pipeline.

  • Compilazione notturna: lo scopo di una compilazione notturna non è solo compilare il codice, ma anche per garantire che qualsiasi gruppo di test di grandi dimensioni non efficiente venga eseguito a cadenza regolare per ogni compilazione. In genere, questi test includono integrazione, interfaccia utente o smoke test. Per altre informazioni, vedere Configurare le pianificazioni per le pipeline.

  • Build di versione: oltre alla compilazione e all'esecuzione di test, questa compilazione compila anche la documentazione dell'API, i report di conformità, la firma del codice e altri passaggi che non sono necessari ogni volta che viene compilato il codice. Questa compilazione fornisce la copia golden che viene inserita nella pipeline di versione per infine la distribuzione nell'ambiente di produzione.

I tipi di compilazioni necessari per l'organizzazione dipendono da fattori quali la maturità del team e dell'organizzazione, il tipo di prodotto su cui si sta lavorando e la strategia di distribuzione.

Facilitazione di Azure

Azure DevOps è una raccolta di servizi che consentono di creare una pratica di sviluppo collaborativa, efficiente e coerente.

Usare Azure Pipelines per compilare e rilasciare servizi per supportare l'integrazione continua e il recapito continuo (CI/CD) delle applicazioni.

Usare GitHub Actions per Azure per automatizzare i processi CI/CD e integrarsi direttamente con Azure per semplificare le distribuzioni. È anche possibile creare flussi di lavoro che compilano e testano ogni richiesta pull nel repository o distribuiscono richieste pull unite nell'ambiente di produzione usando GitHub Actions per Azure.

Gli agenti ospitati da Microsoft sono disponibili in modo nativo in Azure Pipelines. Questi agenti sono macchine virtuali a uso singolo usate solo per un processo e quindi eliminate, che offre un'opzione di gestione semplice per le compilazioni.

Elenco di controllo per l'eccellenza operativa

Fare riferimento al set completo di raccomandazioni.