Continuous delivery
Continuous delivery (CD) indica la pratica di utilizzare l'automazione per rilasciare software attraverso brevi iterazioni.
Cos'รจ la continuous delivery?
La continuous delivery รจ un approccio che consente ai team di rilasciare prodotti di qualitร in modo frequente e prevedibile dal repository di codice sorgente all'ambiente di produzione sfruttando l'automazione.
Alcune organizzazioni rilasciano i prodotti manualmente trasferendoli da un team all'altro, come illustrato nel diagramma seguente. In genere, gli sviluppatori e il personale operativo si trovano alle estremitร opposte della catena di operazioni. Questa situazione causa ritardo nelle consegne, con conseguente frustrazione dei team e insoddisfazione dei clienti. Il prodotto viene pubblicato soltanto al termine di un processo lungo e soggetto a errori che ritarda la generazione di profitto.

Dai un'occhiata alla pipeline di continuous delivery qui sotto, che mostra in che modo gli sviluppatori scrivono il codice sul proprio laptop ed eseguono il commit delle modifiche in un repository di codice sorgente, comeย Bitbucket. Per codice si intendono il sistema in fase di test, i test e l'infrastruttura utilizzata per distribuire e gestire il sistema.ย Bitbucket Pipelinesย รจ in grado di rilasciare il prodotto dall'ambiente di test a quello di staging e fino in produzione, consentendo cosรฌ ai clienti di usufruire delle nuove funzionalitร in breve tempo.

Come funziona la continuous delivery?
La pipeline di continuous delivery puรฒ prevedere un controllo manuale subito prima della produzione. I controlli manuali richiedono l'intervento umano e potrebbero essere necessari nella pipeline per determinati scenari della tua organizzazione. Alcuni controlli manuali sono di dubbia utilitร , altri invece rappresentano un valido strumento, ad esempio nei casi in cui il team aziendale deve prendere una decisione dell'ultimo minuto sul rilascio. Il team di progettazione tiene pronta una versione rilasciabile del prodotto dopo ogni sprint e il team aziendale decide se rilasciare il prodotto a tutti i clienti, a un campione di destinatari o a persone che vivono in una determinata localitร geografica.
L'architettura del prodotto che passa attraverso la pipeline รจ un fattore chiave per determinare l'anatomia della pipeline di continuous delivery. Un'architettura di prodotto fortemente accoppiata genera un modello grafico complesso in cui diverse pipeline si ostacolano a vicenda prima di arrivare in produzione.
L'architettura di prodotto influenza anche le diverse fasi della pipeline e gli artefatti prodotti in ciascuna. La pipeline crea innanzitutto i componenti, ossia le unitร distribuibili e testabili piรน piccole del prodotto. Ad esempio, una raccolta creata dalla pipeline puรฒ essere definita un componente. Questa รจ la fase Componente.
I componenti debolmente accoppiati costituiscono i sottosistemi, ossia le unitร distribuibili ed eseguibili piรน piccole. Alcuni esempi di sottosistemi sono i server e i microservizi in esecuzione in un container. Questa fase si definisce Sottosistema. A differenza dei componenti, i sottosistemi possono essere valutati durante una riunione stand-up e testati.
Pertanto, รจ possibile insegnare alla pipeline ad assemblare un sistema partendo da sottosistemi debolmente accoppiati nei casi in cui un sistema debba essere rilasciato nella sua interezza. Questa รจ la fase Sistema.
Sconsigliamo di assemblare i sottosistemi in un sistema. Questo tipo di composizione รจ illustrato nella Figura 3.

Questo approccio radicale fa sรฌ che il sottosistema piรน veloce si adegui alla velocitร di quello piรน lento. "La catena รจ forte quanto il suo anello piรน debole" รจ un luogo comune che utilizziamo per mettere in guardia i team che cadono vittime di questo modello di architettura.
Una volta convalidato, il sistema assemblato viene quindi trasferito all'ambiente di produzione senza ulteriori modifiche: รจ la fase finale, chiamata Produzione.
Ricordati che si tratta di fasi piรน logiche che fisiche, create al solo scopo di scomporre un problema complesso in parti piรน piccole e piรน gestibili. Il numero di fasi puรฒ aumentare o diminuire a seconda dell'architettura e dei requisiti.
Velocitร e qualitร devono andare di pari passo per i nostri clienti. Il test continuo รจ una tecnica in base alla quale i test automatizzati sono integrati nella pipeline di distribuzione del software e convalidano ogni modifica all'interno della stessa. I test vengono eseguiti in ogni fase della pipeline per convalidare gli artefatti prodotti in quella fase. I test unitari e l'analisi del codice statico convalidano i componenti nella fase Componente della pipeline, mentre i test funzionali, delle prestazioni e di sicurezza convalidano i sottosistemi nella fase Sottosistema. I test di integrazione, prestazioni e sicurezza convalidano i sistemi nella fase Sistema; infine, gli smoke test convalidano il prodotto nella fase Produzione.
Test automatizzati integrabili nella pipeline
Un prodotto con un'architettura monolitica, ossia un sistema costruito in modo caotico, puรฒ comportare una quantitร esorbitante di test. Consigliamo di investire neiย microserviziย affinchรฉ gli artefatti distribuibili in modo indipendente possano passare attraverso le pipeline senza bisogno di un ambiente altamente integrato per la certificazione. Inoltre, questo tipo di artefatti consente ai team piรน rapidi di non farsi bloccare dai team piรน lenti.ย
Test automatizzati integrabili nella pipeline
Un prodotto con un'architettura monolitica, ossia un sistema costruito in modo caotico, puรฒ comportare una quantitร esorbitante di test. Consigliamo di investire neiย microserviziย affinchรฉ gli artefatti distribuibili in modo indipendente possano passare attraverso le pipeline senza bisogno di un ambiente altamente integrato per la certificazione. Inoltre, questo tipo di artefatti consente ai team piรน rapidi di non farsi bloccare dai team piรน lenti.ย
Valore della continuous delivery
La pipeline di distribuzione del software รจ un prodotto a sรฉ stante e dovrebbe essere una prioritร per le aziende. In caso contrario, sconsigliamo di inviare alla pipeline prodotti che generano entrate. La continuous delivery aggiunge valore in tre modi: migliora la velocity, la produttivitร e la sostenibilitร dei team di sviluppo software.
Velocity
Quando le pipeline eseguono task lunghi, come l'invio di una richiesta per ciascuna modifica che passa in produzione, al posto degli esseri umani, si verifica un picco di produttivitร . Iย team Scrumย possono quindi concentrarsi sulla qualitร dei prodotti invece di sprecare energie per la logistica. Il risultato? Membri del team piรน felici e piรน coinvolti nel lavoro, e desiderosi di contribuire a lungo al successo della squadra.
Produttivitร
Quando le pipeline eseguono attivitร lunghe, come l'invio di una richiesta per ciascuna modifica che passa in produzione, al posto degli esseri umani si verifica un picco di produttivitร . Iย team Scrumย possono quindi concentrarsi sulla qualitร dei prodotti invece di sprecare energie per la logistica. Il risultato? Membri del team piรน felici e piรน coinvolti nel lavoro, e desiderosi di contribuire a lungo al successo della squadra.

Sostenibilitร
La sostenibilitร รจ fondamentale per tutte le aziende, non solo per quelle del settore tecnologico. L'affermazione "Il software sta divorando il mondo" รจ ormai superata: il software ha giร inglobato il mondo. Che si tratti di sanitร , finanza, vendita al dettaglio o altri settori, le aziende sfruttano la tecnologia per distinguersi dalla concorrenza e surclassare i competitor. L'automazione aiuta a ridurre e a eliminare i ripetitivi task manuali, soggetti a errori, mettendo cosรฌ l'azienda nelle condizioni ideali per innovare meglio, piรน rapidamente, e soddisfare le esigenze dei propri clienti.
Velocity
Quando le pipeline eseguono task lunghi, come l'invio di una richiesta per ciascuna modifica che passa in produzione, al posto degli esseri umani, si verifica un picco di produttivitร . Iย team Scrumย possono quindi concentrarsi sulla qualitร dei prodotti invece di sprecare energie per la logistica. Il risultato? Membri del team piรน felici e piรน coinvolti nel lavoro, e desiderosi di contribuire a lungo al successo della squadra.
Produttivitร
Quando le pipeline eseguono attivitร lunghe, come l'invio di una richiesta per ciascuna modifica che passa in produzione, al posto degli esseri umani si verifica un picco di produttivitร . Iย team Scrumย possono quindi concentrarsi sulla qualitร dei prodotti invece di sprecare energie per la logistica. Il risultato? Membri del team piรน felici e piรน coinvolti nel lavoro, e desiderosi di contribuire a lungo al successo della squadra.

Sostenibilitร
La sostenibilitร รจ fondamentale per tutte le aziende, non solo per quelle del settore tecnologico. L'affermazione "Il software sta divorando il mondo" รจ ormai superata: il software ha giร inglobato il mondo. Che si tratti di sanitร , finanza, vendita al dettaglio o altri settori, le aziende sfruttano la tecnologia per distinguersi dalla concorrenza e surclassare i competitor. L'automazione aiuta a ridurre e a eliminare i ripetitivi task manuali, soggetti a errori, mettendo cosรฌ l'azienda nelle condizioni ideali per innovare meglio, piรน rapidamente, e soddisfare le esigenze dei propri clienti.
Chi dovrebbe adottare la continuous delivery e quando?
Qual รจ il momento giusto per adottare la continuous delivery? Era ieri.
I team hanno bisogno di un unico backlog ordinato per prioritร dove:
- 1
La continuous delivery รจ stata pienamente adottata, invece di essere relegata in secondo piano
- 2
I criteri di accettazione delle storie utenti menzionano esplicitamente gli approcci di distribuzione automatizzata del software anzichรฉ quelli manuali
- 3
Lo sprint "Definizione di 'Completato'" impedisce ai team di terminare gli sprint in cui il prodotto รจ stato rilasciato manualmente
La continuous delivery รจ la scelta migliore e a volte richiede il sostegno degli esperti per accelerare la trasformazione. Se le pipeline di continuous delivery sono progettate nel modo giusto, l'investimento si ammortizza facilmente.
E quindi, chi sono le figure coinvolte?
Alcune organizzazioni affidano a persone inesperte la progettazione e l'implementazione di pipeline di continuous delivery e scoprono a proprie spese la profonda complessitร del processo. La scelta di membri junior invia un segnale sbagliato ai team e implica che la continuous delivery ha una bassa prioritร . Consigliamo vivamente di affidare il progetto a un senior architect appassionato di operazioni di business e attivitร tecnologiche.
Oltre la continuous delivery
A prescindere dal punto in cui si trova la tua azienda, lโadozione di un approccio continuo per ogni fase, dall'integrazioneย alย test, dallaย consegnaย allaย distribuzione, fino all'analisi e cosรฌ via, non consiste in un elenco di attivitร da completare o in una meta da raggiungere, ma di un percorso al centro del quale si trova il miglioramento continuo.
Prima o poi, tutti i membri dell'organizzazione vengono coinvolti nella creazione di pipeline di continuous delivery: dirigenti, ingegneri e responsabili di prodotto, business unit di governance, rischio, conformitร , InfoSec, attivitร operative e legali e molto altro ancora. Le pipeline abbattono i silos e le barriere. Tutti noi facciamo parte di questa trasformazione, in un modo o nell'altro: il concetto di "continuo" rappresenta la nuova normalitร .
Introduzione a CI/CD
Per iniziare a implementare CI/CD puoi utilizzare strumenti specifici che aiutano con l'integrazione e automatizzano i processi di sviluppo, distribuzione eย test. ย ย
ย
Atlassian offre unaย soluzione Open DevOpsย che fornisce processi DevOps end-to-end, tra cui CI/CD. I team possono utilizzare numerosi strumenti comeย Bitbucket Pipelines, un servizio di CI/CD integrato in Bitbucket che consente di compilare, testare e persino distribuire automaticamente il codice in base al file di configurazione presente nel repository. Open DevOps puรฒ essere integrato anche con altri strumenti di CI/CD tra cui Harness, GitLab, JFrog, Codefresh e CircleCi.ย
Ecco un'analisi dettagliata delleย integrazioni Open DevOps. Ricordati di dare un'occhiata ai nostriย tutorial su CI/CD DevOps.
