IT knowledge base
CTRL+F per cercare la tua parola chiave

Sette modelli di pipeline di consegna continua

La traduzione dell'articolo è stata preparata in previsione dell'inizio del corso "DevOps Practices and Tools".

In questo momento, hai la possibilità di prendere il corso a un prezzo speciale . Scopri di più.


Al giorno d'oggi, l'agilità aziendale si basa spesso sull'agilità del codice. La capacità di rilasciare in modo rapido e sicuro su richiesta i prodotti e servizi digitali di oggi è un vero vantaggio competitivo.

Dal 2004 sviluppiamo, assembliamo e implementiamo pipeline di codice per automatizzare applicazioni e infrastrutture. In questo articolo, condividiamo sette modelli che migliorano la velocità, la flessibilità e la qualità, aumentando al contempo l'autonomia, la trasparenza e la facilità di manutenzione.

Consegna continua

La consegna continua è "la capacità di consegnare in modo affidabile e rapido tutti i tipi di cambiamento nelle mani degli utenti". Se osservi la distribuzione continua nella matrice Agile vs Effort, puoi vedere che si trova proprio tra l'integrazione continua e la distribuzione continua. Sono spesso indicati collettivamente come CI / CD.

Nel DevOps Status Report 2019, oltre 31.000 intervistati hanno segnalato l'efficacia dei loro processi di sviluppo e consegna. Ma la differenza tra leader e ritardatari è sbalorditiva. I leader hanno implementazioni 200 volte più veloci e velocità di implementazione 100 volte più veloci, oltre a un ripristino degli incidenti 2.600 volte più veloce e una probabilità 7 volte inferiore di rilasci di rollback.

Questo studio mostra che per i leader, velocità e stabilità non sono opposti! Puoi ottenere entrambi (in effetti, hai bisogno di entrambi) per ottenere un reale vantaggio competitivo per i tuoi prodotti e servizi digitali.

Condutture

Le condutture sono i principali artefatti tecnici della consegna continua. Le pipeline moderne trasformano il codice sorgente dell'applicazione e dell'infrastruttura in pacchetti con versione che possono essere distribuiti in qualsiasi ambiente. Automatizzando tutte le attività di routine di assemblaggio e distribuzione dei sistemi, gli sviluppatori possono concentrarsi sull'implementazione di funzionalità veramente utili.

Sebbene le pipeline di codice siano in circolazione da quasi 20 anni - CruiseControl, uno dei nostri primi preferiti, è stato rilasciato nel 2001 - si sono evolute in modo significativo negli ultimi anni.

Sulla base della nostra esperienza e di quella dei nostri clienti, abbiamo identificato sette modelli di pipeline che abbiamo osservato in molte aziende tecnologiche moderne.

Modelli di pipeline

Modello 1 - pipeline come codice

La logica della pipeline viene codificata e archiviata insieme al codice dell'applicazione e dell'infrastruttura. I contenitori vengono utilizzati per eseguire le pipeline.

  • Nessuna impostazione della GUI! Tutta la logica della pipeline è gestita come qualsiasi altro codice applicativo e segue le stesse strategie di ramificazione e revisione.
  • L'esecuzione di pipeline in contenitori consente alla piattaforma CI/CD di supportare molti carichi di lavoro diversi e ogni carico di lavoro può avere il proprio ambiente di compilazione per soddisfare requisiti specifici.
  • Le immagini del contenitore dell'ambiente di compilazione utilizzano immagini Docker verificate.
  • La configurazione del CI runner è automatizzata, la stessa e non necessita di configurazione manuale. I corridori CI possono scalare e mettere in standby secondo necessità per ridurre al minimo la latenza.
  • I segreti vengono archiviati all'esterno delle pipeline e il loro output viene mascherato, il che aumenta la sicurezza.

Modello 2 - trasferimento della logica a librerie riutilizzabili

La logica generale delle pipeline viene portata in librerie riutilizzabili, a cui è possibile fare riferimento dal codice delle pipeline, nonché sviluppare e testare in modo indipendente.

  • Tratta le librerie di pipeline come qualsiasi altro software. Hanno i propri repository, pipeline, unit test e rilasci.
  • Quando possibile, le pipeline utilizzano strumenti specifici della lingua come Make, Rake, npm, Maven, ecc. per eseguire attività esterne. Al fine di semplificare la pipeline e mantenere identici il processo di compilazione locale e la CI.
  • Le biblioteche sono facili da trovare e hanno una buona documentazione.

Modello 3 - pipeline separate per compilazione e distribuzione

Le pipeline di compilazione e distribuzione devono essere separate logicamente, gestite ed eseguite in modo indipendente. Dovrebbe esserci una possibilità di avvio automatico e manuale.

  • Dovrebbe esserci un assembly e molte distribuzioni. Concentrati sull'assemblaggio. Di conseguenza, vengono visualizzati artefatti che possono essere distribuiti più volte.
  • Sii indipendente da ciò che ti circonda. In assenza di pacchetti specifici per l'ambiente e impostazione dei parametri nelle variabili di ambiente, lo stesso assembly può funzionare in qualsiasi ambiente.
  • Impacchetta tutto insieme. Tutto: tutto il codice sorgente, incluso il codice dell'infrastruttura, deve essere tenuto insieme per diventare un pacchetto con versione.

Modello 4 - lanciare la giusta pipeline

I commit del ramo, le richieste pull e l'unione al ramo principale possono tutti attivare diversi comportamenti della pipeline ottimizzati per un team specifico.

  • L'apertura di una richiesta pull crea un ambiente di test effimero.
  • Le unioni upstream vengono distribuite in un ambiente non di produzione o demo contenente il codice integrato più recente.
  • La creazione di nuovi tag determina il rilascio di una versione.

Modello 5 - Feedback veloce

Ogni commit avvia automaticamente una pipeline specifica. Allo stesso tempo, le condutture di assemblaggio sono ottimizzate appositamente per la velocità e la notifica rapida dei problemi emergenti.

  • Le pipeline di assemblaggio utilizzano la parallelizzazione per lavori indipendenti per migliorare le prestazioni.
  • Le pipeline di creazione rapida completano le attività richieste in pochi minuti.
  • Ogni esecuzione riuscita termina con la creazione di una versione del pacchetto e i risultati dell'analisi statica.
  • Con l'aiuto delle notifiche multicanale, puoi impostare avvisi sullo stato delle richieste del pool su dashboard, in chat, via e-mail, ecc.

Modello 6 - rilasci interni stabili

Vengono distribuiti solo i pacchetti con versione creati dalla pipeline di compilazione. Queste distribuzioni vengono attivate manualmente o automaticamente da eventi.

  • Ogni ramo del codice riceve un ambiente effimero completo, che prende il nome dal nome del ramo, che può essere facilmente creato o distrutto.
  • Qualsiasi ingegnere può creare o rimuovere un ambiente effimero.
  • I runner CI sfruttano le funzionalità IAM native del cloud con autorizzazioni temporanee per ottenere i ruoli e le autorizzazioni necessari per svolgere il proprio lavoro.

Modello 7 - cronologia delle versioni

Distribuisci le versioni con tag alla produzione, automatizza i rapporti e mantieni una cronologia delle distribuzioni.

  • Una "porta di rilascio" sotto forma di codice e processi di rilascio standardizzati consentono rilasci su richiesta.
  • Le versioni automatizzate lasciano una storia che può essere ulteriormente analizzata.
  • Il gate di rilascio può chiamare API esterne e utilizzare la risposta per decidere se continuare il rilascio o interromperlo.

I problemi

Ci imbattiamo sempre più in questi sette modelli di pipeline e li usiamo quando lavoriamo con i clienti. Ma mentre rappresentano un enorme balzo in avanti in termini di velocità e stabilità, non sono privi di inconvenienti.

La sicurezza è il problema più grande che vediamo. È associato alla complessità dei processi di automazione che sono stati tradizionalmente incentrati sull'uomo. La complessità della pipeline, l'accettazione del team, il cambiamento culturale e l'automazione del database sono altri importanti problemi che devono essere affrontati. Ma questo è tutto risolvibile e ci lavoriamo ogni giorno.

Risultato

L'agilità aziendale si basa sulla flessibilità del codice. Per i prodotti e servizi digitali moderni, la capacità di rilasciare su richiesta in modo rapido e sicuro è un vero vantaggio competitivo per le aziende. Le pipeline del codice, e in particolare i sette modelli descritti, possono aiutare la tua organizzazione a fare passi da gigante in termini di velocità e stabilità di rilascio e mantenere i tuoi team a livello di leadership.

Visualizza l'offerta speciale.

Leggi di più:

  • Cinque buone pratiche per gli esportatori Prometheus per migliorare la produttività