Au-delà de la simple problématique de faire transiter des objets et des actions entre deux services, la communication interservices revêt une importance toute particulière dans ce type d’architecture. En effet, c’est d’elle que va dépendre l’agilité, l’évolutivité et la robustesse de la solution développée. Pour cela, il est indispensable de privilégier un axe orienté événements.
Microservices, plutôt synchrones ou asynchrones ?
Les échanges entre Microservices fonctionnent comme toute communication entre différents services et applications. En effet, le choix des armes est à la fois vaste et plutôt bien documenté. Je vous invite pour cela à consulter la liste des patterns d’intégration d’entreprise, ou EIP (voir https://www.enterpriseintegrationpatterns.com/).
En laissant de côté les solutions old school (telles que les transferts de fichiers ou les partages de base de données) qui ne correspondent pas à une architecture Microservices à l’état de l’art (lire à ce propos le livre blanc Nexworld : Les Microservices, c’est quoi ?), il nous reste les patterns classiques d’échange :
- Appel synchrone point à point
- Diffusion de messages asynchrones point à point
- Diffusion d’événements