Intégration e-commerce et système logistique legacy
Retail (confidentiel)
Un acteur du retail français avec une trentaine de points de vente physiques voulait lancer son activité e-commerce pour répondre à la pression concurrentielle et à l'évolution des usages d'achat. La contrainte forte : refuser toute modification de son système logistique interne, un AS400 en place depuis quinze ans qui orchestre tout le back-office (stocks, commandes magasins, approvisionnements, facturation). Ce système est fiable, connu des équipes, aligné avec des années de règles métier et représente un investissement historique considérable. Le remplacer aurait impliqué un projet pluriannuel avec des risques élevés sur la continuité opérationnelle. Le vrai sujet n'était donc pas de moderniser le SI mais de faire cohabiter un site e-commerce moderne avec un legacy intouchable, tout en garantissant une synchronisation fiable des stocks et des commandes dans les deux sens, et cela dès le jour du lancement.
Le système AS400 n'exposait aucune API moderne et ne pouvait pas être modifié. Les données étaient accessibles uniquement via des interfaces propriétaires anciennes et des exports par lots de fichiers plats. Il fallait concevoir une couche d'abstraction capable de lire les données du legacy en respectant ses contraintes, de garantir la synchronisation même en cas de pic de charge (lancements, soldes, campagnes marketing), et de gérer les cas limites qui existent toujours entre un site e-commerce et une logistique physique : ruptures de stock imprévues entre deux réservations, retours produits, écarts d'inventaire, commandes annulées en caisse. À cela s'ajoutait une contrainte de fraîcheur : un produit affiché en stock sur le site devait l'être réellement au moment de la commande, sans fenêtre d'incohérence gênante. Sans API exploitable côté legacy, toute l'intelligence devait être portée par la couche d'intégration.
Nous avons conçu une couche API intermédiaire jouant le rôle de traducteur entre la boutique Next.js et l'AS400. Cette couche expose des endpoints REST modernes côté boutique, et communique avec le legacy via ses interfaces propriétaires sans jamais le modifier. Un système de queues RabbitMQ absorbe les pics et garantit qu'aucune commande n'est perdue, même en cas de surcharge temporaire du legacy. Nous avons implémenté une logique de réconciliation nocturne qui compare les états des deux systèmes et alerte les équipes si un écart anormal apparaît. Côté boutique, un système de réservation optimiste permet d'afficher les stocks en temps réel tout en prévenant les doubles ventes. Le retour en caisse a été géré via un canal dédié pour que les annulations magasin remontent automatiquement au site. Enfin, la mise en ligne s'est faite par étapes : d'abord une catégorie pilote, puis extension progressive au catalogue complet, pour détecter d'éventuels problèmes d'intégration avant qu'ils n'affectent l'ensemble du commerce.