Système de Gestion de Bibliothèque – Architecture Microservices Cloud Native

Pour mon projet final du module développement dans le cloud, j’ai conçu un Système de Gestion de Bibliothèque complet, entièrement basé sur une architecture microservices. L’objectif pour moi c’était de maîtriser les défis de la communication distribuée et de la scalabilité.

Architecture des services

J’ai décomposé le domaine métier en services autonomes et spécialisés :

  • Book Service & User Service : gestion des ressources principales
  • Loan Service : orchestration des emprunts et retours
  • Frontend : interface Next.js pour consommer les APIs

Les fondations d’un système distribué

Au-delà de la création des services isolés, j’ai surtout compris pourquoi une architecture distribuée a besoin de ciment pour tenir debout. Deux composants sont essentiels :

1. Service Discovery (Eureka)

En microservices, les adresses changent constamment. Au lieu de coder des adresses fixes, chaque service s’enregistre auprès d’Eureka au démarrage et envoie des heartbeats. Le registre central maintient la liste des instances disponibles et leur état de santé.

2. API Gateway (Spring Cloud Gateway)

C’est le point d’entrée unique du système. Plutôt que d’exposer chaque service au client, tout passe par la Gateway qui centralise les préoccupations transverses :

Stack technique

  • Backend : Java 17, Spring Boot 3, Spring Cloud (Eureka, Gateway, OpenFeign)
  • Sécurité : JWT, Spring Security
  • Base de données : MySQL
  • Frontend : Next.js
  • DevOps : Docker & Docker Compose

Déploiement simplifié

Tout le projet est conteneurisé. Un seul fichier docker-compose.yml lance l’infrastructure complète : backend, frontend, bases de données, service discovery.