Se conosci, anche solo marginalmente il mondo DevOps avrai sentito parlare di Continuous Delivery e Continuous integration.
Entrambi sono tra gli elementi principali della metodologia DevOps che aiuta i team IT a lavorare in modo più rapido e coordinato, riducendo i tempi di rilascio delle nuove versione degli applicativi.
Ma quali sono le caratteristiche di questi due metodi?
Continuous Integration
La continuous integration è un metodo di sviluppo software in cui gli sviluppatori aggiungono regolarmente modifiche al codice in un repository centralizzato, con la creazione di build e i test eseguiti automaticamente con lo scopo di individuare e risolvere i bug con maggiore tempestività, migliorare la qualità del software e ridurre il tempo richiesto per convalidare e pubblicare nuovi aggiornamenti.
In passato gli sviluppatori di un team lavoravano spesso separati gli uni dagli altri per un lungo periodo e cercavano di integrare le loro modifiche al master solo una volta completate, rendendo difficoltosa e poco immediata l’unione di modifiche del codice, comportando anche l’accumulo di bug per lunghi periodi senza che venissero corretti.
Con la continuous integration, invece, gli sviluppatori eseguono i commit in modo più frequente in un repository condiviso e impiegano un sistema di controllo della versione, ad esempio Git. Prima di applicare una modifica, possono eseguire unit test in locale, una verifica aggiuntiva importante prima dell’integrazione definitiva.
I principali vantaggi:
- Maggiore produttività per gli sviluppatori
Gli sviluppatori vengono liberati dalle attività manuali incoraggiando le pratiche che riducono il numero di errori e bug nel software distribuito ai clienti. - Bug individuati e risolti con maggiore prontezza
Con un testing più frequente è più facile individuare tempestivamente e risolvere i bug prima che diventino problemi gravi. - Aggiornamenti più rapidi
Possibilità di rilasciare aggiornamenti in modo più rapido e con maggiore frequenza.
Continuous Delivery
Con la Continuous Delivery le modifiche al codice vengono preparate automaticamente per un rilascio in produzione. La Continuous Delivery estende la Continuous Integration distribuendo tutte le modifiche al codice all’ambiente di testing e/o di produzione dopo la fase di creazione di build, consentendo agli sviluppatori di automatizzare il testing oltre gli unit test, in modo da verificare l’applicazione degli aggiornamenti su vari livelli prima di renderli disponibili ai clienti. Queste prove possono includere test dell’interfaccia, test di caricamento, test di integrazione, test di affidabilità delle API e molto altro.
La differenza principale tra Continuous Delivery e Continuous Integration è la presenza di un processo di approvazione manuale per l’aggiornamento della produzione. Con la Continuous Delivery la produzione avviene automaticamente, senza un’approvazione esplicita.
La decisione finale per implementare il nuovo software nell’ambiente di produzione attivo dipende poi dallo sviluppatore.
I principali vantaggi:
- Processo di rilascio del software automatizzato
La distribuzione continua consente al team di applicare a una build, testare e preparare le modifiche al codice per l’inoltro in produzione in modo più efficiente e veloce. - Maggiore produttività per gli sviluppatori
Migliore produttività degli sviluppatori liberandoli dalle attività manuali e incoraggiando le pratiche che riducono il numero di errori e bug nel software rilasciato ai clienti. - Bug individuati e risolti con maggiore prontezza
Possibilità di rilevare e risolvere i bug prima che si trasformino in problemi gravi, grazie a testing più completi e più frequenti. La Continuous Delivery consente di eseguire sul codice il genere di test che, senza un’automatizzazione completa, non sarebbe stato possibile effettuare. - Aggiornamenti più rapidi
Rilascio di aggiornamenti in modo più rapido e con maggiore frequenza grazie a una build temporanea sempre a disposizione, pronta per la distribuzione che ha già passato un processo di testing standardizzato.