Comment s’orienter vers une architecture microservices ?
Les microservices
L’essor des technologies du web a joué un rôle contributif dans l’émergence d’une nouvelle architecture de conception, l’architecture “microservices”.
Cette architecture permet de développer des applications sous la forme d’une suite de petits services autonomes qui fonctionnent ensemble et qui sont articulés autour d’un domaine métier. Les services communiquent les uns avec les autres en utilisant des API indépendantes du langage logiciel utilisé.
La visée de cet article, qui est le premier d’une suite d’articles, est de vous accompagner dans l’adoption d’une architecture microservices.
Je vais y détailler la méthodologie d’analyse fonctionnelle conduisant à une architecture microservices et s’inscrivant dans une approche DevOps.
Cette méthodologie repose sur une analyse des processus métiers et une conception orientée en domaines (Domain Driven Design).
Architecture Microservices adaptée au secteur immobilier
Pour illustrer cette méthodologie, prenons l’exemple d’un acteur de l’immobilier et plus particulièrement le domaine de la gestion locative. L’objectif de l’agent immobilier est de louer rapidement les biens devenus vacants à de futurs locataires.
Les futurs locataires ont besoin de consulter facilement des offres personnalisées, et toujours d’actualité. Le bailleur se doit ainsi de les publier le plus rapidement possible. Cette nécessité de réduire le Time to market confirme la pertinence des choix d’une architecture microservices et d’une approche DevOps.
Une modélisation des grandes fonctionnalités attendues par l’agent immobilier et le prospect / locataire est possible par un diagramme de cas d’utilisation.
Le lien entre les différentes fonctionnalités nécessite la définition d’interfaces. L’analyse des processus permet de les spécifier.
Analyse des processus : au service des usages
Quand un bien est remis à la location après une fin de bail ou des travaux, un agent de la gestion immobilière change son statut dans le système de gestion du parc : c’est le déclencheur de notre processus de mise en location.
Une modélisation des processus est possible par un diagramme BPMN.
De cette représentation, j’identifie les composants nécessaires :
- Les écrans ou formulaires via les tâches utilisateurs :
- Un écran qui permet la mise en disponibilité d’un bien,
- Un écran qui permet de faire la revue commerciale du bien.
- Un écran qui permet d’évaluer les dossiers de candidature.
- Les API via les tâches services :
- Une API pour la mise à jour des données du bien,
- Une API pour la publication les offres de location,
- Une API pour la gestion du bail.
Pour concevoir une architecture en microservices, j’utilise une approche “Domain Driven Design”. Les domaines représentent des métiers différents dans la solution. Chaque domaine correspond généralement à un seul microservice autonome et indépendant.
Domain Driven Design : se concentrer sur la valeur métier
L’approche s’articule autour de 3 principes :
- Collaborer étroitement avec les experts des domaines pour identifier les processus et préciser les contours des domaines,
- Approfondir chaque domaine pour en préciser son contenu, sa logique, ses données,
- Modéliser les domaines pour simplifier la compréhension.
Appliquée à notre exemple, l’approche DDD me permet de définir les domaines suivants :
- Domaine de gestion du patrimoine : son rôle est de concentrer les fonctionnalités associées à la gestion du parc. Dans notre contexte : le statut d’un bien, sa description et l’évènement de mise à la location.
- Domaine de gestion locative : son rôle est de gérer toutes les fonctions nécessaires à la gestion de la location. Dans notre contexte, c’est le domaine qui supporte le processus avec les informations associées : instances du processus, statut des annonces, sélection des locataires, gestion du bail.
- Domaine de gestion de publication : son rôle est plus technique, car il va principalement permettre de nous abstraire des spécificités techniques de publication des différentes plateformes. Il va gérer la connexion aux plateformes, la transformation de l’annonce dans un format propre à chaque plateforme.
- Domaine de gestion de la candidature : son rôle est de prendre en compte le dossier de candidature : le négocier, le valider et le transmettre pour contractualisation.
Version détaillée du diagramme.
ITS4U vous accompagne dans l’univers des microservices
Avec une méthodologie efficace, ITS4U vous propose cette architecture afin d’apporter de la flexibilité et de l’agilité à vos produits. Dans la suite de cet article, nous vous expliquons les techniques d’implémentation propres à cette méthode. Prochain article : Comment développer des microservices avec OpenAPI et Thorntail ?