Parte I Parte II Parte III

Le alte prestazioni delle tecnologie software NGINX

Le alte prestazioni delle tecnologie software NGINX

In quest’ambito una delle soluzioni più comunemente impiegate è basata sulle tecnologie software NGINX. Si tratta di una soluzione scalabile configurabile e programmabile ad alte prestazioni che realizza funzionalità di web server e reverse proxy per la gestione di autenticazione, controllo d’accesso, load balancing delle richieste e caching delle risposte, con funzioni di monitoraggio di disponibilità e stato di salute dell’applicazione. Altra funzione fondamentale è quella di service discovery: data la dinamicità dell’ambiente applicativo occorre stabilire le informazioni di indirizzamento, IP e porta, di ogni microservizio, ad esempio gestendo apposite interrogazioni verso il registro dei servizi, una database in cui sono identificati i microservizi e la loro localizzazione.

Le soluzioni di ADC nelle architetture a microservizi

Le logiche di comunicazione dei microservizi: l’Inter-Process Communication

Le logiche di comunicazione dei microservizi: l’Inter-Process Communication

Un’applicazione basata su microservizi comporta l’interazione tra processi collocati su più entità di computing (es: container) in un sistema distribuito. Dove in un’applicazione monolitica le elaborazioni vengono svolte dai vari componenti che tra loro si invocano utilizzando vari metodi del linguaggio di programmazione, funzioni e procedure, tra i vari processi distinti che realizzano i microservizi occorrono invece meccanismi detti di Inter-Process Communication – IPC. L’immagine schematizza la differenza delle logiche di comunicazione tra i due modelli, a sinistra quello monolitico, a destra quello dei microservizi.

logiche di comunicazione monolitico microservizi

Il progetto delle comunicazioni tra i vari servizi deve considerare diversi aspetti: come i servizi interagiscono, come vengono specificate le API per ogni servizio e come queste evolvono con gli aggiornamenti, come il Sistema reagisce ai guasti parziali e soprattutto dal punto di vista delle comunicazioni, ogni servizio deve essere in grado di individuare la propria controparte, il che porta a considerare gli aspetti dei meccanismi di service discovery nelle architetture a microservizi.

 

È più chiaro dopo le precedenti descrizioni che nelle architetture a microservizi il sistema applicativo si sviluppa attorno ai dispositivi delle API e delle comunicazioni IPC per poter erogare i servizi attraverso l’impiego delle proprie varie componenti. Ora immaginiamo di avere una porzione di codice software che richiama un servizio invocandolo tramite interfaccia API di tipo REST. Per elaborare la richiesta il codice deve conoscere le coordinate di rete, indirizzo IP e porta, del servizio invocato. La dinamicità delle nuove architetture applicative, basate sul modello cloud a microservizi applicativi, rende la soluzione dei compiti di localizzazione decisamente complessa. Si osservi lo schema seguente per avere un’idea delle logiche da trattare.

modello cloud a microservizi applicativi

Ove non si desideri lasciare l’onere della gestione di localizzazione ed indirizzamento al software del client, si impiegano tecniche di tipo server-side discovery.

load balancer

Come indicato nella precedente immagine, il client invia la richiesta attraverso un load balancer, che interroga il database di registro dei servizi, quindi instrada le richieste in modo appropriato verso i servizi. Un esempio di meccanismo che opera in questi termini in ambiente cloud ce lo fornisce il servizio Elastic Load Balancer di AWS, sia per il bilanciamento del traffico proveniente attraverso Internet che all’interno del Virtual Private Cloud – VPC.

NGINX è un altro esempio di tecnologia applicabile in presenza di architetture basate su microservizi. La sua programmabilità automatizzata di configurazione permette di acquisire le impostazioni rispetto alla dinamicità di attivazione dei servizi presenti nell’infrastruttura applicativa ed è in grado di integrarsi con i sistemi di networking service based, come Consul per la gestione dinamica delle identità dei servizi, permettendo scalabilità degli ambienti di elaborazione ben più difficile da raggiungere con dispositivi che operano con regole basate sull’indirizzamento, come nel caso di load balancer o firewall tradizionali.

I nuovi modelli di architettura di rete

I nuovi modelli di architettura di rete

I nuovi modelli di architettura di rete a supporto dei nuovi ambienti applicativi includono elementi in grado di fornire i servizi necessari al supporto di nuove dinamiche di comunicazione. Service fabric adattabili, software load balancer distribuiti possono essere gestiti come una singola entità, come si è descritto a proposito dell’esempio basato su Cisco ACI; in particolare vista la necessità di raggiungere elevati livelli di programmabilità ed automazione in relazione alla gestione delle informazioni in tempo reale di cui i dispositivi controller dell’infrastruttura sono investiti, circa gli aspetti del funzionamento delle applicazioni, della sicurezza e degli utilizzatori. Le funzionalità di proxy fanno da connettore per ogni interazione tra gli elementi dell’architettura, sia tra i container in un server o quelli che girano attraverso più server, abbinando i nomi dei servizi ai loro indirizzi virtuali e distribuendo il traffico attraverso i vari elementi di destinazione che compongono i microservizi. La molteplicità di elementi che costituisce l’ambiente applicativo determina indispensabilità dell’operazione di service discovery per connettersi e acquisire informazioni da specifici microservizi, così come delle operazioni di load balancing per il traffico nord-sud e in particolare l’intenso traffico est-ovest.

Non solo la connettività deve essere garantita, ma occorre garantire la visibilità delle interazioni per assicurare il monitoraggio adeguato del traffico applicativo e delle prestazioni, così da poter diagnosticare i problemi.

In ultima analisi, chi opera nell’ambito delle architetture IT (ingegneri o architetti di rete, sistemisti e amministratori di sistemi di load balancing) deve attrezzarsi in termini di strumenti e competenze per far fronte alle moderne esigenze delle applicazioni sviluppate secondo i modelli dei microservizi. Intercettando correttamente le esigenze dei nuovi modelli di traffico e valutando le opzioni della loro gestione, si può creare l’architettura più adatta a supporto delle nuove esigenze di sviluppo dei servizi e delle applicazioni elevando il grado di sicurezza e prestazione fornito agli utilizzatori di tali servizi, senza soluzione di continuità, indipendentemente dalle direzioni dei flussi del traffico generato.

leggi la prima parte