Al giorno d'oggi ci sono così tante strategie di distribuzione tra cui scegliere, e col passare del tempo ce ne saranno sempre di più. Detto questo, due delle strategie di distribuzione più comuni attualmente utilizzate da alcune delle più grandi aziende sono le strategie Canary e Blue-green.
Nel confronto tra distribuzione Blue-Green e Canary, non si tratta solo di velocità o semplicità. Uno dei fattori più importanti da considerare nella scelta tra queste strategie è il tempo di inattività della distribuzione.
Per ridurre il tempo di inattività e garantire una transizione fluida quando distribuisci aggiornamenti o modifiche, scegliere l'opzione più adatta tra distribuzione Canary e Blue-Green è fondamentale.
Vediamo quindi cosa offre ogni strategia, includendo un confronto diretto tra distribuzione Blue-Green e Canary e la nostra esperienza con distribuzione Canary rispetto a Blue-Green.
Che cos'è la distribuzione Blue-Green e quali vantaggi offre?
Nella strategia di distribuzione Blue-Green, la nuova versione di un'applicazione può essere distribuita immediatamente una volta testata e convalidata. Questo è possibile grazie a due ambienti identici: l'ambiente blue e l'ambiente green, da cui prende il nome la distribuzione Blue-Green.
Funziona così: uno di questi ambienti è attivo e l'altro inattivo. Ciò significa che la nuova versione dell'applicazione viene distribuita all'ambiente inattivo, diciamo quello green. Poiché questi due ambienti sono completamente identici in termini di risorse, infrastruttura e configurazioni, eventuali problemi nell'aggiornamento possono essere risolti prima della distribuzione completa.
Una volta testato l'aggiornamento e confermato dai developer che funziona correttamente, il traffico live viene reindirizzato a questo ambiente inattivo. In questo modo, l'ambiente inattivo (green) diventa attivo e l'ambiente precedentemente attivo (blue) diventa inattivo.
Ora l'ambiente blue inattivo diventa di riserva e può essere usato per testare nuovi aggiornamenti mentre l'ambiente green è attivo e gestisce l'aggiornamento appena distribuito. In questo modo, praticamente non c'è tempo di inattività poiché il traffico viene reindirizzato istantaneamente all'ambiente inattivo.
Inoltre, se l'aggiornamento presenta problemi, una funzione di rollback consente di tornare alla versione precedente dell'applicazione. Detto questo, se sorgono problemi mentre gli sviluppatori hanno iniziato a lavorare su un nuovo aggiornamento nell'ambiente inattivo, il rollback a quell'ambiente non è più possibile, poiché la versione precedente non è più disponibile in quell'ambiente.
Molte aziende e organizzazioni utilizzano questa strategia. Un esempio di questa strategia in azione è Spotify. Poiché i servizi di Spotify devono essere disponibili 24/7, mantiene sempre l'ambiente di backup inattivo pronto quando vengono rilasciati nuovi aggiornamenti.
Che cos'è la distribuzione Canary e quali vantaggi offre?
La differenza principale tra distribuzione Canary e Blue-Green è che invece di avere due ambienti in cui gli aggiornamenti vengono distribuiti immediatamente a tutti gli utenti, nella strategia di distribuzione Canary gli aggiornamenti vengono prima rilasciati a un piccolo gruppo di utenti.
Se l'aggiornamento presenta problemi, solo una piccola porzione di utenti lo incontra e fornisce feedback. Una volta risolti i problemi, l'aggiornamento viene rilasciato a una porzione più grande di utenti, che forniscono feedback ai developer se riscontrano problemi.
Questo ciclo si ripete con porzioni progressivamente più grandi di utenti, e tutti i problemi dell'aggiornamento vengono risolti fino a quando non viene rilasciato al 100% degli utenti. Ad esempio, inizialmente l'aggiornamento verrebbe rilasciato solo al 2%, poi al 25%, poi al 75% e infine al 100% degli utenti.
Questo rilascio graduale nella distribuzione Canary vs. Blue-Green offre un rollout più controllato e flessibile, permettendo ai developer di testare funzionalità e aggiornamenti in un ambiente controllato dove solo una piccola porzione affronta potenziali problemi.
Infine, Canary offre anche una funzione di rollback simile; tuttavia, poiché la distribuzione avviene gradualmente e per fasi, il rollback in Canary avviene anch'esso gradualmente e per fasi fino a quando non viene raggiunta una versione stabile.
Un esempio ben noto di questa strategia di distribuzione è l'uso di Canary da parte di Netflix insieme a uno strumento chiamato Chaos Monkey, che introduce intenzionalmente errori nel loro sistema. Se un errore colpisce l'ambiente canary, il team di Netflix può analizzare come il sistema risponde e adattarsi di conseguenza. In questo modo, Netflix può verificare che l'aggiornamento rimanga stabile e resiliente anche in condizioni avverse.
Distribuzione Blue-Green vs. Canary
Entrambe queste strategie di distribuzione offrono benefici unici, ma hanno anche i loro limiti. Per questo motivo è importante valutare i pro e i contro dello sviluppo Blue-Green vs. Canary prima di prendere una decisione.
Se sei ancora indeciso su quale scegliere dopo questa sezione, ho incluso anche la nostra esperienza con queste due strategie e ciò che abbiamo imparato alla fine di questo articolo.
Riduzione dei Tempi di Inattività
Uno dei principali argomenti affrontati in questo articolo è la riduzione dei tempi di inattività durante il deployment: Blue-Green vs. Canary. Il Blue-Green deployment offre un vantaggio significativo in termini di velocità, poiché consente di distribuire aggiornamenti o nuove funzionalità istantaneamente utilizzando due ambienti separati.
Al contrario, l'approccio graduale del Canary deployment minimizza i tempi di fermo poiché solo un piccolo gruppo di utenti incontra eventuali problemi. Inoltre, poiché il feedback viene fornito ad ogni fase, la risoluzione dei problemi avviene molto più rapidamente e senza alcun tempo di inattività.
Entrambi i servizi offrono funzionalità di rollback, ma il Blue-Green deployment ha un vantaggio: il rollback è istantaneo, offrendo agli sviluppatori un backup affidabile in caso di problemi significativi. Tuttavia, una versione di backup non sarà disponibile se si sta sviluppando una versione più recente nell'ambiente inattivo.
Il rollback del Canary deployment è graduale, come il suo processo di distribuzione. Di contro, è sempre disponibile perché la versione precedente stabile non dipende dall'ambiente in cui vengono testati e sviluppati gli aggiornamenti.
Dal punto di vista della riduzione dei tempi di inattività, confrontando Canary e Blue-Green, il Canary offre un controllo dei rischi e un controllo granulare superiori. Tuttavia, se consideriamo solo la riduzione dei tempi di fermo, Blue-Green è la soluzione migliore perché il passaggio è istantaneo.
Detto questo, quando si confrontano Blue-Green e Canary deployment, è importante considerare anche fattori diversi dalla riduzione dei tempi di inattività.
Tipo di applicazione
In generale, possiamo dividere le applicazioni in due categorie: applicazioni ad alto carico transazionale e applicazioni orientate ai contenuti. Per le applicazioni ad alto carico transazionale, Blue-Green è decisamente la scelta migliore poiché la disponibilità del servizio elevata e i tempi di fermo minimi sono prioritari. I tempi di commutazione istantanei e di rollback istantanei di Blue-Green lo rendono superiore al Canary.
Le applicazioni orientate ai contenuti, d'altro canto, non dipendono da transazioni in tempo reale. Poiché vengono generalmente utilizzate per piattaforme di social media e servizi di engagement, il Canary è la strategia migliore perché consente di distribuire gradualmente gli aggiornamenti e ricevere feedback costantemente a ogni fase.
Costi Infrastrutturali
Un'altra considerazione importante nella scelta tra Blue-Green e Canary deployment è il costo. Con Blue-Green, i costi sono inevitabilmente più elevati poiché è necessario mantenere due ambienti separati.
Per questo motivo, l'ambiente di produzione singolo del Canary è un'opzione molto più conveniente, rendendola più adatta ai team di piccole dimensioni o alle applicazioni meno resource-intensive.
Scalabilità e manutenzione a lungo termine
Infine, sebbene il Blue-Green deployment possa essere scalato, mantenere due ambienti completi per applicazioni su larga scala è resource-intensive e complesso. Nel tempo, la gestione di ambienti duplicati può aggiungere un overhead significativo, specialmente per applicazioni con esigenze infrastrutturali complesse.
Questo rende la decisione tra Canary e Blue-Green dal punto di vista della scalabilità e della manutenzione piuttosto semplice. Con il Canary deployment, la scalabilità è spesso più semplice e conveniente poiché non richiede ambienti duplicati.
Invece, si concentra sulla scalabilità all'interno dell'ambiente principale espandendo gradualmente la base di utenti esposti alle nuove modifiche. Questa configurazione è molto più gestibile nel lungo termine, poiché riduce la complessità infrastrutturale e semplifica la manutenzione.
L'esperienza di Cloudzy con distribuzione Blue-Green vs. distribuzione Canary
Nel fornire servizi DevOps ai clienti, comprendiamo che la soddisfazione del cliente, l'alta disponibilità e i tempi di fermo minimi sono critici per il successo della loro attività. In un caso particolare, un cliente ci ha chiesto di aiutarlo con un importante aggiornamento infrastrutturale. Il team doveva scegliere tra Blue-Green deployment e Canary deployment per il loro sistema.
Dopo una valutazione attenta, abbiamo deciso di provare il Blue-Green deployment poiché offriva praticamente nessun tempo di fermo. Abbiamo configurato un ambiente green identico e preparato l'aggiornamento. C'era molta pressione poiché con un semplice clic, tutto il traffico sarebbe passato all'ambiente green e, come sanno gli sviluppatori, non importa quanto tu testi queste cose, c'è sempre un elemento di incertezza.
Per fortuna, tutto è andato perfettamente. La transizione è stata fluida e abbiamo avuto quasi nessun problema. Nel tempo, con la crescita dei servizi e degli utenti del nostro cliente, abbiamo dovuto distribuire nuove funzionalità e il dibattito Blue-Green vs. Canary è riemerso.
Tuttavia, questa volta non è stato un grande dibattito. Si trattava di funzionalità relativamente minori e certamente non della portata dell'aggiornamento infrastrutturale. Abbiamo naturalmente optato per Canary poiché potevamo distribuire le funzionalità a piccole porzioni della base di utenti del nostro cliente e risolvere eventuali problemi attraverso il feedback degli utenti.
È stata decisamente la scelta giusta poiché, sebbene non abbiamo avuto grandi problemi, alcuni problemi minori hanno iniziato a emergere, segnalati dal 5% della base di utenti del nostro cliente a cui era stata distribuita la funzionalità.
In Cloudzy, crediamo nella potenza di soluzioni personalizzate. Che la tua attività abbia bisogno dell'affidabilità del Blue-Green deployment o della flessibilità del Canary deployment, il nostro team DevOps ha l'esperienza e le competenze per implementare la strategia migliore per la tua infrastruttura. Contattaci qui oggi per scoprire come possiamo ottimizzare il tuo processo di deployment e mantenere le tue operazioni funzionanti senza problemi.
A proposito di Cloudzy, offriamo alcuni dei tassi più competitivi del settore con funzionalità che includono oltre 12 sedi in tutto il mondo, connessioni Internet dedicate fino a 10 Gbps, storage enterprise, processori con turbo-speed da 3,23 GHz potenti e uptime del 99,95%. Controlla il nostro prezzi VPS per ulteriori dettagli.
Considerazioni Finali
In definitiva, quando si discusse di Canary deployment vs. Blue-Green deployment, non si può davvero dire che uno sia significativamente migliore dell'altro. È semplicemente una questione di casi d'uso e di quale si adatta meglio alle tue esigenze specifiche.
Domande frequenti
Qual è la differenza principale tra distribuzioni blue-green e canary?
La differenza principale tra le strategie Blue-Green e Canary deployment è il modo in cui gli aggiornamenti vengono distribuiti. Il Blue-Green deployment utilizza due ambienti identici, con gli aggiornamenti applicati a quello inattivo, consentendo un passaggio istantaneo con praticamente nessun tempo di fermo. Al contrario, il Canary deployment distribuisce gli aggiornamenti gradualmente a un piccolo gruppo di utenti inizialmente, monitorando i problemi prima di procedere al rollout progressivo all'intera base di utenti.
La distribuzione Blue-Green o Canary è migliore per ridurre il tempo di inattività?
Il Blue-Green deployment è generalmente migliore per ridurre i tempi di inattività perché consente un passaggio istantaneo tra gli ambienti. Questo minimizza qualsiasi potenziale interruzione. Mentre il Canary deployment mira anche a minimizzare i tempi di fermo, lo fa attraverso un rollout graduale che può comportare alcuni piccoli problemi localizzati che interessano solo un piccolo subset di utenti.
Quali sono le considerazioni di costo per distribuzioni blue-green vs. canary?
I blue-green deployments richiedono solitamente ambienti duplicati, il che comporta costi più alti. I canary deployments, invece, sono più efficienti dal punto di vista economico perché gli aggiornamenti vengono distribuiti nell'ambiente principale senza richiedere infrastrutture duplicate. Questa caratteristica li rende la scelta ideale per team più piccoli o applicazioni che richiedono meno risorse.