Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Meccanismi di comunicazione
Nel paradigma dei microservizi, diversi componenti di un'applicazione devono comunicare tramite una rete. Gli approcci comuni per questo includono la messaggistica basata su REST, GraphQL, GRPC e asincrona.
Comunicazione basata su REST
Il protocollo HTTP/S, ampiamente utilizzato per la comunicazione sincrona tra microservizi, spesso funziona tramite. RESTful APIs API Gateway offre un modo semplificato per creare un'API che funga da punto di accesso centralizzato ai servizi di backend, gestendo attività come la gestione del traffico, l'autorizzazione, il monitoraggio e il controllo delle versioni.
Comunicazione basata su GraphQL
Allo stesso modo, GraphQL è un metodo molto diffuso per la comunicazione sincrona, che utilizza gli stessi protocolli di REST ma limita l'esposizione a un singolo endpoint. Con AWS AppSync, puoi creare e pubblicare applicazioni GraphQL che interagiscono direttamente con AWS servizi e datastore o incorporare funzioni Lambda per la logica aziendale.
Comunicazione basata su gRPC
gRPC è un protocollo di comunicazione RPC sincrono, leggero, ad alte prestazioni e open source. gRPC migliora i protocolli sottostanti utilizzando HTTP/2 e abilitando più funzionalità come la compressione e la prioritizzazione dei flussi. Utilizza il Protobuf Interface Definition Language (IDL) che è codificato in modo binario e quindi sfrutta il framing binario HTTP/2.
Messaggistica asincrona e trasmissione di eventi
La messaggistica asincrona consente ai servizi di comunicare inviando e ricevendo messaggi tramite una coda. Ciò consente ai servizi di rimanere strettamente collegati e di promuovere la scoperta dei servizi.
La messaggistica può essere definita nei seguenti tre tipi:
-
Code di messaggi: una coda di messaggi funge da buffer che separa mittenti (produttori) e destinatari (consumatori) dei messaggi. I produttori inseriscono i messaggi nella coda e i consumatori li rimuovono dalla coda e li elaborano. Questo modello è utile per la comunicazione asincrona, il livellamento del carico e la gestione di picchi di traffico.
-
Publish-Subscribe: nel pattern publish-subscribe, un messaggio viene pubblicato su un argomento e più abbonati interessati ricevono il messaggio. Questo modello consente di trasmettere eventi o messaggi a più consumatori in modo asincrono.
-
Messaggistica basata sugli eventi: la messaggistica basata sugli eventi implica l'acquisizione e la reazione agli eventi che si verificano nel sistema. Gli eventi vengono pubblicati su un broker di messaggi e i servizi interessati sottoscrivono tipi di eventi specifici. Questo modello consente l'accoppiamento libero e consente ai servizi di reagire agli eventi senza dipendenze dirette.
Per implementare ciascuno di questi tipi di messaggi, AWS offre diversi servizi gestiti come Amazon SQS, Amazon SNS, Amazon, EventBridge Amazon MQ e Amazon MSK. Questi servizi hanno caratteristiche uniche adattate a esigenze specifiche:
-
Amazon Simple Queue Service (Amazon SQS) e Amazon Simple Notification Service (Amazon SNS): come illustrato nella Figura 8, questi due servizi si completano a vicenda, con Amazon SQS che fornisce uno spazio per l'archiviazione dei messaggi e Amazon SNS che consente la consegna dei messaggi a più abbonati. Sono efficaci quando lo stesso messaggio deve essere recapitato a più destinazioni.
Figura 8: Schema del bus dei messaggi attivo AWS
-
Amazon EventBridge: un servizio serverless che utilizza gli eventi per connettere tra loro i componenti delle applicazioni, semplificando la creazione di applicazioni scalabili basate sugli eventi. Usalo per indirizzare gli eventi da fonti come applicazioni, AWS servizi e software di terze parti sviluppati internamente alle applicazioni consumer dell'organizzazione. EventBridge offre un modo semplice e coerente per importare, filtrare, trasformare e distribuire eventi in modo da poter creare nuove applicazioni rapidamente. EventBridge gli event bus sono ideali per il many-to-many routing degli eventi tra servizi basati sugli eventi.
-
Amazon MQ: una buona scelta se disponi di un sistema di messaggistica preesistente che utilizza protocolli standard come JMS, AMQP o simili. Questo servizio gestito sostituisce il sistema senza interrompere le operazioni.
-
Amazon MSK (Managed Kafka): un sistema di messaggistica per l'archiviazione e la lettura dei messaggi, utile nei casi in cui i messaggi devono essere elaborati più volte. Supporta anche lo streaming di messaggi in tempo reale.
-
Amazon Kinesis: elaborazione e analisi in tempo reale di dati in streaming. Ciò consente lo sviluppo di applicazioni in tempo reale e offre una perfetta integrazione con l'ecosistema. AWS
Ricorda che il servizio migliore per te dipende dalle tue esigenze specifiche, quindi è importante capire cosa offre ognuno di essi e in che modo si allinea alle tue esigenze.
Orchestrazione e gestione dello stato
L'orchestrazione dei microservizi si riferisce a un approccio centralizzato, in cui un componente centrale, noto come orchestratore, è responsabile della gestione e del coordinamento delle interazioni tra i microservizi. L'orchestrazione dei flussi di lavoro su più microservizi può essere difficile. L'incorporazione del codice di orchestrazione direttamente nei servizi è sconsigliata, in quanto introduce un accoppiamento più stretto e ostacola la sostituzione dei singoli servizi.
Step Functions fornisce un motore di workflow per gestire le complessità di orchestrazione dei servizi, come la gestione degli errori e la serializzazione. Ciò consente di scalare e modificare rapidamente le applicazioni senza aggiungere codice di coordinamento. Step Functions fa parte della piattaforma AWS serverless e supporta funzioni Lambda, Amazon EC2, Amazon EKS, Amazon ECS SageMaker AWS Glue, AI e altro ancora.

Figura 9: Un esempio di flusso di lavoro di microservizi con passaggi paralleli e sequenziali richiamati da AWS Step Functions
Amazon Managed Workflows for Apache Airflow (