Confronto tra implementazione continua e fornitura continua
Sebbene "implementazione continua" e "fornitura continua" potrebbero far pensare alla stessa cosa, sono in effetti due approcci differenti a rilasci frequenti.
La fornitura continua è una prassi di sviluppo software in cui il software viene creato in modo tale da poter essere rilasciato in produzione in qualsiasi momento. Per ottenere questo risultato, un modello di fornitura continua coinvolge degli ambienti di test simili alla produzione. Le nuove build eseguite in una soluzione di fornitura continua vengono automaticamente implementate in un ambiente di test di assicurazione di qualità automatico che testa qualsiasi numero di errori e incoerenze. Dopo che il codice ha superato tutti i test, la fornitura continua richiede un intervento umano per approvare le implementazioni in produzione. L'implementazione stessa viene quindi eseguita dall'automazione.
L'implementazione continua porta l'automazione un passo avanti e elimina la necessità di un intervento manuale. I test e gli sviluppatori sono considerati abbastanza affidabili da non richiedere un'approvazione per il rilascio in produzione. Se i test vengono superati, il nuovo codice è considerato approvato e si procede semplicemente all'implementazione in produzione.
L'implementazione continua è il risultato naturale di una fornitura continua eseguita correttamente. Alla fine, l'approvazione manuale produce valore in misura limitata o nulla e non fa altro che rallentare le cose. A quel punto, se ne fa a meno e la fornitura continua diventa l'implementazione continua.
Confronto tra implementazione continua e integrazione continua
Un altro elemento chiave per garantire un'implementazione continua e senza interruzioni è l' integrazione continua. Perché l'automazione dei processi di implementazione funzioni, tutti gli sviluppatori che lavorano su un progetto hanno bisogno di un modo efficace per comunicare le modifiche che si verificano. L'integrazione continua lo rende possibile.
Generalmente, quando lavorano sullo stesso progetto di sviluppo software, gli sviluppatori lavorano su singole copie di un ramo di codice master. Tuttavia, possono verificarsi dei problemi e dei bug di funzionalità dopo che gli sviluppatori uniscono le loro modifiche nella base di codice principale, soprattutto quando gli sviluppatori lavorano indipendentemente l'uno dall'altro. Più a lungo lavorano in modo indipendente e più cresce il rischio.
Con CI, tutti uniscono le loro modifiche al codice in un repository almeno una volta al giorno. Non appena si verificano degli aggiornamenti, vengono eseguiti dei test di build automatizzati per garantire che le eventuali modifiche rimangano compatibili con il ramo master. Questo funge da meccanismo di sicurezza per rilevare problemi di integrazione nel più breve tempo possibile.