Load Balanced Architecture

I vantaggi di un’architettura bilanciata sono molteplici e garantiscono un’elevata affidabilità dei nostri servizi online grazie al numero variabile di nodi disponibili.

Il servizio di Load Balancing disponibile su Google Cloud è in grado di ricevere richieste, principalmente sulle porte HTTP e HTTPS, ed eseguire un mapped forwading verso un gruppo di backend. Il servizio di Load Balancing è a sua volta ridondato per garantire una costante e affidabile raggiungibilità del nostro endpoint pubblico, in sostanza il nostro dominio e i suoi sotto-domini.

La gestione di un sistema in bilanciamento di carico, oltre ad avere benefici diretti sull’affidabilità, consente di operare nelle fasi di live deployment in modo più sicuro e controllato, ad esempio utilizzando più gruppi di backend per consentire all’applicazione il passaggio di versione su un primo gruppo, in questo caso possiamo ottenere un deployment di tipo Blue-Green utilizzando il nodo non aggiornato come versione di rollback in caso di failure o errori non previsti.

Le basi di dati così come eventuali repository di file statici posso essere condivisi tramite servizi dedicati, come ad esempio Google Cloud SQL e Cloud Storage, oppure integrando applicazioni e servizi di terze parti, come ad esempio l’utilizzo di un filesystem distribuito tramite GlusterFS.

Scaling


Le applicazioni, per essere eseguite in modalità horizontal scaling, devono condividere le informazioni necessarie per il corretto funzionamento dei servizi, come ad esempio il database, le librerie dell’applicazione e i codici sorgenti per essere compilati o eseguiti in fase di deployment.

A questo proposito è necessario eseguire un design accurato del sistema che si andrà a realizzare e le modalità di condivisione dei dati, rispettando sempre una modalità protetta e sicura.

La condizione migliore per mantenere il progetto aggiornato in modalità auto-scaling dei nodi è quella di utilizzare un sistema di controllo versione, su tutti GIT, con il quale aggiornare le istanze di produzione inizializzando un nuovo sistema partendo dall’ultima versione del branch dedicato al sistema da eseguire

Blue-Green Deployment


Blue Green deployment

Il bilanciatore distribuisce il carico su due o più gruppi di istanze appartenenti alla stessa di classe di lavoro, nella pratica la nostra applicazione gira sul totale dei nodi disponibili in tutti gruppi collegati al bilanciatore (Application Backends).

In questo scenario è facile intuire come un qualsiasi guasto ad uno dei nodi non crea nessun disservizio, il bilanciatore è in grado, attraverso delle soglie impostate manualmente, di redirigere il traffico verso un backend (nodo) attivo e funzionante, così come un qualsiasi guasto all’intero nodo (application crash, update failures, overload, etc.) non provocherà la chiusura drastica di tutti gli accessi al servizio.

Oltre ai failures comuni che possono capitare durante il ciclo di vita di ogni singola istanza, l’aggiornamento di versione dei nostri servizi / applicazione è sempre un passaggio cruciale nei confronti dei nostri utenti. Un errore imprevisto potrebbe portare al down temporaneo ma prolungato di tutti i servizi, con un impatto negativo nei confronti degli utenti o peggio ancora dei clienti.

L’aggiornamento con una procedura Blue-Green consente di escludere temporaneamente il gruppo da aggiornare (A) e lasciare operativo il secondo (B), effettuare l’aggiornamento su sul primo gruppo (A), verificare che tutti gli aggiornamenti siano andati a buon fine, ricollegare il gruppo (A) al Load Balancer, scollegare il gruppo non aggiornato (B).

Costi


I costi sono variabili in funzione delle risorse da utilizzare per supportare il carico richiesto e il numero di servizi da erogare, così come il traffico di rete in uscita deve essere considerato un costo molto variabile, anche per questo meglio affidarsi ad una progettazione attenta per evitare brutte sorprese in termini di risorse consumate inutilmente.
Networking Costs
Traffic type Price
Ingress No charge
Egress* to the same zone No charge
Egress to a different Google Cloud Platform service within the same region No charge
Egress to Google products (such as YouTube, Maps, Drive) No charge**
Egress* between zones in the same region (per GB) $0.01
Egress between regions within the US (per GB) $0.01
 
Balancer Service Costs
Item Price per Unit (USD) Pricing Unit
First 5 forwarding rules $0.025 Per Hour
Per additional forwarding rule $0.010 Per Hour
Data processed $0.008 Per GB

Per ogni analisi più precisa dei costi è sempre bene affidarsi al calcolatore ufficiale di Google, alcuni costi o condizioni potrebbero variare nel tempo ed è importante avere un quadro esaustivo dei costi coinvolti in tutto il progetto. Per una consulenza su Google Load Balancer potete scriverci tramite il form inserendo le vostre necessità o per informazioni più generiche.