Un fix in produzione è pronto, la web build è verde e il tuo team potrebbe deployarlo in pochi minuti. Poi qualcuno si ricorda che il rilascio mobile dipende ancora dalla revisione dell'app store, da una checklist di compliance o da un release manager che è fuori ufficio. Il code è finito, ma il prodotto è fermo.
È proprio in quel divario che continuous delivery è fondamentale. Offre ai team un metodo ripetibile per garantire che ogni modifica sia testata, impacchettata, tracciabile e pronta per il rilascio, che l'ultimo step sia un deployment automatizzato in produzione, un'approvazione manuale o un aggiornamento mobile inviato a un'app già installata.
Indice dei contenuti
- Cos'è la continuous delivery nei moderni team software
- Componenti chiave di una pipeline di Continuous Delivery
- Misurare la salute della pipeline con le metriche DORA
- Continuous Delivery vs Continuous Deployment
- Pattern di Progressive Delivery
- Continuous Delivery per app mobile e cross-platform
- Bilanciare velocità e sicurezza nei settori regolamentati
- Step di implementazione ed errori comuni da evitare
Cos'è la continuous delivery nei moderni team software
Un team fa il merge di una piccola fix e ha una build validata pronta per il rilascio prima ancora che il product manager finisca di controllare l'issue. Un altro team raggruppa le modifiche in un grande rilascio mobile, attende il ciclo di review del binario e spera che nulla si rompa nella ristretta finestra di rilascio. Entrambi i team potrebbero usare la continuous integration, ma solo il primo ha costruito un processo di delivery che mantiene il software sempre pronto da rilasciare.
Continuous delivery significa mantenere il software in uno stato sempre rilasciabile, grazie all'automazione di build, test, packaging e preparazione al rilascio. Jez Humble e David Farley hanno reso popolare formalmente la pratica nel 2010 con Continuous Delivery: rilasci software affidabili tramite l'automazione di build, test e deployment. La loro definizione ha esteso la continuous integration oltre l'automazione della build, fino al workflow più ampio necessario per testare e deployare una nuova build, come descritto nel record ACM del lavoro sulla continuous delivery.
La continuous integration valida le modifiche man mano che gli sviluppatori le integrano in un codebase condiviso. La continuous delivery fa un passo avanti: crea una release candidate, la verifica tramite quality gate espliciti, salva l'artifact risultante e lo rende disponibile per un rilascio controllato. Questo rilascio finale può ancora richiedere l'approvazione manuale.

La decisione manuale è intenzionale
Continuous delivery e continuous deployment non sono sinonimi.
Con la continuous delivery, la pipeline automatizza tutto fino alla prontezza per la produzione. Un release manager, un product owner o un engineer può comunque decidere quando la modifica debba raggiungere gli utenti live. La continuous deployment elimina questa decisione e invia ogni modifica che supera la pipeline direttamente in produzione.
Una linea di montaggio è un paragone calzante. Ogni stazione controlla il prodotto, registra il risultato e impedisce ai pezzi difettosi di procedere. Al molo di spedizione, il manager decide comunque quale camion parte e quando. La continuous delivery funziona allo stesso modo. L'automazione gestisce le verifiche ripetitive, mentre le persone mantengono il controllo su tempistiche e rischi di business.
Per i team mobile, questa distinzione è particolarmente importante. Un binario nativo può richiedere la review degli store, comunicazioni coordinate o l'approvazione di un'unità aziendale soggetta a normative. La pipeline può comunque eseguire build e test, firmare e preparare il binario in automatico, anche quando è una persona a controllare il rilascio finale.
Regola pratica: Se il tuo team non è in grado di produrre una release candidate testata e identificabile on-demand, non ha ancora raggiunto la continuous delivery.
La domanda chiave non è se il tuo team rilascia di continuo, ma se il prossimo rilascio è prevedibile, ripetibile e sicuro da promuovere.
Componenti chiave di una pipeline di Continuous Delivery
Una pipeline di delivery trasforma una modifica al codice in una release candidate controllata. L'implementazione cambia tra un web service, un'applicazione Capacitor e un'app desktop Electron, ma le responsabilità restano le stesse.
Il version control definisce l'input
Ogni pipeline ha bisogno di una fonte di verità affidabile. Gli sviluppatori fanno commit di code dell'applicazione, configurazioni, test e definizioni della pipeline nel version control. Ogni modifica deve essere riconducibile a un commit, a una pull request o a una revisione approvata, non a una build locale non documentata.
La strategia di branching conta meno della chiarezza. I team possono usare branch di breve durata, trunk-based development o un altro modello, ma la pipeline deve rendere evidente quale revisione è in build e quale è idonea al rilascio.
Le build creano artifact riproducibili
La fase di build trasforma il code sorgente in qualcosa di deployabile. Per un'app cross-platform, ciò può includere un web bundle, l'output di un progetto nativo, un pacchetto Electron o un binario mobile firmato. La build deve girare in un ambiente pulito e consistente, catturando le proprie dipendenze invece di fare affidamento sulla macchina di un developer.
Un build che passa in locale ma fallisce nella CI non è un processo di delivery. È solo un invito al release drift.
I test forniscono evidenze su più livelli
Nessuna suite di test da sola può garantire la fiducia nel rilascio. Pipeline efficaci combinano controlli con scope differenti:
- Unit test individuano rapidamente i difetti in funzioni e componenti isolati.
- Integration test verificano la comunicazione con servizi, plugin, storage e API della piattaforma.
- Acceptance test eseguire i workflow dell'utente, come autenticazione, checkout, sincronizzazione o recupero offline.
- Controlli statici e di policy imporre formattazione, regole sulle dipendenze, requisiti di sicurezza e altri standard di progetto.
Per applicazioni mobile e cross-platform, esegui test end-to-end su un ambiente di staging simile alla configurazione di produzione. Un test superato su un mock semplificato potrebbe non far emergere problemi di permessi della piattaforma, un mismatch della versione API o un errore nella gestione degli update.
Gli artifact preservano l'identità del rilascio
La pipeline dovrebbe archiviare l'artifact esatto che ha superato la validazione. Ricompilare in seguito dallo stesso codice può produrre un risultato diverso se cambiano dipendenze, tooling o configurazione. L'archiviazione degli artifact offre al team un oggetto stabile da promuovere, ispezionare, confrontare e ripristinare.
L'automazione del deployment sposta l'artifact approvato
L'automazione del deployment pubblica l'artifact validato nell'ambiente di destinazione. Deve applicare la configurazione in modo coerente, registrare chi o cosa ha avviato l'azione e mostrare uno stato chiaro in caso di errore. I team possono usare un servizio di deployment, un workflow CI o un sistema di release specifico, ma il processo non deve dipendere da una sequenza di comandi manuali.
Il guida all'automazione del deployment per i team Capacitor copre l'aspetto operativo del passaggio delle modifiche validate attraverso gli ambienti.

Quality gate e rollback fanno parte del design
Un quality gate è una condizione esplicita che deve essere soddisfatta prima che la pipeline proceda. Esempi includono test superati, una firma valida, un dependency scan approvato, una configurazione dell'ambiente corrispondente o una review obbligatoria. I gate funzionano al meglio quando il team documenta cosa proteggono e chi può bypassarli.
Anche il rollback richiede la stessa attenzione. Se un deployment introduce un difetto critico, il percorso di recovery dovrebbe essere automatizzato o ridotto a un'azione semplice e ben testata. Una pipeline che pubblica velocemente ma richiede al team di ricostruire manualmente il rilascio precedente non è abbastanza sicura per una delivery frequente.
Una definizione tecnica di continuous delivery e del suo meccanismo di pipeline automatizzata sottolinea questa proprietà centrale: le modifiche vengono buildate, testate e preparate automaticamente per il rilascio, mentre il deployment in produzione può ancora richiedere una decisione manuale. La pipeline non è solo una pianificazione: è l'architettura che rende continua la release readiness.
Misurare la salute della pipeline con le metriche DORA
Un team può aumentare la frequenza dei deployment rendendo la produzione meno stabile. Ecco perché le performance di delivery richiedono più del semplice conteggio dei rilasci.
DORA definisce quattro metriche chiave del flusso:
| Metrica | Cosa ti dice |
|---|---|
| Frequenza di deployment | Con quale frequenza il team deploya le modifiche |
| Lead time per le modifiche | Quanto tempo impiega una modifica a passare dal commit alla produzione |
| Tasso di fallimento delle modifiche | Con quale frequenza un deployment causa un fallimento, rollback, hotfix o altri eventi di ripristino |
| Tempo medio di ripristino del servizio | Quanto rapidamente il team riporta il servizio a uno stato sano dopo un fallimento |
I livelli di performance DORA mostrano che i team elite effettuano il deploy più volte al giorno, raggiungendo lead time di meno di un'ora, e mantengono un tasso di fallimento dei cambiamenti nel range 0-15%. I team meno performanti effettuano il deploy meno di una volta ogni sei mesi e attendono più di sei mesi prima che le modifiche arrivino in produzione, secondo il paper di Octopus sulle metriche della continuous delivery.
Questi dati non sono un obiettivo da copiare senza contesto. Dimostrano perché la delivery debba essere trattata come un sistema di controllo. Batch più piccoli riducono l'area di impatto di ogni release, mentre loop di feedback più brevi aiutano i team a rilevare i difetti vicino alla modifica che li ha introdotti.
La velocità senza recovery è una trappola
La frequenza di deployment è facile da celebrare ma anche da usare male. Un team mobile potrebbe pubblicare molti bundle a basso rischio, effettuando però continui rollback di modifiche fallite. Un team backend potrebbe fare deploy spesso, ma impiegare troppo tempo per ripristinare il servizio dopo gli incidenti. In entrambi i casi, la velocità da sola nasconde debolezze operative.
Monitora le quattro metriche insieme. Se il lead time diminuisce mentre il change failure rate aumenta, la pipeline si sta muovendo più velocemente delle sue salvaguardie. Se la frequenza di deployment resta bassa mentre le build restano ferme in attesa di approvazione, il collo di bottiglia potrebbe essere la governance piuttosto che l'engineering.
Le attuali linee guida DORA raccomandano inoltre di guardare oltre le metriche di flusso principali, analizzando: change fail rate, deployment rework rate, failed deployment recovery time e pipeline stability, come spiegato nella guida sulle metriche DORA. Queste misure sono particolarmente utili per le pipeline mobile, dove una sottomissione allo store fallita, un binario rifiutato o un live update problematico possono generare un lavoro extra che un semplice conteggio dei deployment non rivelerebbe.
Monitora l'intero percorso end-to-end
Traccia timestamp e risultati dal commit al build, test, pubblicazione dell'artifact, approvazione, deployment e recovery. Collega ogni release alla sua revisione sorgente e all'ambiente. Per un aggiornamento mobile, includi channel, versione del bundle, stato di adozione, stato di errore ed eventi di rollback.
Associa i quattro risultati DORA agli indicatori principali che segnalano i problemi prima che le metriche peggiorino:
- Durata della pipeline: Monitora build o fasi di test che si protraggono troppo a lungo, incoraggiando eventuali bypass.
- Tasso di deploy falliti: Separa i difetti dell'applicazione dai fallimenti di infrastruttura, configurazione e pipeline.
- Conteggio rollback: Considera i rollback frequenti come un segnale per analizzare lacune nei test, il design del rollout o la dimensione delle modifiche.
- Flakiness dei test: Monitora i test che falliscono senza causare difetti reali, perché troppi falsi positivi abituano i team a ignorare gli errori.
- Tracciabilità degli artifact: Conferma che la versione in produzione sia riconducibile a una revisione del codice e alle relative prove di verifica.
Spesso i team scoprono che il collo di bottiglia non è il compilatore o il test runner. È una coda di approvazione manuale, un ambiente di staging inaffidabile, un passaggio di firma mancante o un processo di rollback mai testato.
Una pipeline sana rende i fallimenti visibili subito e il recovery un'operazione di routine.
Usa pratiche di release velocity per esaminare l'intero flusso invece di ottimizzare una singola fase isolata. L'obiettivo è imparare più velocemente e cambiare in sicurezza, non ottenere un numero vanitoso sulla velocità di rilascio.
Continuous Delivery vs Continuous Deployment
La differenza è un singolo gate, ma quel gate cambia l'intero modello operativo.
Continuous delivery prepara ogni modifica superata per il rilascio, mantenendo la decisione finale di produzione sotto il controllo umano. Deployment continuo promuove automaticamente in produzione ogni modifica che supera tutti i quality gate. Il secondo modello può accorciare i feedback loop, ma presuppone che i controlli automatizzati, l'osservabilità e il rollback siano sufficientemente robusti da sostituire la fase di approvazione.
| Aspetto | Continuous Delivery | Continuous Deployment |
|---|---|---|
| Ambito della pipeline | Build, test, packaging e preparazione dei rilasci | Build, test, packaging e deployment dei rilasci |
| Decisione sulla produzione | Una persona può approvare o avviare il deployment | La pipeline gestisce il passaggio in produzione automaticamente |
| Controllo del rischio | Combina l'automazione con un gate di rilascio deliberato | Si basa molto su rilevamento e recovery automatizzati |
| Ideale per | App mobile, workflow regolamentati e modifiche che richiedono coordinamento | Web service maturi con test solidi, flag, monitoring e rollback |
| Trade-off principale | Più controllo, ma possibili ritardi nelle approvazioni | Feedback più rapido, ma meno revisione umana prima del rilascio |
Il continuous deployment ha senso quando il team può rilevare rapidamente una modifica difettosa e ripristinare lo stato precedente senza esitazione. Feature flag, canary exposure, health check e rollback automatici riducono il blast radius, ma non compensano test deboli o una scarsa observability.
La continuous delivery è spesso la scelta più onesta per le applicazioni mobile. La revisione degli store, il coordinamento delle versioni native, la comunicazione con i clienti e i vincoli delle piattaforme possono rendere irrealistico un deployment in produzione totalmente automatico. Il team può comunque automatizzare quasi tutto e riservare una decisione consapevole per lo step che comporta rischi di business o di piattaforma.
Le ricerche sulle barriere all'adozione confermano questa cautela. Uno studio empirico del 2017 ha identificato 11 fattori che hanno impedito alle aziende di rilasciare modifiche automaticamente in produzione, tra cui la mancanza di test di accettazione automatizzati, controlli di qualità manuali, scarsa copertura dei test e processi di deployment burocratici, come documentato nello studio sui limiti della continuous delivery.
La scelta non è una gara di maturità. Deve riflettere i tipi di errore che il tuo team può gestire.
Per un confronto più dettagliato tra i due modelli, consulta continuous delivery e continuous deployment. Il test pratico è semplice: se rimuovere l'approvazione esporrebbe gli utenti prima che il team possa rilevare e risolvere un problema, mantieni il gate e ottimizza prima la pipeline.
Pattern di Progressive Delivery
Lo staging non dovrebbe essere l'unico gate prima che gli utenti vedano una modifica. I team più esperti combinano l'automazione del deployment con controlli in produzione che limitano il blast radius e definiscono le regole di promozione prima di scalare il traffico.
| Pattern | Come funziona | Velocità di rollback | Caso d'uso ideale |
|---|---|---|---|
| Canary | Espone una nuova versione a una porzione limitata di traffico o infrastruttura prima di una promozione più ampia | Veloce quando i segnali di health e il rollback automatizzato sono collegati | Modifiche all'infrastruttura e modifiche che richiedono la validazione del comportamento live |
| Blue-green | Commuta il traffico tra due ambienti simili alla produzione | Molto veloce quando il routing può essere invertito in modo pulito | Cutover sensibili alla compliance e rilasci che richiedono un fallback pronto |
| Feature flag | Rilascia code controllando se gli utenti possono accedere al comportamento | Veloce per il comportamento dell'app, purché il servizio di flag sia disponibile | Logica di business rischiosa, esposizione graduale al pubblico e lanci coordinati con il marketing |
Una strategia progressiva funziona solo se il team definisce il successo prima del deployment. La pipeline richiede health check, telemetria utile, una regola di promozione e un percorso di rollback testato. Spesso i team combinano pattern, come un flag per una regola di pagamento e un canary per un cambio di piattaforma. Vedi il confronto tra staged rollouts e full releases per un altro modo di valutare queste scelte.
Continuous Delivery per app mobile e cross-platform
I team mobile ereditano un vincolo di delivery che i team web spesso evitano. Un deployment web raggiunge gli utenti non appena il sistema di produzione serve il nuovo code. Una modifica mobile nativa può dover attendere la revisione dello store, l'adozione degli utenti e l'installazione prima di essere disponibile.
Questo non significa che i team mobile debbano abbandonare la continuous delivery. Significa che devono separare la shell nativo presente nella layer web dove la piattaforma lo permette. Capacitor e le applicazioni Electron possono pacchettizzare JavaScript, CSS e asset separatamente dalle funzionalità native, creando un percorso di delivery per le modifiche idonee che non richiede un nuovo binario per lo store.

Una piattaforma di live-update come Capgo può pubblicare bundle web firmati su canali mirati per applicazioni CapacitorJS ed Electron. In questo workflow, il team continua a fare build e test del bundle in CI, applica i quality gate e registra l'artifact. La fase di deployment invia il bundle approvato a un canale come staging o production, e l'app installata applica l'update al lancio successivo.
Questo mantiene i principi fondamentali della CD. L'app non scarica codice non verificato da un endpoint improvvisato. Il team ha un artifact versionato, un pubblico controllato, visibilità sugli update e un piano di recovery.
Una pipeline mobile richiede gate aggiuntivi
Una pipeline cross-platform concreta dovrebbe validare più del semplice comportamento dell'app:
- Compatibilità di piattaforma: Conferma che il bundle funzioni con il runtime nativo già installato sulle versioni target dell'app.
- Firma e integrità: Assicurati che l'update pubblicato sia firmato e che il client accetti solo bundle validi.
- Targeting dei canali: Passa da development a staging e poi a production senza mischiare i pubblici.
- Ripristino startup: Verifica che un aggiornamento fallito possa essere rifiutato o ripristinato, evitando che l'app diventi inutilizzabile.
- Controlli dei limiti nativi: Blocca le modifiche al web layer che richiedono plugin nativi o nuovi permessi, poiché queste devono far parte di un nuovo rilascio binario.
Gli aggiornamenti differenziali possono ridurre i dati inviati pubblicando solo i file modificati. I rollout mirati permettono inoltre di testare una modifica su un pubblico controllato prima del rilascio globale. Questi controlli non sostituiscono i test e non devono diventare un modo per aggirare le policy degli store o i requisiti di compatibilità nativa.
La guida seguente mostra come integrare i Live Update in un workflow di delivery Capacitor senza eliminare le fasi di validazione che rendono affidabile la CD.
La decisione di design fondamentale è definire cosa può essere distribuito come web bundle e cosa richiede un rilascio nativo. Modifiche alla UI, testi, logica JavaScript e asset compatibili possono seguire il percorso più veloce. Modifiche a code nativi, permessi, plugin o diritti della piattaforma richiedono il percorso più lento mediato dagli store. Trattarli come classi di rilascio separate mantiene la pipeline veloce senza ignorare i controlli esterni delle piattaforme mobile.
Bilanciare velocità e sicurezza nei settori regolamentati
I team in settori regolamentati spesso incolpano la compliance per i rilasci lenti, ma il problema vero è di solito il lavoro di conformità manuale, la documentazione in silos e tracce di audit deboli. Un rilascio che dipende da persone che copiano le prove tra sistemi resterà lento anche se l'applicazione ha test automatizzati eccellenti.
La continuous delivery può migliorare il controllo se i team codificano i requisiti nella pipeline. Un quality gate può richiedere test approvati, un artifact firmato, un riferimento documentato alla modifica o una review prima della promozione. La pipeline può conservare il risultato automaticamente, dando ad auditor e operatori un registro coerente invece di affidarsi a memoria e screenshot.
Un Report 2025 con un'indagine su 50 organizzazioni finanziarie ha rilevato che le pipeline di continuous delivery automatizzate possono migliorare il throughput aumentando al contempo la stabilità, mettendo in discussione l'idea che la continuous delivery debba sacrificare la sicurezza per la velocità, secondo il report sulla continuous delivery nelle organizzazioni finanziarie.
L'automazione rende i controlli ripetibili
Le procedure di deployment manuali creano variabilità. Un ingegnere può seguire correttamente una checklist, mentre un altro salta un controllo di migrazione o deploya l'artifact sbagliato. L'automazione non elimina le responsabilità, ma rende la procedura prevista eseguibile e verificabile.
Una pipeline regolamentata dovrebbe rendere visibili questi controlli:
- Identità della modifica: Associa il rilascio a una revisione del codice, un artifact, un ticket e un ruolo di approvazione.
- Prove di qualità: Salva i risultati dei test e l'esito dei gate nel record di rilascio.
- Confini di promozione: Permessi separati per sviluppo, staging e produzione.
- Prontezza al rollback: Mantieni disponibile l'ultima versione stabile e rendi il recovery testabile.
- Segnali operativi: Monitora errori, disponibilità, fallimenti degli update ed esiti del deployment dopo il rilascio.
Il rischio non è rilasciare velocemente. Il rischio è rilasciare senza osservabilità, capacità di rollback o tracciamento dei cambiamenti. Un processo manuale lento può comunque rilasciare una modifica non testata o errata, mentre un processo automatizzato può bloccarla costantemente prima della produzione.
Per i team mobile in ambito fintech o healthcare, la continuous delivery può significare una pipeline automatizzata dei bundle con un gate di approvazione documentato. Questo garantisce comunque il vantaggio principale, ovvero un rilascio sempre pronto, senza costringere l'azienda a rimuovere i controlli richiesti dal proprio modello di rischio. I team che operano con questi requisiti possono usare check di compliance in CI/CD per app Capacitor come parte del proprio release design.
La sicurezza deriva dalle evidenze, dall'esposizione controllata e dal recovery. Non deriva dal rendere ogni deployment manuale.
Step di implementazione ed errori comuni da evitare
Parti dal workflow che il tuo team già segue, poi elimina un passaggio manuale alla volta.
- Inserisci code, test, configurazioni e definizioni di pipeline sotto controllo versione. Scegli un modello di branching che renda chiara la release candidate.
- Automatizza prima le fasi di build e test. Esegui unit, integration e acceptance check in ambienti puliti prima di automatizzare il rilascio in produzione.
- Definisci dei quality gate espliciti. Specifica quali check devono passare e quali errori devono bloccare la pipeline.
- Archivia gli artifact in modo immutabile. Promuovi l'artifact che ha superato la validazione invece di ricostruirlo per ogni ambiente.
- Automatizza il deployment e il rollback. Un rilascio fallito deve attivare un'azione di recovery chiara, non un'indagine manuale d'emergenza.
- Aggiungi osservabilità e metriche fin dall'inizio. Monitora la frequenza di deployment, il lead time, il tasso di errore dei cambiamenti e il tempo medio di ripristino del servizio.
I fallimenti comuni sono prevedibili. I team automatizzano la pianificazione dei rilasci prima di migliorare la test coverage, lasciano code di approvazione sempre aperte, deployano in ambienti non simili alla produzione o misurano solo la frequenza di rilascio. I feature flag possono separare il deployment dall'esposizione agli utenti, ma non giustificano code non testati o la mancata pulizia dei flag.
Per app mobile e cross-platform, definisci i confini tra rilascio nativo e web prima di scegliere una strategia di live-update. Una bundle pipeline dovrebbe rifiutare i cambiamenti che richiedono capacità native, mentre JavaScript, CSS, testi, configurazioni e asset compatibili possono seguire il percorso automatizzato.
Capgo offre live updates firmati, canali mirati, integrazione CI/CD, bundle differenziali, osservabilità e protezione dai rollback per app CapacitorJS ed Electron, aiutando i team a mantenere i cambiamenti mobile pronti per il rilascio senza considerare la revisione degli store come unico percorso di delivery. Visita Capgo per valutare come il suo workflow di update si integri nella tua pipeline di continuous delivery.