I servizi comunicano sia sincroni (request/response tramite REST o gRPC) che asincroni (messaggi/eventi attraverso un broker come Kafka o RabbitMQ).
Sincroni (request/response)
Chi chiama attende una risposta. Semplice e intuitivo, ma accoppia la disponibilità — se il servizio chiamato è giù, chi chiama è colpito.
GET /orders/42 HTTP/1.1
Host: orders-service
Accept: application/json
Asincroni (messaggi/eventi)
Chi invia pubblica un messaggio e va avanti; i consumer lo elaborano più tardi. Questo disaccoppia i servizi nel tempo.
