Cette approche d’architectures microservices propose une application décomposée en plusieurs petits services indépendants, chacun pouvant être accessible avec les API RESTful. Ces services sont souvent spécialisés dans une seule tâche et permettent à chaque microservice de se concentrer sur une capacité métier unique. C’est-à-dire un groupe de services techniques qui fournissent une fonctionnalité avec un sens métier.
Si l’on prend l’exemple d’un ERP, on aura les fonctionnalités de planning, réservation, GED, devis, contrats…
UNE ARCHITECTURE MICROSERVICES POUR RESOUDRE LES PROBLEMES DES APPLICATIONS MONOLITHIQUES
L’architecture de Microservices a été créée pour résoudre les problèmes rencontrés par les applications dites monolithiques.
Une application monolithique est une application qui traite toutes les demandes possibles et répond à un maximum de cas d’usage. Mais avec le temps, ces applications deviennent de plus en plus volumineuses puisqu’elles intègrent de plus en plus de nouvelles fonctionnalités en gardant généralement les anciennes pourtant devenues obsolètes. Au fur et à mesure, les différentes briques développent des interdépendances entre elles et la quantité et complexité du code augmentent. Ce qui rend impossible la compréhension du modèle global du projet et la modification ou évolutivité de l’application.
Le problème, c’est que plus un projet est conséquent (comme la réalisation d’un ERP sur-mesure), moins l’entreprise prendra le risque de toucher à l’application pour tenter de l’améliorer. On privilégiera donc une application monolithique à une architecture microservices pour la stabilité au détriment de l’innovation.
Cependant, l’innovation est aujourd’hui un élément majeur dont une entreprise ne peut pas faire l’impasse. Pour résoudre à ce manque de flexibilité, l’architecture microservices à une réponse simple. Il faut découper l’application en différents modules fonctionnels que l’on appelle microservices. Chacun de ces microservices exécute une partie unique et spécifique de l’application. Ils peuvent alors être accéder par le client via l’API du microservice correspondant. L’objectif étant de favoriser l’agilité et l’évolutivité de l’application.
POURQUOI COUPLER LA TECHNOLOGIE DOCKER A UNE ARCHITECTURE DE MICROSERVICES ?
L’architecture microservicess est généralement couplée à Docker grâce à sa technologie de conteneurs. Le principe est d’avoir un conteneur par unité de microservices afin que chacun dispose de son propre environnement d’exécution pour héberger son code. Les conteneurs s’adaptent facilement aux nombres de microservices. Lorsqu’un service connait une hausse de charge, il peut être hébergé sur plusieurs conteneurs. Inversement, lorsque la demande diminue, on peut réduire au minimum le nombre de conteneurs. C’est ce qu’on appelle le principe du scaling.
Ce couplage avec l’utilisation des conteneurs permet aux microservices d’être autonome et modifiable sans impacter les autres si il y a une anomalie, contrairement à une application monolithique ou il aurait fallu modifier la totalité de l’application.
Avec une stratégie d’application découpée en microservices, le développement et la maintenance sont plus faciles et rendent le déploiement continu possible.
Pour les équipes de développement, la stratégie d’architectures microservices leur permet d’être autonomes sur leurs choix techniques et de gérer leur base de code en fonction de leur besoin.
COMMENT ACCOMPAGNER UNE ENTREPRISE DISPOSANT D’UN ERP A L’ARCHITECTURE ANCIENNE ?
Pour les entreprises disposant d’un ERP à l’architecture ancienne, une migration progressive vers l’architecture microservices est possible. On y va étape par étape en spécifiant les thèmes fonctionnels regroupés par lots.
Cette stratégie permet de prioriser les fonctionnalités les plus importantes en évitant de surcharger les équipes sur le projet. Elle permet également de valoriser le travail et la réussite de chaque migration. On garde une équipe motivée qui voit les fruits de son travail au fur et à mesure.
C’est également un moyen d’obtenir plus rapidement un outil partiellement fonctionnel et testable pendant la réalisation du projet.
Aujourd’hui de nombreuses entreprises telles que Google, Amazon, Facebook, Netflix…. ne jurent plus que par le style architectural des microservices. Pourquoi pas vous ?