Les microservices ne sont pas un concept totalement nouveau. Ils reprennent les principes fondateurs des architectures orientées services : les fonctions d’une application sont exposées via une API pour permettre facilement la réutilisation. Mais l’architecture microservices va encore au-delà en prônant plus d’autonomie et plus d’isolation pour les composants portant ces services. 

Dans cet article, Laurent Broudoux, Solution Architect chez Red Hat, nous détaille l’apport des microservices pour le développement et la modernisation des applications.

Simplifier le processus de développement

La nature même des microservices permet de s’orienter vers des composants d’une granularité plus fine, définis pour des fonctionnalités précises, ce qui autorise leur déploiement de façon autonome et rapide.

Si on évoque leur apport au processus de développement, on peut citer en premier lieu la flexibilité : il est plus facile de livrer rapidement de nouvelles fonctions dans un petit composant autonome que dans un système monolithique. Il sera également plus simple de le faire évoluer. Pour Laurent Broudoux : « L’impact du déploiement d’un microservice sur le reste du Système est minimisé car les fonctionnalités apportées sont facilement localisables. Ceci améliore grandement l’évolutivité et l’accessibilité, avec une meilleure réutilisation de ces fonctionnalités. ».

En contrepartie de leur autonomie, chaque composant d’une architecture microservices se doit d’être hautement résilient, car ils ne doivent en aucun cas souffrir d’un défaut éventuel d’un autre service. L’adoption des microservices incite alors les architectes à revoir la conception haute-disponibilité des applications en les pensant “designed for failure”, augmentant ainsi leur robustesse.

On peut enfin évoquer la diversité technologique : le système n’est pas restreint à un langage  unique. Ceci facilite l’intégration de nouveaux développeurs en rendant ces nouvelles applications beaucoup plus accessibles. Ces derniers sont ainsi en mesure de choisir les technologies qui leur semblent les plus adaptées aux problèmes à résoudre. En définitive : « Les microservices sont véritablement polyglottes, et rendent possibles tous types d’expérimentations. Ils favorisent l’introduction contrôlée d’innovations. » ajoute Laurent Broudoux.

Pour en savoir plus sur ces aspects : Quels sont les avantages d'une architecture de
microservices ?

Les microservices, vecteur d'innovation et d’agilité

Un impact sur toute l’organisation

Au-delà du quotidien des développeurs, les microservices ont un impact sur le quotidien de toute l’organisation. Ils ont une influence sur le travail des architectes et des concepteurs en permettant d’impulser de nouvelles pratiques de design des applications.

Si la question de la taille optimale pour un microservice revient souvent dans les conversations, on ne peut pas y apporter de réponse définitive, tout dépend du contexte de l'entreprise et de ses ambitions de modernisation.

Signe de la force de cette influence, on assiste à l’émergence de nouvelles pratiques. Laurent Broudoux évoque ainsi  « le Domain Driven Design, qui permet d’identifier les grands domaines fonctionnels d’une application ou même du Système d’Information. Pour chacun de ces domaines on peut ainsi déterminer le niveau d’agilité souhaité, et donc le niveau de granularité des composants à produire. ».

Prenant en exemple le secteur de la banque et de l’assurance qu’il connaît bien, Laurent Broudoux évoque la souplesse apportée par les microservices : « en matière de relation client, le besoin d’agilité est très présent, du fait de la multiplicité des nouveaux usages autour du numérique. En revanche si on considère le cœur de métier de ce secteur, beaucoup plus soumis à la réglementation, la stabilité est de mise et le besoin d’agilité bien moindre. »

De nouvelles pratiques pour gérer cette évolution

Quand on a recours aux microservices, la croissance du nombre de composants peut introduire de la complexité pour les développeurs et les opérations.

Pour éviter de tomber dans cet écueil, il existe des solutions : « l’automatisation et surtout la conteneurisation permettent de mettre ces services à l’échelle. La conception d’un composant et l’intégration sont ainsi continues et le contrôle qualité automatisé», ajoute Laurent Broudoux.

L’architecture de microservices est hautement distribuée, ce qui implique nécessairement des liens réseaux supplémentaires, et une distribution des composants dans le datacenter. Ceci nécessite de nouvelles pratiques de gestion du routage réseau ou de monitoring.  Laurent Broudoux souligne ainsi que «  le debugging de bout en bout est indispensable. »

Pour assurer leur bon fonctionnement, il est nécessaire de disposer d’une plateforme sous jacente. Laurent Broudoux insiste sur le fait qu’il est important de : « trouver l’équilibre entre l’autonomie et l’innovation d’un côté, et la simplicité de gouvernance au long cours de l’autre
côté. »

Dans cette optique, Red Hat accompagne les clients au travers d’Open Innovation Labs qui permettent de tester des nouvelles méthodologies et technologies et de réfléchir aux processus à mettre en place pour réussir leur intégration.

Avec quels outils aborder les microservices ?

L’adoption des conteneurs étant une étape obligatoire pour le passage à l’échelle des microservices, la plateforme d’orchestration de conteneurs devient rapidement indispensable. Elle permet de gérer de façon uniforme ces microservices potentiellement hétérogènes sur le plan technique. Red Hat propose notamment la plateforme OpenShift qui est une distribution de Kubernetes pensée pour faciliter l’expérience de développement et la transition du code au conteneur pour les microservices.

Laurent Broudoux précise par ailleurs qu’ « OpenShift apporte également des fonctionnalités pour gérer les applications hyper distribuées, comme des services d’infrastructure étendue, permettant de monitorer automatiquement les nouveaux microservices au moment de leur déploiement ».

La robustesse des communications réseau s’en trouve aussi améliorée, grâce au « Service mesh » qui permet de définir des règles de communication réseau très fines. Il peut s’agir de règles de sécurité apportant de la micro-segmentation, ou de routage pour tester plusieurs versions d’un même service en parallèle. « On peut aussi évoquer le tracing distribué, qui permet de visualiser les interactions entre les microservices. » ajoute Laurent Broudoux. Il évoque également les Red Hat Runtimes qui offrent l’accès à  plusieurs langages et frameworks embarquant les best-practices en matière de microservices.

Dans les grandes organisations, les évolutions se font souvent de manière graduelle, il est donc nécessaire de composer avec l’existant. De nombreuses entreprises ont ainsi investi dans les architectures Java Enterprise ces dernières décennies, et souhaitent pouvoir capitaliser sur cette plateforme sans renoncer aux bénéfices apportés par les nouvelles architectures microservices. Laurent Broudoux explique que « c’est dans ce contexte que Red Hat a introduit fin 2019 un nouveau framework appelé Quarkus, qui offre une stack Java optimisée pour les microservices. Tout en proposant une expérience  très familière aux utilisateurs de Java, ce framework offre des temps de démarrage très rapides et une consommation de mémoire très faible par rapports aux applications Java traditionnelles. »

Microservices : la recette miracle ?

Les bénéfices sont tangibles, les impacts sur l’organisation clairement identifiés et l’on dispose d’outils efficaces pour accompagner les nouvelles pratiques : qu’attendre de plus ?  Les microservices représentent effectivement le pinacle de l’agilité, mais ils matérialisent surtout l’étape ultime d’une transformation Cloud-native des processus et chaînes de fabrication logicielles. Cette transformation passe aussi par des étapes clés comme une réorganisation DevOps, la mise en place de l’intégration continue/déploiement continu ou l’automatisation. « Après la mise en place de ces fondamentaux, les microservices permettent d’accéder au niveau supérieur d’innovation et d’agilité du Système d'Information » conclut Laurent Broudoux.