Comunicazione dei microservizi
Una volta che i microservizi sono stati creati bisogna decidere in che modo farli comunicare tra loro.
Data l’incosapevolezza reciproca dei microservizi nonostante la loro necessità di cooperare per riuscire a far funzionare correttamente il software è necessario che esista una modalità di comunicazione agnostica (che quindi sia independente dal linguaggio di programmazione utilizzato).
Questo ci permette di sviluppare la metodologia di comunicazione anche successivamente alla creazione delle funzionalità dei microservizi
Tipi di comunicazione
Esistono due tipi di comunicazione possibili tra i microservizi:
Sincrona
La comunicazione sincrona è quella in cui il chiamante attende la risposta del chiamato.
Un esempio di protocollo sincrono è l'HTTP dove il chiamante invia una richiesta e attende la risposta.
Un caso d'uso per questo tipo di comunicazione è un eventuale login, in cui è necessario attendere che il chiamato (il server di autenticazione) risponda con un token di autenticazione.
Esempio:

- Il client invia una richiesta al backend contattando l'API gateway
- l'API gateway riceve la richiesta e la inoltra al microservizio corretto
- Il microservizio elabora la richiesta e risponde all'API gateway
- L'API gateway inoltra la risposta al client
Asincrona
La comuncicazione asincrona è quella in cui il chiamante non attende la risposta del chiamato. Un esempio di protocollo asincrono è l'AMQP dove il chiamante invia una richiesta e non attende la risposta.
Questo tipo di comunicazione è utile per eseguire operazioni che non richiedono una risposta immediata, come ad esempio l'invio di una mail. Inoltre è la modalità che corrisponde e segue maggiormente le linee guida dei microservizi data la migliore scalabilità e la maggiore indipendenza dei servizi.
Esempio:

- Il client invia una richiesta al backend contattando l'API gateway
- l'API gateway riceve la richiesta e la inoltra al microservizio corretto
- Il microservizio elabora la richiesta, risponde all'API gateway e invia un messaggio al message broker (diventando il
producerdel messaggio) - Il message broker invia il messaggio ai microservizi che si sono registrati come
consumerdel messaggio mentre l'API gateway risponde al client