Condividi tramite


Infrastruttura di comunicazione con mesh di servizi

Suggerimento

Questo contenuto è un estratto dell'eBook, Progettazione di applicazioni .NET native del cloud per Azure, disponibile in .NET Docs o come PDF scaricabile gratuitamente che può essere letto offline.

Cloud Native .NET apps for Azure eBook cover thumbnail.

In questo capitolo sono state esaminate le sfide della comunicazione di microservizi. Abbiamo detto che i team di sviluppo devono essere sensibili al modo in cui i servizi back-end comunicano tra loro. Idealmente, meno i servizi comunicano tra loro, meglio è. Tuttavia, l'elusione non è sempre possibile perché i servizi back-end spesso si basano l'uno sull'altro per completare le operazioni.

Sono stati esaminati diversi approcci per implementare la comunicazione HTTP sincrona e la messaggistica asincrona. In ognuno dei casi, lo sviluppatore è gravato dall’implementazione del codice di comunicazione. Il codice di comunicazione è complesso e richiede molto tempo. Le decisioni non corrette possono causare problemi di prestazioni significativi.

Un approccio più moderno alle comunicazioni di microservizio si concentra su una tecnologia nuova e in rapida evoluzione intitolata Service Mesh. Un mesh di servizi è un livello di infrastruttura configurabile con funzionalità predefinite per gestire la comunicazione da servizio a servizio, la resilienza e molte problematiche trasversali. Sposta la responsabilità di questi problemi dai microservizi e nel livello mesh del servizio. La comunicazione viene astratta dai microservizi.

Un componente chiave di una mesh di servizi è un proxy. In un'applicazione nativa del cloud, un'istanza di un proxy viene in genere inserita in un percorso condiviso con ogni microservizio. Mentre vengono eseguiti in processi separati, i due sono strettamente collegati e condividono lo stesso ciclo di vita. Questo modello, noto come modello Sidecar, è illustrato nella figura 4-24.

Service mesh with a side car

Figura 4-24. Mesh di servizio con un side car

Si noti nella figura precedente come i messaggi vengono intercettati da un proxy eseguito insieme a ogni microservizio. Ogni proxy può essere configurato con regole di traffico specifiche del microservizio. Comprende i messaggi e può instradarli tra i servizi e il mondo esterno.

Oltre alla gestione della comunicazione da servizio a servizio, Service Mesh offre il supporto per l'individuazione dei servizi e il bilanciamento del carico.

Una volta configurata, una mesh di servizi è altamente funzionale. La mesh recupera un pool corrispondente di istanze da un endpoint di individuazione del servizio. Invia una richiesta a un'istanza del servizio specifica, registrando la latenza e il tipo di risposta del risultato. Sceglie l'istanza più probabile che restituisca una risposta rapida in base a diversi fattori, inclusa la latenza osservata per le richieste recenti.

Una mesh di servizi gestisce il traffico, la comunicazione e le problematiche di rete a livello di applicazione. Comprende messaggi e richieste. Una mesh di servizi si integra in genere con un agente di orchestrazione del contenitore. Kubernetes supporta un'architettura estendibile in cui è possibile aggiungere una mesh di servizi.

Nel capitolo 6 vengono approfondite le tecnologie di Service Mesh, tra cui una discussione sull'architettura e sulle implementazioni open source disponibili.

Riepilogo

In questo capitolo sono stati illustrati i modelli di comunicazione nativi del cloud. Si è iniziato esaminando il modo in cui i client front-end comunicano con i microservizi back-end. Nel corso della procedura sono stati illustrate le piattaforme del gateway API e la comunicazione in tempo reale. Si è quindi esaminato il modo in cui i microservizi comunicano con altri servizi back-end. Sono stati esaminati sia la comunicazione HTTP sincrona che la messaggistica asincrona tra i servizi. Abbiamo trattato gRPC, una tecnologia futura nel mondo nativo del cloud. Infine, è stata introdotta una tecnologia nuova e in rapida evoluzione intitolata Service Mesh che consente di semplificare la comunicazione di microservizi.

Particolare attenzione è stata rivolta ai servizi di Azure gestiti che consentono di implementare la comunicazione nei sistemi nativi del cloud:

Passiamo quindi ai dati distribuiti nei sistemi nativi del cloud e ai vantaggi e alle sfide che presenta.

Riferimenti