• Contenu
  • Bas de page
logo ouidoulogo ouidoulogo ouidoulogo ouidou
  • Qui sommes-nous ?
  • Offres
    • 💻 Applications métier
    • 🤝 Collaboration des équipes
    • 🛡️ Sécurisation et optimisation du système d’information
    • 🔗 Transformation numérique
  • Expertises
    • 🖥️ Développement logiciel
    • ♾️ DevSecOps
    • ⚙️ Intégration de logiciels et négoce de licences
      • Atlassian : Jira, Confluence, Bitbucket…
      • Plateforme monday.com
      • GitLab
      • SonarQube
    • 📚​ Logiciel de CRM et de gestion
    • 🎨 UX/UI design
    • 🌐 Accessibilité Numérique
    • 🗂️​ Démarches simplifiées
    • 📝 Formations Atlassian
  • Références
  • Carrières
    • 🧐 Pourquoi rejoindre Ouidou ?
    • ✍🏻 Nous rejoindre
    • 👨‍💻 Rencontrer nos collaborateurs
    • 🚀 Grandir chez Ouidou
  • RSE
  • Ressources
    • 🗞️ Actualités
    • 🔍 Articles techniques
    • 📖 Livres blancs
    • 🎙️ Interviews Clients
Nous contacter
✕
Comment faire des coins personnalisés en CSS ?
Comment faire des coins personnalisés en CSS ?
24 mars 2022
Spring Security : JWT et cycle de vie de l’authentification
Spring Security : JWT et cycle de vie de l’authentification
15 avril 2022
Ressources > Articles techniques > L’architecture en Microservices

L’architecture en Microservices

Article écrit par Linda Ben Hadj Naceur

Du Monolithe vers les Microservices

L‘architecture monolithe ou les applications dites formées d’un seul bloc, bien qu’ils restent simples à construire, efficaces et performants, on constate leur limite au fur et à mesure que leur taille augmente. On fait part de manque de fiabilité, de mises à jour complexes et de limitation technologique à une seule stack.

Les applications en Microservices, contrairement aux applications monolithiques, sont beaucoup plus souples et plus agiles. Le développeur peut ajouter et modifier des fonctionnalités rapidement et sans risque afin d’assurer des livraisons rapides et continues.

Architecture Monolithique Vs Architecture Microservices

Les Microservices, c’est quoi ?

D’une manière générale, l’architecture Microservices est un assemblage de petites unités au sein d’un système complexe.

Les avantages de cette architecture sont :

  • Mise en production plus rapide.
  • Des Microservices extensibles et évolutifs facilement.
  • La factorisation et la réutilisation des Microservices.
  • La résilience.

Caractéristiques de l’architecture Microservices

Des unités fonctionnelles : un Microservice doit représenter une unité fonctionnelle indépendante et autonome.

Modificabilité : la modification d’un Microservice pour une évolution ou une correction n’impacte en rien les autres Microservices. On dit que chaque Microservice s’exécute dans un processus isolé.

Communication à base de messages : les Microservices d’une même application communiquent à base de messages. Il y a la communication synchrone par le biais de l’API REST et la communication asynchrone à base d’évènements, déclenchés et écoutés par les services.

Des services tolérants : l’architecture en Microservices est hautement tolérante aux pannes. Chaque microservice doit prévoir un traitement de secours pour chaque panne possible.

Des objectifs clairs : les équipes s’organisent et se focalisent sur les fonctionnalités métier.

Des services diversifiés : avec une architecture en Microservices, c’est possible d’utiliser des dépendances technologiques différentes tel que le langage de programmation et la base de données.

Les composants de l’architecture en Microservices

Les composants d’une architecture Microservices

API passerelle “API Gateway”:

L’API Gateway présente un point d’entrée unique à l’application. Elle assure la communication entre les clients (Front et services externes) et les Microservices d’une même application.

L’API Gateway permet de renforcer la sécurité, de diminuer le nombre des requêtes entre les applications clientes et les Microservices et d’assurer une haute disponibilité.

Équilibreur de charge “Load Balancer”:

C’est le responsable de router et de répartir la charge entre plusieurs instances disponibles. L’équilibreur de charge utilise aussi le service de découverte pour retrouver l’adresse des services.

Service de découverte “Service Discovery”:

Le service de découverte fonctionne comme un annuaire téléphonique. Chaque Microservice doit renseigner son adresse dynamiquement au moment de son démarrage. Les différents Microservices d’une application peuvent communiquer entre eux en passant par le biais du service de découverte, dans ce cas ils n’ont besoin que de connaître le nom du service demandé. Le Gateway utilise aussi le service de découverte pour découvrir les bonnes adresses et assurer le routage des requêtes externes.

Serveur de configuration “Config Server”:

Le serveur de configuration permet d’externaliser et de centraliser les fichiers de configuration de chaque Microservice. Au moment de son démarrage, un Microservice doit chercher ses propriétés dans le serveur de configuration. L’adresse du serveur de configuration ne peut pas être découverte dynamiquement, elle doit nécessairement être connue à l’avance.

Disjoncteur de circuit “circuit breaker”:

Un circuit Breaker garantit la tolérance aux différentes pannes possibles. Il prépare des scénarios de gestion de pannes par exemple, le renvoyer vers un service alternatif.

La Stack Spring Cloud pour les Microservices

Spring Cloud

Développement rapide

La configuration d’un projet Spring Cloud se base sur une configuration simple et un démarrage rapide avec Spring Boot.

Intégration

Spring Cloud Config :

Spring Cloud Config permet de gérer la centralisation des fichiers de configuration. Pour cela, il suffit de créer un projet Spring Boot pour le serveur avec la dépendance suivante : spring-cloud-config-server.

Ajouter dans le fichier “application.properties” comment on va récupérer les différents fichiers de configuration: dans mon exemple j’utilise Vault pour les mots de passe et Git pour les autres informations.

Activer le serveur de configuration avec l’annotation @EnableConfigServer dans la classe principale du projet :

Au niveau des applications clientes, on ajoute les deux dépendances suivantes : spring-cloud-starter-config et spring-cloud-starter-bootstrap.

Le starter bootstrap pour dire qu’il faut commencer par lire le fichier bootsrap.yml dans lequel on va préciser l’adresse du serveur de configuration.

Et voilà, maintenant on peut utiliser le serveur de configuration.

Spring Cloud Netflix-Eureka :

Spring Cloud Netflix-Eureka facilite l’intégration du service de découverte Eureka de Netflix. Pour cela, il suffit de créer un projet Spring Boot pour le serveur du service de découverte avec la dépendance suivante : spring-cloud-starter-netflix-eureka-server :

Activer le service de découverte avec l’annotation @EnableEurekaServer dans la classe principale du projet :

Et ajouter les propriétés suivantes dans le fichier de configuration application.properties :

Au niveau du client, on ajoute la dépendance suivante :

Ajouter dans le fichier properties de l’application cliente l’adresse du serveur de découverte :

Et voilà, le serveur de découverte est prêt à fonctionner :

Spring Cloud Gateway:

Spring Cloud Gateway fournit tout le nécessaire pour créer une passerelle de communication avec les microservices d’une application.

Pour cela, il suffit de créer un projet Spring Boot avec la dépendance suivante : spring-cloud-starter-gateway.

Ensuite, Il faut ajouter les configurations de redirections.

Cela peut être fait dans la classe principale de l’application avec la classe RouteLocator et RouteLocatorBuilder.

Ou d’une manière dynamique dans le fichier properties ou yaml de configuration. Spring Cloud Gateway nous permet aussi de gérer les problèmes de CORS POLICY en ajoutant les allowedOrigins comme montré dans l’exemple ci-dessous.

Dans les deux exemples, le microservice “clientProjet” est appelé directement par son nom et non pas par son URL. Cela est assuré par le biais du service de découverte eureka de netflix ajouté aussi dans le projet.

Conclusion

Malgré ses avantages, l’architecture en Microservices fait l’objet de critiques et présente des inconvénients, tels qu’une mise en place complexe, un cout initial élevé et un monitoring essentiel.

Pour adopter ce type d’architecture, il faut bien étudier le périmètre de l’application et analyser les besoins du projet pour pouvoir bien découper afin de profiter au Maximum des avantages des Microservices.

Sources

https://fabienfernandez.dev/monolithe-vs-micro-services

Sources de l’Informaticien avec Pr.Mohamed YOUSSFI: Micro Services avec Spring Cloud par l’exemple

www.redhat.com/fr/topics/microservices/what-are-microservices

blog.engineering.publicissapient.fr/2015/03/02/microservices-les-concepts/

https://fr.wikipedia.org/wiki/Programmation_orientée composant

À lire aussi

Fresque numérique miniature image
16 avril 2025

Fresque du Numérique

Lire la suite

intelligence artificielle Ouicommit miniature image
17 mars 2025

Ouicommit – L’intelligence artificielle en entreprise, on y est ! 

Lire la suite

Image miniature Hackathon Women in Tech
13 mars 2025

Hackathon Women in Tech :  un engagement pour une tech plus inclusive 

Lire la suite

image miniature les nouveautés Atlassian
26 février 2025

Les nouveautés Atlassian en 2025

Lire la suite

Articles associés

Fresque numérique miniature image
16 avril 2025

Fresque du Numérique


Lire la suite
intelligence artificielle Ouicommit miniature image
17 mars 2025

Ouicommit – L’intelligence artificielle en entreprise, on y est ! 


Lire la suite
Image miniature Hackathon Women in Tech
13 mars 2025

Hackathon Women in Tech :  un engagement pour une tech plus inclusive 


Lire la suite

À propos

  • Qui sommes-nous ?
  • Références
  • RSE
  • Ressources

Offres

  • Applications métier
  • Collaboration des équipes
  • Sécurisation et optimisation du système d’information
  • Transformation numérique

Expertises

  • Développement logiciel
  • DevSecOps
  • Intégration de logiciels et négoce de licences
  • Logiciel de CRM et de gestion
  • UX/UI design
  • Accessibilité Numérique
  • Démarches simplifiées
  • Formations Atlassian

Carrières

  • Pourquoi rejoindre Ouidou ?
  • Nous rejoindre
  • Rencontrer nos collaborateurs
  • Grandir chez Ouidou

SIEGE SOCIAL
70-74 boulevard Garibaldi, 75015 Paris

Ouidou Nord
165 Avenue de Bretagne, 59000 Lille

Ouidou Rhône-Alpes
4 place Amédée Bonnet, 69002 Lyon

Ouidou Grand-Ouest
2 rue Crucy, 44000 Nantes

Ouidou Grand-Est
7 cour des Cigarières, 67000 Strasbourg

  • Linkedin Ouidou
  • GitHub Ouidou
  • Youtube Ouidou
© 2024 Ouidou | Tous droits réservés | Plan du site | Mentions légales | Déclaration d'accessibilité
    Nous contacter