La communication synchrone bloque l'appelant jusqu'à l'arrivée d'une réponse ; la communication asynchrone envoie un message et continue sans attendre. Chacune implique des compromis différents en matière de couplage, de latence et de résilience.
La communication synchrone bloque l'appelant jusqu'à l'arrivée d'une réponse ; la communication asynchrone envoie un message et continue sans attendre. Chacune implique des compromis différents en matière de couplage, de latence et de résilience.
| Aspect | Synchrone (REST/gRPC) | Asynchrone (messaging) |
|---|
| L'appelant attend-il ? | Oui | Non |
| Couplage temporel | Fort | Faible |
| Résilience aux pannes | Faible | Élevée (tampon du broker) |
| Cohérence | Immédiate | Éventuelle |
| Complexité | Plus faible | Plus élevée |
| Debuggabilité | Plus facile (linéaire) | Plus difficile (flux) |
SYNC: Caller ──request──▶ Service
Caller ◀─response── Service (blocked the whole time)
ASYNC: Caller ──message──▶ [ Queue ] ──▶ Service
Caller continues immediately; Service handles it later
Async masque les défaillances — un message perdu ou empoisonné peut casser silencieusement un flux de travail. Vous avez besoin de files de lettres mortes et de surveillance.
Le choix contrôle directement la façon dont les défaillances se propagent : les appels sync échouent rapidement et visiblement, les messages async découplent mais reportent les problèmes aux consommateurs.
Mélanger les deux correctement — sync à la limite, async pour les flux de travail — est une compétence fondamentale dans la construction de microservices résilients.