E-COMMERCE MICROSERVICES
Architecture distribuée avec frontend React et backend Node.js, communiquant via RabbitMQ.
Contexte
Après avoir construit un monolithe Node.js qui devenait ingérable (un bug paiement cassait le catalogue), j'ai voulu expérimenter les microservices. Pas juste la théorie : construire une vrai archi distribuée avec domaines métier découplés.
Méthodologie d'Apprentissage
- 1
Lecture Building Microservices (Sam Newman) pour patterns fondamentaux
- 2
Event Storming simplifié pour décomposer le domaine métier (Auth, Catalogue, Panier, Commandes)
- 3
Développement service par service avec communication asynchrone RabbitMQ
- 4
Docker Compose pour orchestration locale, migration progressive vers Kubernetes
- 5
TypeScript strict end-to-end : interfaces partagées via package npm interne
Défis Techniques
Cohérence de données distribuées sans ACID
Impossibilité de transaction ACID entre services. Apprentissage pattern Saga : orchestration des commandes avec mécanismes de compensation (paiement OK → stock nok → rollback paiement).
Debugging inter-services chaotique
Bug service Commandes = 20min diagnostic avec logs dispersés. Solution : correlation ID propagé via headers HTTP + RabbitMQ headers, logs centralisés avec ELK.
Dépendances de données qui dérivent silencieusement
Contrats API changeaient sans sync. Migration vers TypeScript strict + schemas partagés npm = contrats as code.
Résultats
4 microservices indépendamment dployables (Auth, Catalogue, Panier, Commandes)
Communication asynchrone fiable : RabbitMQ avec retry + dead-letter queues
Compréhension des trade-offs monolithe vs microservices (complexité vs scalabilité)
Capacité : debugger des systèmes distribués, implémenter patterns (Saga, CQRS)
Explore More