In precedenza abbiamo di Continuous Integration (CI). Continuando con il Continuous Delivery. Questo è un insieme di metodi per lo sviluppo del software. Aiuta a garantire che il codice sia pronto per il deployment.
/ Pixabay / /
Storia
La locuzione continuous delivery è stata vista anche nel del 2001, all'inizio dell'elenco dei principi fondamentali: «La priorità è risolvere i problemi del cliente attraverso la fornitura continua di software attuale».
Nel 2010, Jez Humble e David Farley hanno pubblicato sul Continuous Delivery. Secondo gli autori, il CD integra l'approccio e permette di semplificare la preparazione del codice per il deployment.
Dopo la pubblicazione del libro, l'approccio ha cominciato a guadagnare popolarità e in pochi anni è diventato praticamente un standard. Secondo , condotto tra oltre 600 sviluppatori e IT manager nel 2014, il 97% dei responsabili tecnici e l'84% dei programmatori conoscevano il Continuous Delivery.
Oggi questo approccio rimane uno dei più popolari. Secondo uno studio del 2018, a cui hanno partecipato membri della comunità IT DevOps e Jenkins Community, la sua metà di oltre mille rispondenti.
Come funziona il Continuous Delivery
La base del CD è la prontezza del codice per il deployment. Per raggiungere questo obiettivo si utilizza l'automazione del processo di preparazione del software per il rilascio. Questo deve essere standard per i vari ambienti di sviluppo, il che aiuta a identificare rapidamente i punti deboli e a ottimizzarli. Ad esempio, accelerare i test.
Un esempio del processo di Continuous Delivery appare come segue:

Se l'automazione dei primi due passaggi è responsabilità dell'approccio Continuous Integration, i successivi due sono gestiti dal Continuous Delivery. La stabilità del processo è garantita anche dai sistemi . Questi monitorano le modifiche nell'infrastruttura, nei database e nelle dipendenze. Il deployment stesso può essere automatizzato o effettuato manualmente.
Il processo deve soddisfare i seguenti requisiti:
- Disponibilità di informazioni sulla prontezza al rilascio nell'ambiente di produzione e disponibilità per il rilascio diretto (gli strumenti CD testano il codice e consentono di valutare l'impatto delle modifiche nel rilascio).
- Responsabilità generale per il prodotto finale. Il team di prodotto - manager, sviluppatori, tester - si concentra sul risultato, non solo sulla propria area di competenza (il risultato è una versione funzionante, disponibile per gli utenti del prodotto).
In CD si applicano generalmente , mentre per raccogliere opinioni dei clienti si utilizza il principio . La nuova funzionalità viene inizialmente rilasciata a un piccolo segmento di utenti; la loro esperienza con il prodotto aiuta a identificare difetti e bug che non sono stati notati durante i test interni.
Quali sono i vantaggi
Continuous Delivery aiuta a semplificare il deployment del codice, il che influisce positivamente sulla produttività e riduce la probabilità di burnout emotivo dei dipendenti. Questo, a sua volta, abbassa anche i costi complessivi dello sviluppo. Ad esempio, CD ha aiutato uno dei team di HP questi costi del 40%.
Inoltre, secondo uno studio del 2016 (pagina 28 ) le aziende che hanno implementato CD risolvono i problemi di sicurezza informatica il 50% più velocemente rispetto a quelle che non utilizzano questo approccio. In una certa misura, questa differenza può essere attribuita all'utilizzo di strumenti di automazione dei processi.
Un ulteriore vantaggio è l'accelerazione del rilascio delle versioni. In uno studio di sviluppo finlandese, la consegna continua a aumentare la velocità di compilazione del codice del 25%.
Difficoltà potenziali
La prima e principale sfida è la necessità di ristrutturare i processi consolidati. Per dimostrare i vantaggi del nuovo approccio, è consigliabile passare al CD gradualmente, iniziando dalle applicazioni meno onerose.
La seconda potenziale difficoltà è il gran numero di rami di codice. La conseguenza della 'biforcazione' sono frequenti conflitti e perdite di tempo significative. Una possibile soluzione è l'approccio .
. In particolare, in alcune aziende le principali difficoltà sorgono con il testing: richiede troppo tempo. I risultati dei test devono spesso essere analizzati manualmente, ma una possibile soluzione potrebbe essere il parallelismo dei test nei primi stadi di implementazione del CD.
è importante anche formare i dipendenti a utilizzare i nuovi strumenti: una formazione preliminare risparmierà energie e tempo agli sviluppatori.

/ Flickr / /
Strumenti
Ecco alcuni strumenti open source per Continuous Delivery:
- — server per la fornitura continua in Java e JRuby on Rails. Consente di controllare l'intero processo di fornitura dell'applicazione: build—test—release. Lo strumento è distribuito con licenza Apache 2.0. Sul sito ufficiale è possibile trovare .
- — framework per la creazione di script che automatizzano il deployment delle applicazioni scritte in Ruby, Java o PHP. Capistrano è in grado di eseguire comandi su una macchina remota, collegandosi tramite SSH. Funziona con altri strumenti di integrazione e fornitura continua, come il server CI Integrity.
- — strumento multipiattaforma che automatizza l'intero ciclo di sviluppo delle applicazioni. Gradle lavora con Java, Python, C/C++, Scala e altri. È integrato con Eclipse, IntelliJ e Jenkins.
- — piattaforma per CD in Go. Drone può essere implementato on-premise o nel cloud. Lo strumento è basato su contenitori e utilizza file YAML per gestirli.
- — piattaforma per la fornitura continua di codice in sistemi multi-cloud. Sviluppata in Netflix, gli ingegneri di Google hanno avuto un ruolo importante nello sviluppo dello strumento. Le istruzioni per l'installazione si .
Cosa leggere nel nostro blog aziendale:
Fonte: habr.com
