Adoption des microservices : insights et enseignements de l’expérience

En profitant d’un webinaire, nous avons effectué un sondage auprès de nos clients pour savoir quel est selon eux le principal moteur de l’adoption des microservices.

L’agilité (définie ici comme la capacité à réagir rapidement aux changements de la demande de service ou des besoins fonctionnels) a récolté 50% des suffrages. Il semblerait que la souplesse qu’offre ce nouveau paradigme pour les déploiements de services applicatifs soit sa caractéristique la plus séduisante. Viennent ensuite la pérennité (capacité à remplacer un microservice sans impacter l’intégralité d’un service) et l’efficacité (ne faire évoluer que les ressources qui seront effectivement utilisées), toutes deux cités dans 25% des réponses. La question était posée sous forme de choix multiple.

L’efficacité (économies sur les dépenses opérationnelles) ou la pérennité (optimisation des dépenses d’immobilisation) restent des promesses importantes. Cependant, elles apparaissent secondaires face à celle d’augmenter la réactivité face aux demandes des clients dans un environnement industriel qui change parfois très vite.

Les recherches et tests effectués que nous avons effectué autour des microservices et notamment sur leur pertinence dans le cadre de solutions de communication en temps réel ont été riches d’enseignements techniques.

Complexité

Beaucoup de responsables informatiques semblent penser que l’adoption de microservices signifie nécessairement un surcroît de complexité. En réalité, cette complexité existe déjà. Elle est simplement présente au sein des applications dans une base de code monolithique. L’approche microservice, expose cette complexité mais permet en contrepartie d’en tirer de la valeur. La solution idéale consiste à déployer de manière à ce que les fonctions indépendantes s’organisent autant que possible de manière automatique et autonome. Par exemple, pour faciliter l’évolutivité, les fonctions doivent pouvoir rejoindre ou quitter les clusters automatiquement. En mettant en place des mécanismes d’actualisation et de diffusion, chaque microservice diffuse des informations sur son état à ses pairs et leur permet de se structurer.

Performance

En remplaçant les appels directs de fonctions par des appels d’API (Application Program Interface) on comprend mieux l’impact des microservices sur les performances. Au final tout se résume à déterminer le bon niveau de granularité des microservices. Pour les fonctions liées à la communication temps réel, il existe toujours un lien entre le choix du protocole et l’évolutivité, si bien que le niveau de granularité adapté à un scénario d’utilisation ne correspond pas nécessairement dans un autre cas.

Lorsque on évalue la performance d’une solution il est rarement possible de se faire une idée précise en s’appuyant uniquement sur la documentation technique et les aspects théoriques. Une phase de prototypage est toujours instructive et peu contredire des choix techniques pertinents sur le papier. Des problèmes silencieux à petite échelle peuvent apparaitre lorsqu’on passe à grande échelle.

Contrôle et automatisation

Les outils de contrôle du comportement sont d’une grande aide pour la gestion des microservices. Au fil de nos phases de test, il est devenu clair qu’il est plus simple de pouvoir contrôler le comportement des microservices au niveau applicatif plutôt que d’attendre de l’équipe opérationnelle qu’elle prédise le comportement de chaque élément.

Pour plus de simplification et de cohésion au niveau applicatif, l’automatisation apporte des bases solides. Nous avons décidé d’investir dans la découverte automatisée, l’auto organisation des composants et la distribution des données de configuration aux clusters. Sans ces investissement, l’administration des nombreux composants individuels des microservices se transforme invariablement en goulet d’étranglement pour la solution.

Malgré leur pouvoir de séduction et leur potentiel important en termes de gain en agilité, pérennité et efficacité, les microservices représentent une évolution importante dans une infrastructure. Cette évolution doit s’appuyer sur une expertise et un savoir-faire spécifique en fonction du type d’application migré vers une structure microservices.