Your Name
← Retour au portfolio

Modernisation d’un module .NET pour un e-commerce à fort trafic

Refonte complète d’une brique .NET legacy en micro-services .NET Core, avec 120 critères utilisateur traités en moins de 300 ms, couverture de tests > 80 %, optimisation et monitoring.

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)
Schéma des micro-services
Découpage du monolithe vers les micro-services.
Schéma de clean architecture .NET
Organisation en couches : Domain, Application, Infrastructure.

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);
}
Schéma des micro-services
Dashboard de couverture
Schéma de clean architecture .NET
Monitoring

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
API Contract with Swagger Hub
Swagger Hub
API Contract Principle
Contrats API / Consomma(c)teurs

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.

Monitoring dashboard
Tableau de bord
Monitoring showcase
Suivi des indicateurs

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 %