Close

Cos'è la continuous deployment?

La continuous deployment (CD) è di grande aiuto sia per i team del software sia per i clienti. Scopri che cos'è, quali sono i suoi vantaggi, le best practice e molto altro ancora.

Primo piano di Sten Pittet
Sten Pittet

Scrittore collaboratore


La continuous deployment (CD) è un processo di rilascio software che impiega test automatizzati per convalidare le modifiche a una base di codice e verificare che siano corrette e stabili per la distribuzione autonoma e immediata in un ambiente di produzione.

Il ciclo di rilascio dei software si è evoluto nel tempo. Il processo legacy che prevedeva il trasferimento del codice da un computer all'altro e la successiva verifica di funzionamento era soggetto a errori e richiedeva molte risorse. Ora invece abbiamo a disposizione strumenti in grado di automatizzare l'intero processo di distribuzione e che consentono alle organizzazioni di progettazione di concentrarsi sulle esigenze di business principali anziché sui costi dell'infrastruttura.

Illustrazione del ciclo di continuous deployment | Atlassian CI/CD

Continuous deployment e continuous delivery a confronto


La distinzione tra continuous deployment e continuous delivery può creare confusione a causa della nomenclatura: entrambe sono abbreviate in CD e hanno compiti molto simili. La continuous delivery è il precursore della continuous deployment, in quanto include una fase finale di approvazione manuale prima del rilascio nell'ambiente di produzione.

Quello che segue è un esercizio di memoria per imparare a distinguere i due processi. Immagina di ordinare un pacco dal tuo negozio online preferito. In attesa di riceverlo, ti coordini con un servizio di consegna: questa è la fase di delivery. Una volta arrivato il pacco, lo apri per verificare il contenuto e assicurarti che corrisponda alle tue aspettative. In caso contrario, puoi restituirlo al mittente. Se invece non ci sono problemi, puoi iniziare a "distribuire" (deployment) e utilizzare il nuovo acquisto.

Nella fase di delivery, gli sviluppatori esaminano le modifiche del codice, eseguono il merge e creano un pacchetto da includere successivamente in un artefatto. Il pacchetto viene quindi spostato in un ambiente di produzione, dove attenderà l'approvazione per essere aperto per la distribuzione. Nella fase di deployment, il pacchetto viene aperto ed esaminato con un sistema di controlli automatici. In caso di esito negativo della verifica, il pacchetto viene rifiutato.

Se il pacchetto supera i test, viene automaticamente distribuito in produzione. La continuous deployment è una pipeline completa end-to-end e automatizzata di distribuzione del software.

Scopri la soluzione

Compilare e gestire software con Open DevOps

Materiale correlato

Scopri di più sui test automatizzati

Diagramma delle fasi del ciclo di vita di continuous deployment | Atlassian CI/CD

Quali sono i vantaggi della continuous deployment?


La continuous deployment offre incredibili vantaggi in termini di produttività per i team di sviluppo software. La combinazione di DevOps e continuous deployment consente ai team di accelerare notevolmente i rilasci. Poiché le pipeline di distribuzione vengono attivate automaticamente per ogni modifica, i team possono sviluppare più velocemente. Quando il team ha un'idea per un nuovo prodotto o funzione, è sufficiente eseguire il push del codice per consegnarlo ai clienti. La continuous deployment consente ai team di distribuire piccoli batch di modifiche, così i rilasci sono meno rischiosi e più facili da correggere in caso di problemi.

Dal punto di vista aziendale, la continuous delivery consente a un'azienda di rispondere alle mutevoli richieste del mercato distribuendo e convalidando rapidamente nuove idee e funzionalità.

Strumenti di continuous deployment


Una volta adottati i test automatizzati, sarebbe opportuno abbinarli a uno strumento di code coverage del test per avere un'idea della quantità di codebase coperta dalla suite di test.

È bene puntare a una copertura superiore all'80%, ma attenzione a non confondere un'alta percentuale di copertura con una buona suite di test. Uno strumento di code coverage ti aiuterà a trovare codice non testato, ma ciò che conta davvero è la qualità dei tuoi test.

Se hai appena iniziato, non avere fretta di raggiungere una copertura del 100% del tuo codebase, ma utilizza uno strumento di code coverage del test per scoprire le parti critiche della tua applicazione non ancora testate e inizia da lì.

Test automatici

L'automazione dei test rappresenta la dipendenza più critica della continuous deployment, poiché da essa dipende l'intera catena di continuous integration, delivery e deployment. I test automatizzati vengono utilizzati per prevenire eventuali regressioni in seguito all'introduzione di nuovo codice e sostituiscono i test manuali delle modifiche.

Rolling deployment

Il tratto distintivo della continuous deployment rispetto alla continuous delivery è la fase automatica di attivazione del nuovo codice in un ambiente reale. Una pipeline di continuous deployment deve essere in grado di annullare la distribuzione nel caso in cui vengano rilevati bug o modifiche non corrette. Gli strumenti di rolling deployment automatizzati come il blue-green deployment sono un requisito fondamentale per una corretta continuous deployment.

Monitoraggio e avvisi

Una solida pipeline di continuous deployment deve poter contare su monitoraggio e avvisi in tempo reale. Questi strumenti forniscono visibilità sullo stato dell'intero sistema e sull'integrità dello stesso prima e dopo la distribuzione di nuovi codici. Inoltre, gli avvisi possono essere utilizzati per attivare un trigger "Annulla" di rolling deployment e ripristinare una distribuzione non riuscita.

Best practice di continuous deployment


Dopo avere gettato le basi della pipeline di continuous deployment, il team di progettazione deve garantire manutenzione e partecipazione continue per assicurare il successo della pipeline. Le best practice e le procedure che seguono consentono al team tecnico di trarre il massimo vantaggio da una pipeline di continuous deployment.

Sviluppo basato su test

Lo sviluppo basato sui test è una pratica che consiste nel definire una specifica di comportamento per le nuove funzionalità di un software prima che inizi lo sviluppo. Una volta definite le specifiche, gli sviluppatori scriveranno i relativi test automatizzati e, in base ai test case e alle specifiche, il codice finale effettivo pronto per la consegna. Grazie a questo processo, i test automatizzati vengono completati in anticipo sull'intero, nuovo codice. L'alternativa consiste nel consegnare prima il codice e poi definire la copertura dei test. Questo potrebbe comportare discrepanze tra il comportamento previsto della specifica e il codice effettivamente realizzato.

Un metodo unico di distribuzione

Una volta implementata una pipeline di continuous deployment, è fondamentale che diventi l'unico metodo di distribuzione. Gli sviluppatori non devono copiare manualmente il codice in produzione o in ambienti di modifica in tempo reale. Le modifiche manuali esterne alla pipeline di CD causeranno la desincronizzazione della cronologia di distribuzione, interrompendo il flusso di continuous deployment.

Containerizzazione

La containerizzazione di un'applicazione software garantisce il funzionamento uniforme su qualsiasi computer su cui viene distribuita. In questo modo, è possibile evitare tutta una serie di problemi in cui il software funziona su una macchina ma si comporta diversamente su un'altra. I container possono essere integrati nella pipeline di CD in modo che il codice si comporti allo stesso modo sulla macchina di uno sviluppatore, durante i test automatizzati e nella fase di distribuzione in produzione.

In sintesi...


La continuous deployment è uno strumento efficace per le moderne organizzazioni di progettazione. La distribuzione (deployment) è la fase finale della "continuous pipeline" composta da integrazione, consegna e distribuzione. La vera esperienza di continuous deployment è rappresentata dall'automazione a tutti i livelli: quando il codice viene distribuito in produzione, quando viene testato per verificarne la correttezza e quando viene ripristinato automaticamente in caso di errore o accettato se corretto.

Se stai cercando di mettere in pratica la continuous delivery, assicurati di dare un'occhiata ai nostri tutorial su CI/CD DevOps, che approfondiscono Open DevOps di Atlassian con Jira e integrazioni di terze parti.

Sten Pittet
Sten Pittet

Lavoro nel settore del software da 10 anni, ricoprendo vari ruoli, dallo sviluppo alla gestione del prodotto. Dopo aver trascorso gli ultimi 5 anni in Atlassian a aver lavorato sugli strumenti per gli sviluppatori, ora scrivo sulla creazione di software. Al di fuori del lavoro sto affinando le mie capacità paterne con un bambino meraviglioso.


Condividi l'articolo

Letture consigliate

Aggiungi ai preferiti queste risorse per ricevere informazioni sui tipi di team DevOps e aggiornamenti continui su DevOps in Atlassian.

Illustrazione su Devops

Community DevOps

Illustrazione su Devops

Leggi il blog

Illustrazione di una mappa

Inizia gratis

Iscriviti alla nostra newsletter DevOps

Thank you for signing up