saverioriotto.it

Implementazione Canary vs blue-green

Le strategie di distribuzione delle applicazioni come gli aggiornamenti in sequenza aiutano le organizzazioni IT a gestire il cambiamento con il minimo rischio.

Implementazione Canary vs blue-green

Anche prima del cloud, a nessuno piacevano i tempi di inattività della distribuzione. Con le applicazioni ospitate in data center tradizionali che limitavano l'accesso per gli utenti locali, molte organizzazioni pianificavano le distribuzioni quando gli utenti avevano meno probabilità di utilizzare le applicazioni, ad esempio nel cuore della notte. Con l'adozione diffusa di ambienti basati su cloud 24x7 a cui si accede da tutti i fusi orari, ogni ora del giorno, le finestre di distribuzione facili da trovare sono scomparse. Tutti mirano a rendere le proprie applicazioni sempre disponibili a tutti i potenziali utenti, in ogni momento.

Storicamente, gli sviluppatori portavano offline le applicazioni durante la distribuzione di modifiche e aggiornamenti, causando tempi di inattività. Ora, le pipeline di integrazione continua e distribuzione continua (CI/CD) che automatizzano la creazione, il test e la distribuzione delle applicazioni aiutano a mantenere gli ambienti il ​​più possibile attivi e ad accelerare il processo di distribuzione. Tuttavia, la distribuzione di un'applicazione o l'aggiornamento di un ambiente può comunque causare tempi di inattività e altri problemi.

Distribuzione senza tempi di inattività

L'obiettivo finale per la maggior parte delle aziende, in particolare quelle con un'architettura applicativa moderna e una pipeline CI/CD consolidata, è distribuire applicazioni e funzionalità in qualsiasi momento senza alcun effetto evidente sull'utente finale. Ciò richiede l'implementazione delle modifiche negli ambienti di produzione, in modo rapido e sicuro, senza interrompere gli utenti che potrebbero eseguire attività critiche o fare affidamento sui sistemi per processi mission-critical.

La tua applicazione e l'architettura di distribuzione svolgono un ruolo chiave nel ridurre al minimo o addirittura eliminare i tempi di inattività della distribuzione. In genere, l'ambiente deve soddisfare i seguenti requisiti per i metodi di distribuzione canary e blue-green:

- Una pipeline di distribuzione in grado di creare, testare e distribuire in ambienti specifici.
- Più nodi o contenitori dell'applicazione distribuiti dietro un sistema di bilanciamento del carico.
- Un'applicazione senza stato, che consente a qualsiasi nodo del cluster di servire le richieste in qualsiasi momento.

Inoltre, quando apporti modifiche alla tua applicazione, queste dovrebbero essere non distruttive per il tuo livello dati. Ciò significa che dovresti rendere le colonne nei tuoi set di dati facoltative o nullable e non rinominare o riutilizzare le colonne per scopi diversi. L'adozione di questo approccio non distruttivo nel livello dati consente di annullare le modifiche o di annullare le funzionalità se qualcosa dovesse andare storto.

Con questi requisiti in mente, tuffiamoci nella prima opzione di distribuzione senza tempi di inattività: la distribuzione blu-verde.

Che cos'è la distribuzione blu-verde?

La distribuzione blu-verde, la più comune delle due opzioni che stiamo considerando, divide essenzialmente l'ambiente dell'applicazione in due sezioni con risorse uguali, una blu e una verde. Ciò consente di servire l'applicazione corrente su metà del proprio ambiente (l'ambiente blu) utilizzando il sistema di bilanciamento del carico per dirigere il traffico. Puoi quindi distribuire la tua nuova applicazione nell'altra metà del tuo ambiente (l'ambiente verde) senza influire sull'ambiente blu.

Utilizzando i sistemi di bilanciamento del carico per dirigere il traffico, mantieni il tuo ambiente blu in esecuzione senza problemi per gli utenti di produzione mentre esegui il test e la distribuzione nel tuo ambiente verde. Quando la distribuzione e il test hanno esito positivo, puoi cambiare il tuo sistema di bilanciamento del carico per indirizzare il tuo ambiente ecologico senza alcun cambiamento percettibile per i tuoi utenti.

Ci sono molti altri vantaggi nell'impostare l'ambiente dell'applicazione in questo modo. Ad esempio, l'ambiente verde può anche fungere da hot standby istantaneo se l'applicazione è sottoposta a un carico pesante o anche come parte di un'attività di ripristino di emergenza.

Che cos'è la distribuzione Canary?

La distribuzione Canary funziona in modo simile alla distribuzione blu-verde, ma utilizza un metodo leggermente diverso. Invece di un altro ambiente completo in attesa di essere commutato una volta terminata la distribuzione, le distribuzioni canary tagliano prima solo un piccolo sottoinsieme di server o nodi, prima di terminare gli altri.

Esistono molti modi per configurare il tuo ambiente per le distribuzioni canary, ma il più semplice è impostare il tuo ambiente dietro il tuo sistema di bilanciamento del carico normalmente, ma mantenere uno o due nodi o server aggiuntivi (a seconda delle dimensioni della tua applicazione) come riserva inutilizzata . Questo nodo o gruppo di server di riserva è la destinazione di distribuzione per la pipeline CI/CD. Dopo aver creato, distribuito e testato questo nodo, lo aggiungi di nuovo al tuo sistema di bilanciamento del carico per un periodo di tempo limitato per un gruppo limitato di persone. Ciò consente di assicurarsi che le modifiche abbiano esito positivo prima di ripetere il processo con gli altri nodi del cluster.

L'altra opzione per la configurazione di una distribuzione canary consiste nell'utilizzare un modello di sviluppo chiamato alternanza di funzionalità o flag di funzionalità. Gli interruttori delle funzionalità funzionano creando e distribuendo le modifiche a un'applicazione controllata da una configurazione che non funziona senza attivare tali modifiche. Come sopra, si elimina un nodo dal cluster, lo si distribuisce e lo si aggiunge nuovamente, ma senza la necessità di testare o controllare nulla tramite il sistema di bilanciamento del carico. Quindi, quando tutti i nodi vengono aggiornati, si attiva la funzionalità per un numero di utenti prima di distribuirla a tutti.

Lo svantaggio di questo metodo, tuttavia, è il tempo di sviluppo e il costo della modifica dell'applicazione per supportare le funzionalità di commutazione. A seconda dell'età e delle dimensioni della tua applicazione, lo sviluppo di questa funzionalità potrebbe essere abbastanza complesso o quasi impossibile.

Distribuzione blue-green e  canary a confronto

Quindi quale metodo, blue-green o canary, è il modo migliore per ottenere implementazioni senza tempi di inattività? Entrambi sono meccanismi di distribuzione efficaci ed entrambi richiedono un'architettura abbastanza simile, ma ognuno ha alcune caratteristiche distintive.

Se hai la capacità per due ambienti di hosting di applicazioni completi e la tua applicazione cambia raramente in modo non compatibile con le versioni precedenti, il blu-verde offre i vantaggi più secondari con modifiche minime dell'applicazione. Consente un ambiente con tempi di inattività pari a zero che puoi sfruttare anche quando si verificano problemi di prestazioni o durante una situazione di ripristino di emergenza.

Se, tuttavia, il numero di risorse aggiuntive che puoi fornire è limitato o se la tua applicazione è modulare e basata sulla configurazione, puoi invece utilizzare l'opzione di distribuzione canary. Anche se ti manca un ambiente extra da sfruttare per altre problematiche, riduci al minimo l'importo speso per la gestione e la manutenzione del tuo ambiente. La distribuzione Canary fornisce anche un modo più semplice per abilitare e disabilitare le funzionalità in qualsiasi momento o in base a qualsiasi set di criteri.

Entrambi i metodi, tuttavia, richiedono una pianificazione preliminare e una riflessione sull'architettura delle applicazioni e degli ambienti.

 




Commenti
* Obbligatorio