Modelli di comunicazione cloud nativi

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.

App .NET native del cloud per l'anteprima della copertina di eBook di Azure.

Nell'ambito della creazione di un sistema nativo del cloud, la comunicazione diventa una decisione di progettazione significativa. In che modo un'applicazione client front-end comunica con un microservizio back-end? In che modo i microservizi back-end comunicano tra loro? Quali sono i principi, i modelli e le procedure consigliate da considerare nell'ambito dell'implementazione della comunicazione nelle applicazioni native del cloud?

Considerazioni sulla comunicazione

In un'applicazione monolitica, la comunicazione è semplice e chiara. I moduli di codice vengono eseguiti insieme nello stesso spazio eseguibile (processo) in un server. Questo approccio può comportare vantaggi in termini di prestazioni a mano a mano che tutti gli elementi vengono eseguiti insieme nella memoria condivisa, ma presentano codice strettamente accoppiato che diventa difficile da gestire, evolvere e ridimensionare.

I sistemi nativi del cloud implementano un'architettura basata su microservizi con molti microservizi di piccole dimensioni indipendenti. Ogni microservizio viene eseguito in un processo separato e in genere all'interno di un contenitore distribuito in un cluster.

Un cluster raggruppa un pool di macchine virtuali per formare un ambiente a disponibilità elevata. Vengono gestiti con uno strumento di orchestrazione, responsabile della distribuzione e della gestione dei microservizi in contenitori. La figura 4-1 mostra un cluster Kubernetes distribuito nel cloud di Azure con i servizi Azure Kubernetes completamente gestiti.

Un cluster Kubernetes in Azure

Figura 4-1. Un cluster Kubernetes in Azure

Nel cluster, i microservizi comunicano tra loro tramite API e tecnologie di messaggistica.

Sebbene forniscano molti vantaggi, i microservizi non sono esenti dai problemi. Le chiamate al metodo In-Process locali tra i componenti ora vengono sostituite con le chiamate di rete. Ogni microservizio deve comunicare tramite un protocollo di rete, che aggiunge complessità al sistema:

  • Congestione della rete, latenza ed errori temporanei rappresentano la norma.
  • La resilienza, ovvero la ripetizione di tentativi di richieste non riuscite, è essenziale.
  • Alcune chiamate devono essere idempotenti per mantenere lo stato coerente.
  • Ogni microservizio deve autenticare e autorizzare le chiamate.
  • Ogni messaggio deve essere serializzato e quindi deserializzato,un'operazione che può essere costosa.
  • La crittografia/decrittografia dei messaggi diventa importante.

Il libro Microservizi .NET: Architettura per le applicazioni .NET incluse in contenitori, disponibile gratuitamente da Microsoft, offre una copertura approfondita dei modelli di comunicazione per le applicazioni di microservizi. In questo capitolo viene fornita una panoramica generale di questi modelli insieme alle opzioni di implementazione disponibili nel cloud di Azure.

In questo capitolo si affronterà innanzitutto la comunicazione tra le applicazioni front-end e i microservizi back-end. Quindi si esaminerà in che modo i microservizi back-end comunicano tra loro. Esploreremo la tecnologia di comunicazione gRPC. Infine, verranno esaminati nuovi modelli di comunicazione innovativi usando la tecnologia mesh di servizi. Si vedrà anche in che modo il cloud di Azure offre diversi tipi di servizi supporto per supportare la comunicazione nativa del cloud.