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à