Les architectures microservices

19/04/2021 Staff LAB 5COM
Image
les architectures microservices
Les architectures microservices
Les architectures microservices

L’architecture microservices est en plein essor, c’est la tendance de cette dernière décennie dans le monde du développement logiciel en général et plus particulièrement dans le monde du développement web. 

Quelle que soit la taille des entreprise, elles ont souvent le projet de migrer leurs applications web et mobiles en passant d’une architecture monolithique vers une architecture microservices.

 

Pourquoi ce changement ? 

Pendant des dizaines d’années, les applications web étaient développées et implémentées avec une approche monolithique et le plus souvent couplée à une architecture en trois tiers. Généralement, dans cette architecture, pour une application web, on trouve un projet frontend, un projet backend et une base de données, et parfois, on trouve le back et le front dans le même projet (server side rendering).

Exemple d'architecture Monolithic

Dans ce genre d’architecture et après des dizaines et des centaines d’itérations dans les différents projets, le code commence à être compliqué et difficile à maintenir. Le fort couplage entres les différents modules implique que toute modification dans l’un, va probablement casser les autres.

De plus, les applications monolithiques rendent le côté opérationnel coûteux et difficile à optimiser et à automatiser. Le build, le testing et le déploiement des différentes applications peuvent prendre beaucoup de temps et peuvent consommer de nombreuses ressources. D’où le besoin d’avoir des services légers et découplés.

 

Qu’est-ce que l’architecture microservices ?

L’idée de cette architecture est de diviser et de décomposer l’application en plusieurs petits (micro) services indépendants, l’objectif est d’avoir une série de services modulaires. Chaque module prend en charge un objectif métier spécifique et utilise une interface simple et bien définie pour communiquer avec d'autres modules.

Exemple d'architecture Microservices

En adoptant cette approche, les changements appliqués à un ou plusieurs services n’affectent pas les autres, d’où l’indépendance même des équipes de développement ce qui permet enfin de les restructurer et de les organiser selon les besoins métier.

Cette architecture nous permet également de gagner plus d’efficacité et plus d’optimisation dans le côté opérationnel et dans l’infrastructure où s'exécutent les différents microservices. En effet, des tâches comme le building, testing et le déploiement s'exécutent seulement sur les services concernés par les modifications appliquées, d’où, un gain majeur de performance, la possibilité d’une automatisation efficace et une exécution continue ce qui permet à des notions comme les pipelines CI/CD (continuous integration, continuous deployment/delivery) de s’émerger et d’être parmi les outils majeurs dans l'implémentation des applications microservices.

Tous ces apports sont très attractifs pour les entreprises, elles adoptent cette architecture microservices et implémentent ainsi des outils et des plateformes qui aident et qui simplifient le développement. Parmi ces entreprises on trouve notamment Netflix.

 

Les entreprises leaders du « microservices »

Netflix est l'une des premières entreprises à avoir migré avec succès d'une architecture monolithique traditionnelle vers une architecture de microservices basée sur le cloud.

En effet, Netflix a mis en œuvre cette architecture bien avant l'introduction du terme microservices. Il a fallu plus de deux ans à Netflix pour parvenir à une migration complète vers le cloud. Non seulement Netflix a perfectionné l'utilisation des microservices, mais il a également réussi à créer de nombreux outils qui ont été utilisés pour réussir cette migration.

Le Netflix OSS (Open Source Software Center) dispose de nombreux outils et technologies qui peuvent être utilisés par d'autres entreprises pour créer une architecture de microservices sur le cloud.

D’autres entreprises ont aussi adopté l’architecture microservices comme Amazon, Uber, Ebay … et comme dans le cas de Netflix, plusieurs entreprises ont migré leurs applications vers cette architecture. Cette migration, dans la plupart des cas, va potentiellement imposer une migration technologique. En effet, le choix des technologies dépend de l’architecture choisie. Pour l’architecture microservices, il est toujours recommandé d’utiliser des technologies qui garantissent la modularité et la simplicité dans l’implémentation des moyens de communication entre les services. 

 

Migration et transition de legacy vers des architectures plus modernes

 

La migration et la transition d’une architecture monolithique legacy vers une architecture microservices moderne est au cœur de plusieurs projets et missions au sein des entreprises.

Ma dernière mission dans une entreprise du secteur du luxe consistait à faire migrer des dizaines d’applications et de services, à les découpler et à les décomposer en des microservices autonomes. Afin d’atteindre ces objectifs, nous avons adopté des méthodologies et un stack technologique moderne qui répond aux critères d’une telle architecture.

En effet, la migration était en architecture microservices cloud, nous avons utilisé principalement deux patterns connus dans le monde des applications cloud, “rip and replace” et “architecture hybride”.

Le pattern “rip and replace” consiste généralement à reproduire et écrire tous les modules et fonctions de l’application legacy from scratch en suivant les critères de l’architecture microservices.

Tout au long de cette migration avec ce pattern, pour faciliter le processus et minimiser les downtimes de nos applications, nous avons essayé de toujours mettre hors service, de façon incrémentale, les services et les modules legacy. D’où une architecture hybride où l’on trouve des services autonomes et découplés qui utilisent encore des modules et des applications legacy.

Cette migration en architecture est souvent accompagnée par une migration en stack technologique et en infrastructure.

En effet, les technologies et les outils utilisés dans le développement des différents services doivent répondre aux critères de modularité et de simplicité. De plus, les technologies utilisées dans l’implémentation de l’infrastructure doivent répondre aux besoins de scalability, d’adaptation et d’optimisation des ressources.

Dans le monde du développement web, on considère que NodeJS répond à tous les critères demandés et pourrait donc être, dans la plupart des cas, le meilleur choix technologique.

 

Qu’est-ce que NodeJS ?

NodeJS est une plateforme open-source qui permet d’exécuter du JavaScript côté serveur. Afin d’implémenter des services légers et performants, NodeJS est parmi les environnements les plus utilisés grâce à son efficacité et sa simplicité.

En effet, NodeJS est construit avec une architecture I/O asynchrone et non-bloquante, ce qui permet d'implémenter des interfaces et des APIs simples et une communication rapide entre les différents microservices de l’application. De plus, NodeJS utilise le JavaScript, un langage simple et facile à apprendre.

Avec NodeJS, on peut lancer tout un service avec seulement quelques lignes de code.

Mahdi
Développeur Web FullStack