🏛️ Module 49
4

Migrer vers DB-First sans interruption : les quatre phases opérationnelles

Leçon 4 / 5 — 2h

« L'architecture est la volonté d'une époque traduite dans l'espace. »

L

Ludwig Mies van der Rohe

L'Architecte · 1886-1969

Le principe de réversibilité comme filet de sécurité

Le chantier S.O.A.P. s'est déroulé en quatre phases sur deux semaines. À chaque étape, la règle absolue était la réversibilité : si la phase suivante révèle un problème, le retour en arrière doit être possible en moins de dix minutes. Cette contrainte n'est pas un luxe — c'est ce qui rend l'audace possible quand on opère en production sans filet.

Voici le séquençage opérationnel que vous pouvez adapter à votre propre contexte :

  • Phase 1 — Inventaire et cartographie : lister exhaustivement tous les fichiers qui stockent des données métier (agents, workflows, configurations, profils). Pour CodeMyShop : 30 fichiers .md d'agents, 11 workflows, 47 scripts publish_*.py. Aucune suppression à ce stade — uniquement observation.
  • Phase 2 — Migration des données : créer les tables ps_ac_* correspondantes et migrer le contenu des fichiers vers la base. Les fichiers restent en place comme fallback le temps de valider que la lecture DB fonctionne en production.
  • Phase 3 — Bascule du code : modifier les points de lecture (API, utils, scripts) pour consommer la base plutôt que les fichiers. Déployer progressivement, composant par composant. Valider en production avant de passer au suivant.
  • Phase 4 — Suppression : une fois la validation complète sur l'ensemble des composants, supprimer les fichiers devenus obsolètes. C'est cette phase qui a produit le commit 113 files changed, 20349 deletions.

Les outils techniques du chantier

Chaque table ps_ac_* est créée par un module PrestaShop via son sql/install.sql — jamais par du SQL brut. Toute modification de schéma passe par un upgrade hook versionné. Cette discipline garantit que l'état de la base est toujours reconstructible depuis le code du module, sans intervention manuelle sur le serveur.

Pour les scripts Python, le pattern Facade a remplacé la prolifération de publish_*.py one-shot : un point d'entrée unique par domaine (ac_publisher_engine.py), paramétré par des enregistrements en base plutôt que par des fichiers de configuration.

A retenir : Commencez votre <a href="/dictionnaire/migration" title="Définition : Migration" class="dict-link">migration</a> par un seul composant non critique : identifiez un fichier de configuration qui pourrait devenir une ligne en base, créez la table, migrez, validez — puis passez au suivant.

Questions & Réponses

Une question sur cette leçon ? L'IA répond automatiquement.

Vos questions et les réponses IA sont publiques et enrichissent le cours pour tous. Votre email est utilisé uniquement pour l'authentification (base légale : intérêt légitime, durée : 3 ans). Politique de confidentialité.