Distribuzione blu verde e Drupal: quanto ne sai veramente?

Pubblicato: 2019-07-23

Blue Green Deployment è uno dei pilastri delle strategie di distribuzione che supera i limiti dell'approccio tradizionale alla distribuzione delle applicazioni. Quanto ne sai di Blue Green Deployment? Come viene implementata la distribuzione Blue Green in Drupal?

Sì, avete letto bene. Dover portare l'applicazione offline per gli aggiornamenti o durante l'avvio di una versione più recente è un compito arduo e una vera seccatura. È vero che puoi mitigarlo con tempi di fermo programmati, ma non è qualcosa che renderà felici i clienti. Alcuni siti in realtà perdono migliaia di dollari ogni minuto in cui sono inattivi! La distribuzione o l'aggiornamento della tua applicazione dovrebbe essere la vera ragione della tua perdita?

Scopri perché la distribuzione blu verde è la strategia migliore per ridurre i tempi di inattività e mitigare gli altri rischi coinvolti nella distribuzione delle applicazioni. Scopri di più sull'implementazione di blue green e Drupal.

Che cos'è la distribuzione blu-verde?

Blue-Green Deployment è una tecnica per rilasciare applicazioni spostando o spostando il traffico tra due ambienti identici che eseguono due versioni diverse di un'applicazione.

In breve, esiste una versione di un'applicazione, chiamiamola "versione blu" in produzione. E poi, c'è un router che viene utilizzato per instradare il traffico verso l'app. Ora hai bisogno di un'altra versione. la "versione verde" con alcune chicche aggiunte, da distribuire. Tuttavia, vuoi anche assicurarti che mentre questa distribuzione è in corso, un utente può ancora guardare la tua applicazione, premere un pulsante o fare quello che vuole, senza che la tua applicazione si interrompa! Più come distribuire segretamente la "versione verde" mentre la "versione blu" gestisce tutto il traffico nel frattempo, prima di eventualmente scambiare le connessioni.

blue_green_deployment

Con tempi di inattività quasi nulli e funzionalità di rollback, l'idea fondamentale della distribuzione Blue-Green è spostare il traffico tra due ambienti identici che eseguono due versioni diverse dell'applicazione. Mentre la versione corrente dell'applicazione è rappresentata dall'ambiente Blue, quella verde è in fase di esecuzione di una versione diversa.

Perché la distribuzione blu-verde?

Una delle maggiori sfide con l'automazione del processo di distribuzione è il cut-over stesso, ovvero lo spostamento dell'applicazione dalla fase finale del test alla fase live. E questo deve essere risolto rapidamente per ridurre al minimo qualsiasi tipo di tempo di inattività. Questo è esattamente ciò che fa la distribuzione blu-verde. Con due ambienti di produzione (il più identici possibile in natura), in un dato momento, uno di essi è live. E mentre ti prepari per una nuova versione, fai tutti i tuoi test sull'altro ambiente che non è live. Una volta che sei pronto per iniziare, tutto ciò che devi fare è cambiare il router in modo che tutto il tuo traffico sia diretto verso la tua ultima versione e l'altro ambiente diventi inattivo.

Inoltre, la distribuzione Blue-Green fornisce una delle funzionalità più importanti, un rapido rollback. Supponiamo che se qualcosa va storto con la tua ultima versione, devi solo ripristinare il router. Anche se potrebbe esserci ancora un problema con le transazioni perse quando l'ambiente difettoso era attivo, potresti anche progettarlo in modo che entrambi i tuoi ambienti siano alimentati con le transazioni e uno funga da backup per l'altro.

Come distribuzione blu-verde?

Ora che conosciamo i due ambienti di Blue-Green Deployment, esaminiamo alcune delle migliori pratiche per implementare lo stesso.

  • Bilanciamento del carico su commutazione DNS

Tieni presente che mentre cambi ambiente, fai in modo che il tuo dominio punti a server diversi. Invece di andare ai record DNS e apportare modifiche all'interfaccia di gestione DNS, usa il bilanciamento del carico.

Il problema con le modifiche ai record DNS si tradurrà in un lungo percorso di traffico. Ciò significa che mentre alcuni dei tuoi utenti saranno ancora serviti dal vecchio ambiente, non avrai nemmeno il pieno controllo su dove viene instradato il tuo traffico.

Tuttavia, i bilanciatori del carico ti permetteranno di configurare i tuoi nuovi server immediatamente e non dovrai dipendere dal meccanismo DNS. In questo modo avrai il pieno controllo del traffico e potrai essere assolutamente sicuro che tutto il traffico venga instradato verso il nuovo ambiente.

  • Aggiornamento continuo

NON cambiare tutti i tuoi server contemporaneamente. Eseguire invece un aggiornamento in sequenza. Cioè, invece di passare ai server Green da quelli Blue tutto in una volta, lavora con un ambiente integrato. Aggiungi un nuovo server, ritirane uno vecchio. Ripetere fino a quando ogni nuovo server è a posto. Ciò ridurrà i tempi di inattività di un enorme margine!

  • Monitoraggio ambientale

Sebbene il monitoraggio dell'ambiente live sia ovvio, non vuoi finire per essere colto alla sprovvista non monitorando l'altro ambiente. Sì, il monitoraggio dell'altro ambiente è meno critico. Tuttavia, poiché lo stesso ambiente può fungere da entrambi gli stati, sarà necessario un modo più semplice per alternare l'avviso tra i due. Imposta token API diversi per i due ambienti che riportano indietro o modifica in modo programmatico la politica di avviso sull'ambiente quando il suo ruolo viene modificato/cambiato.

  • Automazione

L'insieme manuale di azioni aumenterà solo il tuo lavoro. Invece, esegui lo script di ogni azione nel processo di cambio. L'automazione del processo di passaggio si tradurrà in un'implementazione più rapida, semplice e sicura di Blue-Green Deployment.

Distribuzione blu verde per i siti Web Drupal

I problemi

  • Durante le distribuzioni del codice, Drupal deve eseguire gli aggiornamenti del database per funzionare e questo è un grosso problema poiché gli aggiornamenti di Drupal impostano il sito Web in modalità di manutenzione e i tuoi utenti vengono accolti con questo bellissimo schermo bianco.
Manutenzione Drupal
Fonte: drupal.org

Se la distribuzione non riesce, è possibile eseguire un rollback solo ripristinando il database dal dump, considerando che lo schema del database potrebbe essere stato modificato. Questo significa tempi di inattività!

Soluzione: Distribuzione Blu Verde!

Diamo un'occhiata ad alcune delle panoramiche dell'infrastruttura per implementare Blue Green Deployment con Drupal. Qualsiasi tipo di operazione in Drupal richiede Nginx e un server php (per eseguire principalmente Drupal), abbiamo bisogno di un database, un archivio di file, un po' di cache e lo stack è progettato in modo da essere altamente disponibile.

Con Blue Green Deployment, devi distribuire un nuovo stack con una nuova base di codice e copiare tutto il tuo database e i diversi stati dalla base di codice precedente, preferibilmente utilizzando Drush.

panoramica delle infrastrutture
Fonte: Drupal Con Seattle 2019

Una volta che i due diversi stack sono stati impostati, lo stack di staging deve essere testato indipendentemente dallo stack di produzione. Fondamentalmente, è necessario che gli utenti accedano allo stack (stack di produzione) e provino la versione del sito Web distribuita. E quando l'altra versione (lo stack di staging) è pronta, devi solo capovolgere le versioni. Ora gli utenti vengono indirizzati al nuovo stack e la versione precedente è disponibile per i test.

Distribuzione blu verde con Docker

Le distribuzioni in Drupal non sono facili. Mentre devi assicurarti che il codice sia distribuito, le dipendenze del compositore siano gestite, gli aggiornamenti dello schema siano aggiornati e tutte le cache siano cancellate, devi anche assicurarti che il "sito web reattivo" sia attivo e funzionante. E cosa succede se c'è un problema e la distribuzione fallisce? Fai il rollback? O interrompere la distribuzione?

La frase che stai cercando è Blue Green Deployment

Durante l'implementazione di Drupal, Docker garantisce un facile passaggio tra le applicazioni e semplifica la creazione e l'esecuzione di versioni diverse delle stesse. Nell'istanza EC2, è sempre presente una serie di contenitori docker rialzati di blu e verde e nginx funziona come server proxy inverso. La distribuzione blu e verde con Docker consente a un utente di creare un sito Web Drupal che funziona in parallelo nei due diversi ambienti.


Distribuzione Blue Green con AWS

Sebbene storicamente, la distribuzione blu-verde non fosse la prima scelta per distribuire software in sede a causa dei costi elevati e della complessità, i container hanno cambiato questa percezione per sempre.

I container facilitano l'adozione della distribuzione blue green grazie alla semplicità del pacchetto e al comportamento coerente durante il passaggio da un ambiente all'altro. E per modificare la configurazione di un container, devi solo aggiornare il suo dockerfile e ricostruire e ridistribuire il container sul posto anziché aggiornare il software.

Amazon ECS esegue questi aggiornamenti in sequenza quando aggiorni un servizio Amazon ECS esistente. L'aggiornamento in sequenza per la distribuzione ecs blue green comporta la sostituzione della versione esistente del contenitore con quella più recente. Questo numero di container che Amazon ECS aggiunge o rimuove durante l'aggiornamento è controllato regolando il numero massimo e minimo di attività integre consentite durante le distribuzioni del servizio. Dopo l'aggiornamento, la definizione dell'attività del servizio viene aggiornata con l'ultima versione dell'immagine del container, Amazon ECS inizia automaticamente a sostituire la vecchia versione del container con quella più recente.

Distribuzione blu verde di AWS

La distribuzione Blue Green con AWS ECS fornirà anche vantaggi di ottimizzazione poiché non sei legato allo stesso set di risorse. Cioè, quando l'inviluppo delle prestazioni dell'applicazione cambia da una versione all'altra, è sufficiente avviare il nuovo ambiente con le risorse ottimizzate (può essere un numero inferiore o un insieme di risorse completamente diverso).

La distribuzione blu-verde in AWS si adatta bene anche ai flussi di lavoro di integrazione e distribuzione continua, tenendo sotto controllo la loro complessità consentendo all'automazione della distribuzione di considerare meno dipendenze da un ambiente esistente.

Questa soluzione consente agli utenti di gestire facilmente l'implementazione e la scalabilità delle piattaforme web senza perdite di tempo. Questa distribuzione aiuta a configurare un ambiente ad alta disponibilità che eseguirà un sito Web Drupal senza problemi.