Année Universitaire : 2025-2026
Applications Web Distribuées
Implémentation « API Gateway»
Objectif
Une API Gateway agit comme un point d'entrée unique pour l'accès aux microservices. Lorsqu'elle reçoit
une requête, elle sélectionne une instance de service disponible et lui transfère la requête. L'objectif de cet
atelier est d'organiser l'appel vers les microservices en utilisant une API Gateway.
Contenu du Workshop
Partie 1 : Création d'un projet API Gateway
Partie 2 : Configuration statique de l'API Gateway
Partie 3 : Configuration dynamique de l'API Gateway avec Eureka
Rendu : Répondre aux questions de la Partie 3 (2.b et 3).
[Link] 1 : Créer un Projet
1. Créez un projet Spring Boot :
1
2. Ajoutez ces deux starters : Eureka Discovery client et Gateway
Vous obtenez ces deux dépendances dans votre [Link] :
<dependency>
<groupId>[Link]</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<dependency>
<groupId>[Link]</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
3. Faites un maven update project et clean install
4. Au niveau de la classe main spring Boot de votre projet, ajouter l’annotation :
@EnableEurekaClient ou bien @EnableDiscoveryClient
Accédez à l’interface de votre Eureka server : [Link]
2
B. Partie 2 : Utiliser une Configuration Statique
En utilisant une configuration statique, vous n’avez pas besoin d’utiliser l’Eureka Server comme
intermédiaire. L’API Gateway pointera directement vers le microservice.
Pour définir une API Gateway, il y’a deux méthodes de travail :
- Méthode 1 : Ajouter la relation entre Gateway et MS à travers une classe de configuration
Dans la classe main, nous allons créer des routes en ajoutant le code suivant :
@Bean
public RouteLocator gatewayRoutes(RouteLocatorBuilder builder){
return [Link]()
.route("Candidat",r->[Link]("/candidats/**")
.uri("[Link] )
.route("Job", r->[Link]("/jobs/**")
.uri("[Link] )
.build();
}
• Path : c’est le path à utiliser pour accéder au microservice à travers le Gateway
• uri : c’est l’emplacement de microservice
• id : c’est l’id de MS-candidat
NB : dans le fichier [Link], vous ajouter juste le port et le nom de l’application
- Méthode 2 : Ajouter la relation entre Gateway et MS à travers le fichier [Link]
Ajoutez ces lignes dans votre fichier [Link] :
B. Partie 3 : Utiliser une configuration dynamique (avec Eureka
Server)
Pour une configuration dynamique des microservices, nous devons utiliser Eureka. Ce service est
particulièrement utile dans les cas suivants :
- Le microservice peut changer de port ou d’adresse IP (par exemple, dans un environnement cloud ou
un cluster Kubernetes).
- Mise en place d'un load balancing automatique.
- Scalabilité facilitée en ajoutant plusieurs instances d’un microservice de manière transparente.
3
1. Pour définir un API Gateway dynamique, il y’a deux méthodes de travail aussi :
- Méthode 1 : A travers une classe de configuration
- Méthode 2 :A travers le fichier [Link]
2. Visualiser le routage de l’API-Gateway : Activer les logs de routage dans API Gateway
a . Ajouter ces lignes dans [Link] pour afficher les détails des requêtes redirigées par la
Gateway :
[Link]=DEBUG
[Link]=DEBUG
Effet : À chaque requête http envoyée, on verra dans la console quelle instance Eureka a été
sélectionnée.
b. Consulter la partie console et identifier l’algorithme utilisé pour faire le load balancer.
4
3. Chercher les autres types de load balancing existants puis ajouter la configuration nécessaire pour tester
l’algorithme Random en l’appliquant uniquement au service candidat
Quelle approche choisir : statique ou dynamique ?
Approche Utilise Eureka ? Avantages Inconvénients
Pas besoin de connaître l'URL
Dynamique exacte du microservice (utile en Dépendance à Eureka.
Avec ✅ Oui production avec plusieurs Temps de découverte
lb://candidat instances). initial.
Facilite le load balancing.
Statique Avec
Si l'IP/port du microservice
RouteLocator Simple à configurer et rapide.
❌ Non change, la Gateway ne
uri("[Link] Fonctionne même sans Eureka.
pourra plus le trouver.
alhost:8082")