Alerte Infection — Système Microservices (POC)

Objectif
Mettre en place un système distribué permettant de : - Déclarer des cas d’infections (professionnels de santé) - Administrer les infections (agences) - Consulter et visualiser les données (public) - Notifier les abonnés en cas de nouveau cas
Le projet est conçu comme un POC microservices avec fonctionnement en mode dégradé : chaque composant doit pouvoir fonctionner indépendamment.
1) Architecture générale (microservices)
L’architecture repose sur une API Passerelle qui expose un point d’entrée unique pour les frontends, et route les appels vers des microservices spécialisés (Cases, Infections, Notifications), tout en intégrant une API externe de cartographie (OSM).

2) Couche Frontend (interfaces)
Trois interfaces représentent trois besoins métiers distincts :
- Front Médecins : ajout / consultation de cas
- Front Public : consultation, carte, filtres
- Front Agence : administration des infections
Elles communiquent en HTTP JSON (via la passerelle en mode normal).

3) API Passerelle (Gateway)
La passerelle joue le rôle de Gateway :
- Routing vers les microservices
- Agrégation (si besoin de composer plusieurs réponses)
- Normalisation des réponses JSON (contrat commun)
- Intégration de l’API Map (OSM)

4) Backend Cases (microservice)
Responsabilité unique : gérer les cas (création, consultation, filtres, mise à jour, suppression).
Le service possède sa base MySQL dédiée.

5) Backend Infections (microservice) — Ma contribution principale
Responsabilité unique : gérer les infections (données médicales “référentiel”).
Service autonome FastAPI + DB dédiée, déployable via Docker.
Données gérées
- Nom, incubation, détection, contagion, niveau (0 → 1)
Endpoints
POST /infection•GET /infection•GET /infection/{id}PUT /infection/{id}•DELETE /infection/{id}GET /health

6) Mode dégradé (résilience)
En mode dégradé, les frontends peuvent contacter directement les microservices disponibles. Chaque service continue de fonctionner même si la passerelle (ou un autre service) est indisponible.

Ce que j’ai appris
- Architecture microservices et responsabilité unique
- Pattern API Gateway
- Conception d’API REST (contrat JSON commun)
- Persistance multi-bases (MySQL + PostgreSQL)
- Déploiement Docker / Compose
- Résilience : mode dégradé + healthcheck
Liens
-
Dépôt GitHub :
https://github.com/massaines-cpu/ARCHI-PROJET/tree/main -
Portfolio :
https://ahmadaboalola.com/
Note Portfolio
Ma contribution principale concerne le service Backend Infections (design, développement, dockerisation).