Présentation de l’architecture en micro-services (Partie 2)

Comme vu dans la 1ère partie l’architecture en micro-services nous apporte bon nombre d’avantages.

Cependant, leurs mises en place et leurs nombres créent une nouvelle forme de complexité :

  • L’analyse fonctionnelle ainsi que la conception vont demander un effort supplémentaire par rapport à une architecture classique afin de pouvoir créer des unités fonctionnelles fortement cohésives et autonomes.
  • La gestion opérationnelle en termes de déploiement, tests et monitoring est plus complexe.
  • Il y a des contraintes techniques à prendre en compte.

 

Intégration des micro-services

De nombreuses questions peuvent se soulever avant de souhaiter mettre en place une architecture micro-services, comme de savoir si la communication entre deux micro-services est synchrone ou asynchrone, comment gérer les cas d’exception technique, …

Toutes ces questions sont légitimes et les choix que vous ferez dépendront grandement des besoins spécifiques pour votre organisation.

 

Echanges Synchrone et Asynchrone

Évidemment, il est tout à fait possible de mettre en place une communication synchrone entre les micro-services. Mais il vous sera plus recommandé d’utiliser une communication asynchrone afin d’augmenter la scalabilité.
De plus, vous risquez de rencontrer des problématiques lors d’une communication synchrone dès lors que des micro-services invoquent récursivement un grand nombre de « sous-micro-services ».

 

La gestion des versions

L’architecture en micro-services doit être capable de gérer les évolutions de versions. Un client qui évolue doit toujours pouvoir être compatible avec un serveur qui, lui, n’a pas évolué. Le sens inverse est aussi vrai, un serveur doit pouvoir évoluer et continuer à répondre aux requêtes d’un client qui, lui, n’a pas évolué.

 

Tests des micro-services

Au vu du nombre de services déployés dans une architecture micro-services (qui peut vite devenir très important), il risque d’être difficile de pouvoir recréer un environnement de production qui soit complet (incluant le micro-service à tester, les micro-services liés ainsi que les différentes sources de données liées).
Il est donc difficile d’être sûr que les tests couvrent toutes les fonctionnalités de l’environnement de production.
Un effort de monitoring visant à déceler rapidement des anomalies de production est donc fortement recommandé.

 

Monitoring des micro-services

Le monitoring des micro-services va permettre de surveiller le bon fonctionnement des appels entre les micro-services mais aussi d’avoir une cartographie dynamique de leur répartition sur l’infrastructure ainsi que les versions de services déployés.