Continuous Delivery
Sfondo nero e blu
Cos'è la Continuous Delivery?

Un'introduzione alla pipeline di Continuous Delivery che comprende i vantaggi, le best practice e i principali strumenti di CD.

La Continuous Delivery consente ai team di sviluppo di automatizzare il processo che fa avanzare il software attraverso il ciclo di vita di sviluppo; inoltre, può offrire molti vantaggi durante il provisioning di un toolbox integrato,  tra cui:

  • Riduzione del tempo necessario per l'implementazione tramite test e sviluppo continui
  • Diminuzione dei costi associati allo sviluppo di software tradizionale
  • Ridimensionamento dello sviluppo del software in base alla dimensione del progetto
  • Implementazione automatica del codice in ogni fase del ciclo di sviluppo

Nel seguente video, Eric Minick fornisce ulteriori informazioni sulla Continuous Delivery:

Best practice

Di seguito è riportata una serie di best practice da tenere a mente quando si utilizza la Continuous Delivery:

  • Rendere possibile il rilascio di ogni modifica: se si utilizza la Continuous Delivery per rendere possibile il rilascio di ogni modifica, è necessario includere la documentazione per gli utenti, i runbook delle operazioni e le informazioni sugli elementi modificati a scopi di controllo.
  • Adottare lo sviluppo basato su trunk: la Continuous delivery si basa sull'integrazione continua (Continuous Integration). Evita per quanto possibile i rami che causano ritardi nell'integrazione, in modo che ogni modifica venga creata, sottoposta a test e implementata contemporaneamente per ottenere il feedback più rapido possibile.
  • Distribuire tramite una pipeline automatizzata: per implementare con successo la Continuous Delivery, avrai bisogno di una pipeline correttamente assemblata e automatizzata per garantire che tutte le release del codice vengano spostate nei tuoi ambienti di test e produzione in modo coerente.
  • Automatizzare quanto possibile: nella Continuous Delivery, è necessario automatizzare tutti i processi possibili nel ciclo di vita di sviluppo del software, al fine di creare una pipeline di distribuzione valida e affidabile, non solo per le operazioni di build e implementazione del codice, ma anche per la creazione di nuovi ambienti di sviluppo.
  • Tentare di eliminare i tempi di inattività: per garantire la disponibilità dell'applicazione mentre apporti frequenti modifiche in modalità Continuous Delivery, quando esegui il push di una nuova funzione in produzione, dovrai innanzitutto convalidarla prima di implementarla nell'istanza dell'applicazione pubblicamente in esecuzione.
  • Effettuare le release con la granularità dei test: se è necessario sottoporre contemporaneamente a test due parti di un sistema, è consigliabile rilasciarli insieme per assicurarsi che le parti del sistema siano compatibili. Gli strumenti di automazione delle release sono utili per coordinare questo tipo di distribuzione. In alternativa, disaccoppiarli continuamente.
Pipeline/framework continui

Per sfruttare pienamente i vantaggi della Continuous Delivery, avrai bisogno di altri elementi del framework continuo, ad esempio esplorazione continua, integrazione continua, implementazione continua e release on demand.

Quando utilizzi le fasi della pipeline di Continuous Delivery, è consigliabile suddividerle in lavori separati, ovvero unità di esecuzione all'interno di una fase:

  • Lavori di build: compila il tuo progetto nel lavoro di build per preparare l'implementazione, in cui generi risorse che puoi inviare a una directory di archivio di build.
  • Lavori di implementazione: carica il progetto nella pipeline di Continuous Delivery come un'app a cui puoi accedere tramite un URL. Una volta implementato il progetto, potrai visualizzarlo nel dashboard.
  • Lavori di test: personalizza e includi i lavori di test prima o dopo aver eseguito la build e l'implementazione dei lavori in base alla tua suite di test delle unità o ai test funzionali con servizi di test di terze parti.

Di seguito sono riportate alcune delle operazioni che la pipeline di Continuous Delivery ti aiuterà a portare a termine:

  • Automatizzare le build, i test delle unità e l'implementazione
  • Modificare ed eseguire il push del codice utilizzando repository Git, la traccia dei problemi e l'IDE (Integrated Development Environment) basato su web
  • Creare un toolbox di DevOps integrato per eseguire la build, implementare e gestire le tue app con i servizi, gli strumenti open source e di terze parti
  • Modificare il codice da qualsiasi ubicazione in cui decidi di utilizzare il tuo IDE per creare, modificare, eseguire, sottoporre a debug e completare le attività di controllo del codice sorgente
  • Utilizzare la tua pipeline automatizzata per distribuire in modo continuo build, test e implementazioni in maniera ripetibile
  • Migliorare la qualità grazie alla comprensione dello stato della build, ai risultati delle scansioni di sicurezza, alla copertura del codice e di test in modo da poter valutare se promuovere la tua app all'ambiente successivo (attraverso controlli mediante politiche per garantire automaticamente la qualità prima della promozione)
Confronto tra implementazione continua e fornitura continua

L'implementazione continua può far parte di una pipeline di Continuous Delivery. Nello specifico, la Continuous Delivery è lo spostamento automatizzato del codice attraverso il ciclo di vita di sviluppo del codice (a volte denominato ciclo di vita di distribuzione); l'implementazione continua è lo spostamento automatizzato di tale codice in produzione, una volta che supera i necessari test automatizzati.

La decisione di rendere l'implementazione continua parte della tua pipeline di distribuzione dipende dalle tue esigenze di business. Se il business necessita che il team di distribuzione rilasci ripetutamente software nuovi o aggiornati in produzione, in modo affidabile o più velocemente possibile, oppure se la soluzione presenta più dipendenze, allora è probabile che l'adozione dell'implementazione continua rappresenti un vantaggio.

Per ulteriori informazioni sulle differenze tra implementazione continua e Continuous Delivery, fai riferimento a questo video:

Strumenti

Uno strumento di Continuous Delivery ti consente di utilizzare strumenti open source per eseguire la build, implementare e gestire le tue applicazioni. Integrando serie di strumenti, potrai creare attività ripetibili e gestibili, non solo per il tuo team di sviluppo ma anche per quello delle operazioni.

Il tuo toolbox può includere i servizi cloud correnti, strumenti open source e di terze parti, ma è opportuno valutare uno strumento di Continuous Delivery che includa le seguenti caratteristiche:

  • Modelli ripetibili per l'automazione delle build e delle implementazioni. Se sono idonei per una delle app, devono esserlo anche per le altre. Non lasciare che ogni team debba gestire autonomamente la configurazione.
  • Una pipeline che ti consente di eseguire automaticamente le build quando esegui il push delle modifiche, implementi sul tuo cloud, incorpori le build e le implementazioni nelle tue toolchain e gestisci le implementazioni nella tua toolchain.
  • Strumenti per la collaborazione tra team, la pianificazione, la gestione del codice sorgente e l'esecuzione di test.
  • Strumentazione che espone le aree in cui il tuo team opera velocemente e quelle in cui si verificano rallentamenti, offrendo una guida per incrementare la continuità.

Gli strumenti di Continuous Delivery open source che puoi utilizzare per una solida pipeline di Continuous Delivery includono:

  • Jenkins
  • Concourse CI
  • Spinnaker
  • Travis CI
  • GoCD
  • GitLab CI
Agile e DevOps

Continuous Delivery agile

In precedenza, il codice veniva rilasciato una sola volta e poi aggiornato. Quindi, avresti consultato i clienti solo all'inizio e alla fine del processo, per valutare se il software rispondesse alle loro esigenze.

Agile è un nuovo modo di produrre il software in brevi iterazioni tramite una pianificazione di Continuous Delivery; i processi di Continuous Delivery in modalità Agile di oggi ti consentono di rilasciare il codice ai clienti ogni volta che una funzione definita diventa disponibile. Lo sviluppo in modalità Agile e la Continuous Delivery rappresentano le chiavi per fornire le funzionalità ai clienti appena sono pronte per la produzione. Il tuo obiettivo è di rendere ogni funzione pronta per il rilascio nel momento stesso in cui esce dalla pipeline.

Scopri di più sui vantaggi dei principi della modalità Agile.

DevOps e Continuous Delivery

Negli ultimi vent'anni, lo sviluppo del software ha subito cambiamenti significativi nell'ambito del passaggio dal concetto standard, anche detto a cascata, alla più efficiente metodologia Agile. Per adattarti, è necessario adottare un approccio incentrato sulle modalità Agile, DevOps e Continuous Delivery. Come parte di una pipeline di Continuous Delivery, questi processi specifici consentono release e aggiornamenti software più affidabili e di alta qualità.

Effettuando release di software dalle dimensioni più contenute in modo più rapido tramite lo sviluppo in modalità Agile, potrai concentrarti in modo più efficace sulle singole fasi dello sviluppo del software. Allo stesso tempo, la modalità DevOps consente di rimanere concentrati sulla visione d'insieme e su un cambiamento culturale, mentre le mansioni di sviluppo e le operazioni si riuniscono in un solo team che collabora nell'arco dell'intero ciclo di vita dello sviluppo del software, dalla codifica ai test all'implementazione e al supporto.

Per un approfondimento sul processo DevOps, fai riferimento a “DevOps: An Essential Guide” e al seguente video:

Continuous Delivery e IBM Cloud

La possibilità di eseguire rapidamente il provisioning di una toolchain integrata dotata di modelli personalizzabili e condivisibili consente di automatizzare le build e i test e di incrementare il controllo della qualità. Puoi farlo con strumenti IBM e con le integrazioni con plug-in open source e di terze parti. I processi e gli strumenti IBM possono aiutarti con una delle iniziative DevOps più impegnative che le organizzazioni affrontano: la creazione e la modernizzazione delle applicazioni nel loro percorso verso il cloud.

Fai un passo avanti:

  • Crea toolbox orientati alle DevOps che supportano le tue attività di distribuzione delle app con IBM Cloud Continuous Delivery.
  • Inizia ad accelerare il processo di esecuzione di build, integrazione e implementazione delle applicazioni, anche quelle più complesse, con l'assistenza di IBM UrbanCode.
  • Esplora la Continuous Delivery e l'automazione dell'implementazione con lo strumento per il rilascio delle applicazioni di IBM UrbanCode Deploy.
  • Distribuisci applicazioni native del cloud su più provider cloud o sistemi on-premise, monitorate da un dashboard integrato, con Tekton su  IBM Cloud.
  • Sei alle prime armi con DevOps? Crea una semplice toolchain di implementazione seguendo questo tutorial.

Inizia oggi stesso con un account IBM Cloud®.

Soluzioni correlate
IBM Cloud Continuous Delivery

IBM Continuous Delivery è un servizio cloud che facilita il provisioning di toolchain, l'automatizzazione di build e test e il controllo della qualità mediante l'analytics.

Esplora IBM Cloud Continuous Delivery
IBM UrbanCode

La famiglia di prodotti software IBM UrbanCode ti aiuta a distribuire più rapidamente il software sul mercato accelerando la distribuzione delle applicazioni e riducendo i processi manuali.

Esplora IBM UrbanCode
Tekton su IBM Cloud

Crea pipeline CI/CD native di Kubernetes, con massima velocità e flessibilità.

Esplora Tekton su IBM Cloud