Plateforme d’optimisation des tournées de livraison
Trois microservices NestJS qui échangent des événements via RabbitMQ, un moteur de tournées heuristique sur distances routières réelles, le suivi des livreurs en temps réel et trois applications clientes.
01 · Contexte
Une activité de livraison du dernier kilomètre doit coordonner trois groupes : les partenaires qui créent les commandes, les administrateurs qui les répartissent et les livreurs sur la route. Réalisé dans le cadre de mon projet de fin d’études d’ingénieur chez Dundill.
02 · Enjeu
Transformer une liste de colis en tournée efficace pour chaque livreur, tenir tout le monde informé en temps réel et garder un système maintenable à mesure que les fonctionnalités s’ajoutent.
03 · Architecture
- Trois services NestJS (Users, Orders, Notifications), chacun propriétaire de ses données MongoDB et exposant sa propre API GraphQL.
- Des topic exchanges RabbitMQ transportent les événements métier entre les services (modifications d’utilisateurs, changements de statut des colis).
- Une passerelle WebSocket diffuse en temps réel la position des livreurs vers le back-office.
- Les notifications sont envoyées par e-mail et via des subscriptions GraphQL.
- Clients : un back-office React, un tableau de bord partenaires React et une application livreur React Native (Expo).
04 · Décisions clés
Des événements plutôt que des appels directs
Les changements d’état circulent sous forme d’événements asynchrones : un service de notifications lent ne bloque jamais une commande.
Rien ne se perd
Une dead-letter queue et la reconnexion automatique conservent les messages en échec au lieu de les abandonner.
Des tournées sur de vraies routes
Les arrêts sont ordonnés par une construction du plus proche voisin suivie d’une amélioration 2-opt, sur les distances routières réelles, avec un fournisseur d’itinéraires de secours pour que l’optimisation continue de fonctionner si l’un d’eux est indisponible.
La sécurité à la frontière du domaine
Six rôles appliqués par des guards JWT dans le service d’identité ; les autres services vérifient les jetons auprès de lui.
05 · Résultat
Une plateforme opérationnelle de bout en bout, répartie sur six bases de code : les livreurs reçoivent une feuille de route optimisée, les administrateurs suivent les livreurs en direct et les partenaires reçoivent les mises à jour de statut au fil de l’eau. Présentation de l’architecture disponible sur demande.