I vantaggi dell’integrazione e della distribuzione continua

Istanza mancante, prova a ricaricare le istanze

Cosa ci può dare CI/CD?

CI/CD può darci enormi guadagni in agilità e velocità: possiamo passare dal rilascio su un programma mensile al rilascio settimanale, poi quotidiano e infine molte volte in un giorno.

Aumento della produttività

C’è un motivo per cui tutte le aziende di software competitive utilizzano l’integrazione continua, ed è perché li aiuta a raggiungere i loro obiettivi in modo prevedibile. Una pipeline CI/CD rimuove tutte le attività manuali, il che comporta meno errori, meno tempo sprecato per la correzione di contenuti e più tempo libero per concentrarsi sulle funzionalità.

Prodotti migliori

La sfida più grande quando si avvia un nuovo progetto è capire come sarà e come funzionerà. Un buon design è la metà della battaglia vinta. Un cattivo design trascinerà lo sviluppo, causerà frustrazione e finirà con risultati deludenti per tutte le persone coinvolte.

CI/CD non solo abbrevia il ciclo di sviluppo, ma ci permette anche di progredire in fasi più piccole, iterare e rivalutare i progressi più spesso. Di conseguenza, abbiamo una migliore possibilità di soddisfare le esigenze precise dei nostri utenti.

Qualità superiore, meno guasti

La pipeline sarà sempre più migliore di noi nell’esecuzione dei test. Le pipeline sono implacabili e senza compromessi: le pipeline tengono a bad bad code a bad. Possiamo utilizzarli per applicare i controlli di qualità nelle richieste pull. Linters, dama di stile, rapporti di copertura, rilevatori di copia e incolla tutti controllano gli invii anti-modelli, contorti o comunque difficili da leggere. I test di unit e integrazione verificano che il nuovo codice sia affidabile e soddisfi le specifiche.

Più innovazione

Sul conto finale, il livello di innovazione dipende in larga misura dal numero di iterazioni che possiamo inserire prima del rilascio. Un ciclo di sviluppo più breve ci dà la possibilità di fare più iterazioni, provare cose nuove, correre più rischi. CI/CD ci dà la libertà di sperimentare di più e di reagire rapidamente alle mutevoli esigenze.

Una cultura aperta

Le pipeline CI/CD sono trasparenti: mostrano lo stato corrente del progetto, la sua storia e il suo progresso a tutti. Questa apertura favorisce una cultura della comunicazione, della proprietà e della responsabilità. Tutti vedono i contributi e le questioni possono essere assegnate in modo più equo.

Meno stress

Quando sistemizziamo i rilasci, tonteiamo molti dei rischi inerenti all’applicazione di patch o all’aggiornamento. I giorni di patch possono essere come qualsiasi altro giorno in cui abbiamo fiducia nel processo. E se, nonostante tutto, qualcosa va storto, tornare indietro è una ritirata strategica.

Come iniziare a praticare CI/CD

Non è necessario modificare tutto il flusso di lavoro contemporaneamente. Infatti, è meglio apportare modifiche qua e là in piccoli incrementi, vedere cosa funziona, cosa non funziona e regolare come si va.

L’unica regola è che è necessario disporre di tutta la codebase in un repository centrale come GitHub, in cui tutti i membri del team possono visualizzarlo e modificarlo. Probabilmente stai già usando qualcosa di simile, quindi sei sulla strada per CI / CD.

Fase di compilazione

Rendi la tua prima sfida per spostare il processo di compilazione nell’ambiente CI. Sono inclusi elementi come il download delle dipendenze, la compilazione o la compilazione di immagini Docker. Se è la prima volta che si effettua questa operazione all’esterno del computer portatile, si verificano problemi imprevisti che impediscono la compilazione: questo è un bene, si sta sistematizzando il processo e rendendo il codice più resiliente.

Una volta che si ottiene la compilazione in corso, renderlo una priorità di non lasciarlo fallire. Se in qualsiasi momento lo fa, lascia cadere tutto il resto che stai facendo e risolvere il problema. Ricordate la direttiva principale: essere sempre pronti per il rilascio.

Durante la codifica, preferire utilizzare rami di breve durata; saranno più facili da unire in un secondo momento. Quindi, dividere grandi cambiamenti e unirli separatamente. Utilizzando rami focalizzati sul laser, sarete in grado di sviluppare più velocemente ed esplorare più idee. E, parlando di rami, non è una buona idea usarli per nascondere le caratteristiche. Utilizzare invece i flag di funzionalità per disabilitare le funzionalità non ancora pronte per la prima serata.

Fase di prova

La tua seconda sfida è rendere i test parte integrante del tuo sviluppo. I test sono la prima linea di difesa. I test sono lo strumento principale che devi mantenere alta la qualità e confermare che il codice è corretto.

Due tecniche di sviluppo software ti aiuteranno qui: Sviluppo basato su test (TDD) e Sviluppo basato sul comportamento (BDD). Il primo incoraggia a cambiare il solito ordine, scrivere prima i test e seguire con il codice. La seconda tecnica porta questa strategia write-test-first a livello macro, dandoci una visione dal lato dell’utente finale.

Prestare attenzione al tempo necessario per l’esecuzione della pipeline; se ci vuole troppo tempo, è facile distrarsi e perdere il treno dei pensieri. Troverete che risolvere i problemi è molto più facile se è possibile mantenere il flusso in corso. Come regola generale, se devi aspettare più a lungo del tempo necessario per ottenere una tazza di caffè, devi ottimizzare la pipeline. Quindi, mirare per esso di correre in 10 minuti o meno. In questo modo, manterrai il ciclo di feedback breve e il numero di iterazioni elevato.

Ecco alcuni suggerimenti per mantenere veloce la fase di test:

  • Classificare i test per livello: gli unit test, i controlli di stile e l’analisi della copertura sono di basso livello. I test di integrazione sono al centro e i test dell’interfaccia utente sono di alto livello.
  • Ordinare i test in base alla complessità: iniziare con test di basso livello. Spesso, questi prendono meno tempo per correre, e il loro fallimento segna problemi fondamentali. Non ha senso eseguire un gruppo di test complesso quando il codice non ha nemmeno superato i controlli di qualità di base.
  • Integrazione: seguire i test di livello intermedio come l’integrazione, i test funzionali e end-to-end e quindi continuare con i test dell’interfaccia utente di alto livello, se applicabile.
  • Controllo: completare la fase di test con scansioni di sicurezza e vulnerabilità.

Per quanto allettante possa essere, non commentare mai i test non superati. E ‘meglio per risolvere i problemi mentre sono ancora fresco in mente. Sulla stessa nota, fai un favore a te stesso e non tornare mai a casa con un commit fallito. Correggere il problema prima di uscire o annullare la modifica e riprovare domani. Questo può sembrare duro, ma tu e solo tu sei responsabile per gli errori che introduci.

Fase di consegna

La consegna continua ci consente di esporre frequentemente i beta tester alle build intermedie. In questo modo, possiamo confermare e regolare le specifiche lungo la strada. Il prodotto finale sarà quindi molto più allineato con le aspettative.

Le pipeline di recapito compilano elementi distribuibili. In genere, la fase di recapito distribuisce l’applicazione in un ambiente di tipo produzione. Se tutto va secondo il piano, le modifiche vengono approvate e il nuovo ramo può essere unito nella linea principale.

Fase di distribuzione

Chi è responsabile della distribuzione dell’applicazione? Ai vecchi tempi, era fino al team operativo. Ma da quando DevOps è diventato mainstream, sta a te. Se lo si compila, è anche necessario distribuirlo e gestirlo.

La fase di distribuzione pubblica l’applicazione. Questa pipeline deve inoltre impostare tutti i servizi, gli account e le altre infrastrutture correlati da cui dipende l’applicazione.

La distribuzione può essere avviata manualmente, ma il processo stesso deve essere automatizzato. Se devi passare attraverso una lista di controllo o fare qualsiasi procedura manuale, non sei ancora lì.

Abbiamo a nostra disposizione molti strumenti DevOps per automatizzare le distribuzioni:

  • Serverless: noto anche come Lambdas o Functions-as-a-Service (Faas), queste piattaforme ci permettono di eseguire applicazioni nel cloud senza doversi preoccupare dell’infrastruttura.
  • Gestione della configurazione: possiamo utilizzare software come Ansible, Puppet o Chef per configurare i server, installare servizi e distribuire applicazioni.
  • Infrastruttura come codice: strumenti come Terraform o CloudFormation ci permettono di creare un’infrastruttura su richiesta.
  • Contenitori: possiamo usare piattaforme come Docker Swarm o Kubernetes per eseguire applicazioni containerizzate su larga scala

L’adozione di devOps e pratiche CI/CD non si tratta solo di utilizzare nuove tecnologie; si tratta di promuovere una cultura basata sulla trasparenza, la proprietà e la comunicazione.

Significa cambiare il nostro modo di pensare allo sviluppo del software e il modo in cui i membri del team interagiscono. Alla fine, è una trasformazione che porta a prodotti migliori e a una migliore esperienza per tutte le persone coinvolte.

  • Ecco la nostra lista dei migliori servizi di cloud computing in giro