architecture
Architecture du systeme
L'architecture du backend du projet de réservation de ticket utilise une approche basée sur les microservices, où différentes fonctionnalités sont découpées en services autonomes et indépendants.
Cette conception modulaire permet de créer un système flexible, évolutif et facilement maintenable. Pour orchestrer ces microservices et leur offrir des fonctionnalités supplémentaires, le projet s'appuie sur Spring Cloud, une suite d'outils et de bibliothèques développée par Spring Framework, dédiée à la construction d'applications basées sur des microservices.
Sprint Cloud
Spring Cloud facilite la mise en œuvre des principes clés des architectures microservices tels que :
- la découverte de services
- la gestion de la configuration distribuée
- la tolérance aux pannes
- la gestion des appels de services à distance
- la gestion de la sécurité et bien plus
En utilisant Spring Cloud, le système de réservation de ticket bénéficie d'un écosystème d'outils solide qui simplifie le développement, le déploiement et la gestion des microservices.
Isolation des données
Pour garantir une isolation des données entre les différents services, le projet met en œuvre le pattern "Database per Service".
Concrètement, chaque microservice, tel que le service User et le service Payment, possède sa propre base de données indépendante.
Cette approche permet à chaque service d'être responsable de la gestion de ses propres données sans partager directement sa base de données avec d'autres services.
Ainsi, les microservices peuvent évoluer indépendamment, offrant une architecture plus robuste, évolutive et résiliente.
Descriptions des services et leurs roles
Voici une description de chaque service et de leurs rôles :
Gateway Service - Port 9191
Le service Gateway est responsable de la gestion de la passerelle d'API pour tous les microservices.
Il agit comme point d'entrée unique pour toutes les requêtes externes et gère la distribution des requêtes vers les services appropriés en fonction des règles de routage et de filtrage définies.
Le service Gateway est configuré pour écouter les requêtes entrantes sur le port 9191 et redirige les requêtes vers les services appropriés basés sur les règles de routage spécifiées.
Il peut également fournir des fonctionnalités de sécurité telles que:
- l'authentification
- l'autorisation
- limitation du débit.
Discovery Service – Port 8761
Le service Discovery permet la découverte dynamique des microservices au sein de l'architecture.
Les microservices s'enregistrent auprès du service Discovery, qui maintient une liste à jour de tous les services disponibles avec leurs adresses réseau.
Chaque microservice, tel que le service User et le service Payment, s'enregistre auprès du service Discovery lors de son démarrage.
Lorsqu'un microservice a besoin de communiquer avec un autre service, il interroge le service Discovery pour obtenir l'adresse réseau appropriée.
Nous avons utilise Netflix Eureka qui est un composant de Spring Cloud qui fonctionne comme un service de découverte de services.
Son rôle principal est de permettre la découverte dynamique des microservices au sein de l'architecture. Les microservices, tels que le service User et le service Payment, s'enregistrent auprès du service Eureka lors de leur démarrage.
Cela signifie que chaque microservice informe Eureka de son existence et fournit son adresse réseau.
Lorsqu'un microservice a besoin de communiquer avec un autre service, au lieu de connaître explicitement l'adresse réseau de ce service, il interroge le service Eureka pour obtenir l'adresse réseau appropriée. Ainsi, le service Eureka maintient une liste à jour de tous les services disponibles avec leurs adresses réseau. Cette approche permet une communication transparente entre les microservices sans nécessiter de configuration statique ou de dépendances directes.
Config Server – Port 8888
Le Config Server est responsable de la gestion centralisée de la configuration des microservices.
Il permet d'externaliser la configuration des services, ce qui facilite les mises à jour et les ajustements sans nécessiter de redéploiement des microservices. Les microservices, tels que le service User et le service Payment, sont configurés pour récupérer leur configuration auprès du Config Server lors de leur démarrage.
Le Config Server contient les fichiers de configuration pour chaque microservice, et les microservices utilisent ces configurations pour adapter leur comportement.
User Service - Port 8081
Ce service gère les fonctionnalités liées aux utilisateurs telles que:
- l'inscription
- l'authentification
- gestion des comptes.
Lorsqu'un client souhaite effectuer des opérations liées aux utilisateurs, il envoie une requête REST au Gateway, qui la redirige vers le Service A. Le Service A utilise des API REST pour exposer les fonctionnalités aux clients et interagit avec sa propre base de données (user-db) pour gérer les informations des utilisateurs.
C’est a dire qu’avant, les clients accédaient à ce service via l'URL $IP_ADDRESS:8081/api/v1/users. Cependant, grâce au service Gateway, l'URL est maintenant $IP_ADDRESS:9191/user-service. Cela offre une abstraction pour les clients externes et facilite la gestion des versions et des changements d'URL.
Payment Service - Port 8082
Le Service Payment est responsable de la gestion des paiements pour les réservations de tickets. Avant l'introduction du service Gateway, les clients accédaient à ce service via l'URL $IP_ADDRESS:8082/api/v1/payments.
Désormais, l'URL est mise à jour en $IP_ADDRESS:9191/payment-service, ce qui simplifie la manière dont les clients interagissent avec ce service. Le Service Payment utilise des API REST pour exposer les fonctionnalités de paiement aux clients et interagit avec sa propre base de données (Payment-db) pour gérer les informations relatives aux paiements.