Contexte
Le site e-commerce utilisait une brique métier .NET Framework devenue trop lente pour l'affichage des pages produit. Elle devait agréger plus de 120 critères personnalisés par utilisateur, ce qui générait une latence importante.
L'objectif était de passer sous les 200–300 ms, d'améliorer la stabilité et de moderniser totalement la structure en plus de rendre l’ensemble testable.
Architecture : du monolithe aux micro-services
La brique monolithique a été découpée en plusieurs micro-services .NET Core :
- Service d’orchestration
- Service de validation des règles
- Service de gestion des critères
- API internes documentées (OpenAPI)
Impact :
✔ meilleure lisibilité du code
✔ fiabilité accrue
✔ scalabilité horizontale sans refonte
✔ base idéale pour les optimisations suivantes
Tests unitaires > 80 %
Une véritable culture du test est présente dans l'équipe de développement : xUnit, Moq, refactorisation pour rendre les classes testables et intégration dans la CI. Application systématique du pattern "AAA" (Arrange, Act, Assert). Approche "TDD" (Test Driven Development).
[Fact]
public void Should_ReturnError_When_UserHasInvalidCriteria()
{
// Arrange
var service = new CriteriaValidator(mockRepo.Object);
// Act
var result = service.Validate(user);
// Assert
Assert.False(result.IsValid);
}
Résultat : Couverture > 80 %, sécurisant les nombreux refactorings.
Contrats d’API & SLA
Les échanges entre micro-services ont été entièrement contractualisés :
- Spécifications OpenAPI/Swagger
- Timeouts, retry policy, circuit breaker
- SLA < 200–300 ms sur l’endpoint principal
- Structure unifiée pour les 120 critères
Résultat : respect des SLA même sous charge élevée.
✔ Baisse drastique des erreurs d'intégration
✔ Facilitation de la maintenance
✔ Prévisibilité des temps de réponse
Monitoring & Performance
Un monitoring complet a été mis en place pour analyser les temps de réponse, erreurs, saturation et performance des appels externes.
Résultat final :
✔ Temps de réponse entre 40 et 150 ms, même sous charge.
✔ Disponibilité > 99,9 %
✔ Composant devenu totalement scalable
Rôle & Résultats
Mes contributions :
- Migration .NET Framework → .NET Core
- Conception de l’architecture micro-services
- Mise en place des tests unitaires & CI/CD
- Définition / documentation des API contractuelles
- Optimisations de performance et parallélisation
- Mise en place du monitoring APM
Résultats :
- Temps de réponse : 40–150 ms
- Disponibilité : > 99,9 %
- Couverture de tests : > 80 %