Archives par mot-clé : microservice

Les microservices expliqués simplement

Pour donner une définition des microservices, on peut dire que c’est une approche d’architecture logicielle où une application est décomposée en plusieurs petits services. Et ces services sont souvent spécialisés dans une seule tâche.

A noter que quand on parle de service, il faut comprendre service métier, c’est à dire un groupe de services techniques qui fournissent une fonctionnalité avec un sens métier.

Si on prend l’exemple d’un site de vente en ligne, on aura des microservices par exemple pour le panier, la page d’accueil, l’historique, l’inventaire, etc

Ensuite, l’architecture microservices a été inventée pour répondre aux problèmes rencontrées par les applications dites monolithes.

Une application monolithe est une application qui a pour ambition de traiter toutes les demandes possibles et répondre à un maximum de cas d’usage. Sauf qu’avec le temps, les applications ont tendance à grossir en intégrant toujours plus de nouvelles fonctionnalités mais en supprimant rarement les anciennes fonctionnalités, même lorsqu’elles deviennent inutiles ou obsolètes. Et avec le temps les différentes briques développent des interdépendances entre elles. Et avec ça, la quantité de code augmente et ce code devient de plus en plus complexe.

Il devient alors impossible d’avoir en tête un modèle global du projet.
On se retrouve devant une application difficile à maîtriser et à faire évoluer.

Enfin, plus un projet est gros, plus il est critique pour l’entreprise, et moins on va prendre de risques pour tester des nouveautés, on va donc préférer la stabilité à l’innovation

La réponse de l’architecture microservices à ce problème est simple :  découper l’application en différents modules fonctionnels, en microservices.

Chaque microservice exécute une partie spécifique et unique de l’application. Et ces services peuvent être accédés par le client via l’API du microservice correspondant. Le but de l’architecture microservices est de redonner un maximum d’agilité et d’évolutivité à une application.

Côté technique l’architecture microservices est très souvent couplé à la technologie des conteneurs, et notamment Docker.

Quant aux conteneurs, Le principe est d’avoir un conteneur par unité de microservices. Ainsi, Chaque microservice a son propre environnement d’exécution pour héberger son code. Avec les conteneurs, Il est donc très facile en fonction du besoin d’adapter le nombre de microservices, à la hausse comme à la baisse.

SI un service est plus demandé lors d’un pic de charge, il suffit de créer plus de conteneurs fournissant ce microservice. A contrario, quand la demande de ce service diminue, il suffit de ne garder que le minimum de microservices pour couvrir la demande. Dans l’architecture microservices, il suffit juste d’adapter le nombre de ce microservice au besoin alors que dans les application monolithe, il aurait fallu modifier la totalité de l’application à cause des interdépendance.

Et c’est en étant couplé avec l’utilisation des conteneurs que Chaque microservice devient autonome vis à vis des autres microservices
Un microservice peut être alors modifiée, supprimée ou déployée sans impacter les autres microservices.

Ce qui veut dire qu’avec une application découpée en microservices, il est plus simple de cibler les différentes parties impactées d’une application lors d’une évolution. Ce qui facilite la modification des parties concernées sans risque pour le reste de l’application non impliqué.

Du coup, les mises à jour et nouvelles fonctionnalités peuvent être déployées beaucoup plus facilement et rapidement, rendant le déploiement continu possible.

Concernant l’organisation humaine, la taille des projets est limitée à une équipe de quelques personnes. Chaque équipe est autonome et va donc gérer son organisation et sa base de code.
Une équipe est alors libre des choix techniques en fonction de leurs besoins propres.

Terminons par des points d’attention à propos des microservices
Et tout ce que l’on vient de voir doit permettre aux entreprise d’avoir un atout très très important et c’est d’ailleurs ça qui va pousser à l’adoption des microservices.

Et cette carotte c’est le fait d’avoir un time to market plus rapide. Le time to market c’est le délai de mise sur le marché.cad le temps qu’il y a entre la naissance d’une idée jusqu’à son lancement sur le marché. Aujourd’hui un time to market rapide est devenu un facteur stratégique majeur, il permet à une entreprise de prendre un avantage concurrentiel décisif sur ces concurrents en intégrant la toute dernière innovation dans ses produits ou d’adapter ses produits aux nouveaux besoins du marché.

Comme on l’a vu tout à l’heure les microservices permettent justement de déployer plus rapidement et facilement. Ce qui veut dire être capable de s’adapter plus rapidement à la demande du marché et aux nouveautés.

Par contre et il est important de souligner :

Plus les itérations sont nombreuses et rapides (notamment dans le cadre d’un déploiement continu), plus cela va demander cela va demander aux équipes de se synchroniser rapidement.
Cela va demander une organisation mature pour la communication et coordination entre les équipes et une synchronisation de leurs priorités et objectifs pour qu’ils soient alignés avec les enjeux business