Retour à l’expérience Carter-Cash

Carter-Cash

Fiabilité & exploitation

01 / 4

ANTICIPATION & CONCEPTION

Anticiper un risque avant qu’il ne devienne un incident

Traiter une limite structurelle avant qu’elle ne bloque la création de nouvelles commandes

Les références des commandes, expéditions et produits reposaient sur une portion d’identifiants globaux. Avec l’augmentation du volume, ce mécanisme pouvait réutiliser une ancienne valeur et provoquer une collision. Un correctif temporaire avait repoussé le problème sans supprimer sa cause.

À partir d’une question soulevée en daily, j’ai analysé le fonctionnement existant et les nombreuses briques dépendantes de ces références. J’ai comparé plusieurs stratégies, présenté leurs compromis puis recommandé une architecture fondée sur des compteurs dédiés par magasin, usage et période. Après validation, j’ai réalisé la solution retenue avec les protections nécessaires contre les créations concurrentes.

  • Analyse de risque
  • Conception
  • Concurrence

02 / 4

MAINTENANCE PRÉVENTIVE

Entretenir les données avant qu’elles ne s’accumulent

Supprimer progressivement ce qui n’a plus d’utilité avant que son accumulation ne devienne un problème

J’ai constaté que de nombreux paniers devenus inutiles restaient durablement en base de données. J’ai fait remonter ce constat puis proposé et conçu leur nettoyage, sans demande initiale du client. J’ai ensuite conçu un dispositif comparable pour traiter un besoin récurrent concernant les anciennes redirections.

Les deux traitements distinguent les données encore utiles de celles qui peuvent être supprimées, puis interviennent par lots afin de limiter leur impact. Verrous, durées maximales, logs, historiques et synthèses par email permettent de suivre chaque exécution, tandis qu’une planification automatise leur entretien dans la durée.

  • Cycle de vie
  • Traitements par lots
  • Proactivité

03 / 4

QUALITÉ & RECETTE

Faire de la non-régression une responsabilité

Sécuriser chaque évolution avec des tests adaptés aux risques réels du parcours

Sur une plateforme e-commerce, une régression peut empêcher une recherche, une connexion ou une commande d’aboutir. Les règles étant nombreuses et souvent liées entre elles, la vérification du comportement faisait partie intégrante de mes développements.

Je préparais des cahiers de tests détaillés, réalisais les recettes fonctionnelles et ajoutais des tests PHPUnit sur les services et règles métier sensibles. Avec Vincent, j’ai également participé à la création d’un projet Cypress couvrant de nombreux parcours end-to-end. Cette expérimentation était lancée manuellement selon les besoins ; elle ne constituait pas encore une chaîne de tests systématique ou entièrement automatisée.

  • PHPUnit
  • Cahiers de tests
  • Cypress

04 / 4

RÉALISATION TECHNIQUE

Sous le capot de la fiabilité

Cette fiche détaille la réalisation technique de deux chantiers de fiabilité : la nouvelle génération des références de commandes et l’entretien automatisé des données devenues inutiles

  • Symfony
  • Doctrine
  • PHPUnit

Génération des références

Pour remplacer l’ancien mécanisme basé sur une portion des identifiants globaux, j’ai créé un service de génération commun aux commandes, aux expéditions et aux produits commandés. Chaque magasin possède ses propres compteurs, séparés par type de référence et par période.

Gestion des créations simultanées

Doctrine garantit l’unicité de chaque compteur. Lors de créations simultanées, un verrou optimiste détecte qu’une valeur vient déjà d’être utilisée : le service recharge alors le compteur et retente la génération avec le numéro suivant.

Purge des données

Les paniers et redirections obsolètes sont supprimés par des commandes Symfony Console. Les traitements utilisent DBAL pour intervenir par lots, des verrous pour empêcher deux exécutions simultanées et une durée maximale pour limiter leur impact sur la base.

Suivi et exploitation

Des logs, alertes et synthèses par email permettent de contrôler les exécutions. Une interface Sonata rend l’utilisation des compteurs consultable, tandis qu’une commande dédiée prépare les références d’une nouvelle période ou initialise celles d’un nouveau magasin.

Tests et outillage

PHPUnit couvre notamment la génération des références, les créations concurrentes et la purge des redirections. Des commandes de génération de données facilitent également les recettes volumineuses hors production.

  • Symfony Console
  • Doctrine ORM
  • DBAL
  • Optimistic Locking
  • Sonata Admin
  • Monolog
  • Cron
  • PHPUnit