Les microservices : est-ce réaliste ? Quelles solutions et quelles compétences pour se lancer ?

Comme pour toute technologie de pointe, l'architecture de microservices pose le problème de la maturité des solutions disponibles sur le marché et du besoin en compétences sur ces solutions par définition nouvelles. Un élément clé dans la fiabilité et la performance que l'on peut attendre d'une telle architecture réside dans la gestion des échanges de données entre microservices. Il est possible d'opter pour des API REST ou de privilégier un bus de messages. Pour Romain Niveau de Xebia, si les API REST semblent plus faciles à mettre en place lorsque l’on vient d’un projet monolithique, le bus de messages est à favoriser. "Il est courant d’utiliser les deux moyens de communication au sein du même projet, mais le bus de message présente l'avantage de découpler fortement les services entre eux. Il favorise la résilience et simplifie la mise en place d’un système asynchrone", explique l'expert.

Les bus de messages ActiveMQ et RabbitMQ très utilisés

Romain Niveau est consultant chez Xebia.  © Xebia

D'après Romain Niveau, une bonne connaissance des bus de messages est donc souhaitable pour se lancer dans un tel chantier. Il ajoute "Bien connaître le métier du projet reste, aussi, primordial afin d’être capable de définir correctement les services qui doivent être mis en place." En termes de solutions, l'expert évoque plusieurs pistes : "ActiveMQ et RabbitMQ sont des bus de messages communément utilisés. Ces deux outils intègrent un flow control permettant d’éviter la surcharge des services. RabbiMQ bridera ponctuellement ses performances pour maintenir un débit stable dans le système. On peux parler également du bus Kafka pour ses performances mais son fonctionnement par journalisation des messages en fait un outil plus complexe à prendre en main."

Côté base de données, l'architecture elle-même n'impose pas tel ou tel type de SGBD. Au contraire, elle permet d'offrir une grande souplesse dans le choix de la solution et on peut fort bien panacher base relationnelle classique avec diverses solutions NoSQL. "Chaque service va pouvoir utiliser la base de données qui lui est la plus utile, que ce soit une base relationnelle Oracle ou une base orientée document comme MongoDB. Toutefois, comme pour les langages, il faut éviter de multiplier les différents types de base au risque d'une maintenance trop complexe."

Le microservice aime les containers, aime le cloud

En outre, le cloud semble s'imposer comme la plateforme d'exécution idéale pour une application bâtie sous forme de microservices. "La simplicité pour provisionner des machines, la scalabilité quasiment illimitée et les outils de suivi proposés par les clouds comme AWS facilitent la mise en place de ces architectures", confirme Romain Niveau. Machines virtuelles dans le cloud mais aussi Docker vont permettre au DSI de standardiser les déploiements. "On ne livre plus une application mais une image contenant l’application et son environnement d’exécution complet", résume l'expert.

Se faire accompagner d'experts techniques pour choisir les briques logicielles nécessaires à la mise en place d'une telle architecture est important, mais aussi par des experts métier afin d'effectuer le bon découpage de l'application en microservices. "Pouvoir se faire accompagner par une personne connaissant bien le fonctionnel est un plus réellement important pour bien démarrer un projet de microservices et éviter des redécoupages de services coûteux dans le futur du projet" conclut Romain Niveau.