Migrer une plateforme e-commerce qui génère des millions de CA mensuel, c’est comme changer le moteur d’un avion en plein vol. Voici comment nous l’avons fait.
Pourquoi le headless ?
Notre monolithe Magento 2 atteignait ses limites :
- Performance : Time to First Byte > 800ms
- Scalabilité : Black Friday = sueurs froides
- Vélocité : 3 semaines pour un changement de header
- Multi-canal : Impossible d’alimenter l’app mobile proprement
L’architecture cible
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Next.js │ │ Next.js │ │ App │
│ (Web FR) │ │ (Web US) │ │ Mobile │
└──────┬──────┘ └──────┬──────┘ └──────┬──────┘
│ │ │
└───────────────────┼───────────────────┘
│
┌──────▼──────┐
│ API Layer │
│ (GraphQL) │
└──────┬──────┘
│
┌───────────────────┼───────────────────┐
│ │ │
┌──────▼──────┐ ┌──────▼──────┐ ┌──────▼──────┐
│ Magento │ │ Algolia │ │ Stripe │
│ (Backend) │ │ (Search) │ │ (Payments) │
└─────────────┘ └─────────────┘ └─────────────┘
La stratégie Strangler Fig
Pas de big bang. Nous avons migré progressivement :
- Mois 1-3 : API Gateway + premières pages statiques
- Mois 4-6 : Catalogue produit headless
- Mois 7-9 : Checkout découplé
- Mois 10-12 : Compte client + fidélité
- Mois 13-18 : Optimisations et rollout mondial
Les patterns qui ont sauvé le projet
Feature Flags everywhere
if (featureFlags.isEnabled('headless_checkout', { country: user.country })) {
return <HeadlessCheckout />;
}
return <LegacyCheckout />;
Canary deployments par pays
Monaco d’abord, puis la Belgique, puis la France. Chaque pays était un test grandeur nature.
Dual-write pour la data
Pendant 6 mois, chaque écriture allait dans l’ancien ET le nouveau système. Ceinture et bretelles.
Les chiffres post-migration
| Métrique | Avant | Après | Delta |
|---|---|---|---|
| TTFB | 847ms | 89ms | -89% |
| LCP | 4.2s | 1.1s | -74% |
| Conversion | 2.1% | 2.8% | +33% |
| Déploiements/semaine | 2 | 15 | +650% |
Ce qu’on referait différemment
- Investir plus tôt dans l’observabilité — On a volé à l’aveugle trop longtemps
- Automatiser les tests E2E dès le jour 1 — La dette s’accumule vite
- Impliquer le métier plus tôt — Certaines fonctionnalités legacy étaient critiques sans qu’on le sache
Conclusion
18 mois, c’est long. Mais aujourd’hui, nous déployons 15 fois par semaine sans stress, notre site charge en moins d’une seconde, et nos développeurs sont (presque) heureux.
La migration headless n’est pas une fin en soi — c’est le début d’une nouvelle vélocité.