Castorama — Synchronisation Django, Airtable et Goaland PIM
Refonte d’une app legacy pour synchroniser Django, Airtable et Goaland PIM. 300 000 produits, 200 utilisateurs, CI/CD, Celery/Redis, PostgreSQL.
Contexte — Castorama, acteur majeur du retail bricolage, gère un catalogue de 300 000 produits. Une application legacy assurait la circulation des données entre un back‑office Django, Airtable (collaboration) et le PIM Goaland, avec des imports CSV issus de SAP. Environ 200 utilisateurs interagissent quotidiennement avec ces flux pour alimenter et fiabiliser l’information produit.
Défi — La dette technique accumulée rendait la synchronisation fragile et peu observable : schémas de données hétérogènes, relations complexes, traçabilité limitée, opérations manuelles récurrentes et déploiements risqués. L’objectif était d’industrialiser les échanges, d’améliorer l’intégrité des données et d’offrir une visibilité temps réel aux équipes métier et IT, sans interrompre l’activité.
Solution
- Normalisation des modèles de données et définition de nouveaux schémas Airtable.
- Moteur de synchronisation asynchrone avec Celery (3 files) et broker Redis, base PostgreSQL.
- Pipeline d’ingestion CSV depuis SAP avec contrôles, mapping et gestion des relations.
- Interface utilisateur sous Django pour le suivi des statuts et actions sur les enregistrements.
- Automatisations Airtable pour orchestrer les workflows métier.
- Qualité et livraison : tests unitaires (pytest) et E2E, CI/CD GitLab vers Upsun, Docker, monitoring via ElasticSearch.
Résultats — La plateforme gère 300 000 références et 200 utilisateurs quotidiens avec des parcours unifiés et une observabilité renforcée (journaux, métriques, statuts explicites). L’orchestration asynchrone améliore la résilience lors des pics, et le pipeline d’import réduit les manipulations manuelles. Les déploiements sont fiabilisés via CI/CD. Des chiffres avant/après (temps d’import CSV, latence de synchro, taux d’erreurs, incidents et tickets) peuvent être publiés pour objectiver les gains.