af83.com

Rue du commerce - PLACE DE MARCHÉ

Refonte de la plateforme de traitement des catalogues marchands

Rueducommerce_clientsaf83

Fondé en 1999 par Patrick Jacquemin, Rue du Commerce est aujourd’hui l’un des sites de e-commerce les plus importants en France. Depuis 2007 une Galerie Marchande permet à des commerçants de bénéficier du trafic et de la notoriété du site. Une plateforme leur permettant de mettre leurs catalogues en ligne a été développée en interne. En 2012, pour conforter sa place de leader, Rue du Commerce a souhaité la refondre pour répondre aux critères de performance et de qualité attendus : pouvoir contenir 20 millions d’offres, charger tous les catalogues en moins de 2 heures et modifier une offre en quelques secondes...

OBJECTIFS

Le système de Rue du Commerce était basé sur une architecture complexe garantissant l’intégrité des données mais présentant des inconvénients majeurs le rendant obsolète : traitement intégral des catalogues et synchronisation des traitements, aboutissant à une durée de traitement quotidienne de 13 heures...

Nous nous sommes donc engagés à développer une nouvelle solution permettant de charger plusieurs millions d’offres et milliers de catalogues en moins de 2 heures, d’éliminer la contrainte de synchronisation et gérer des priorités entre marchands, et enfin de permettre un meilleur suivi et une mise à jour des offres en quasi temps réel.

Le tout sans interruption de service, aspect critique pour la société et tous les marchands de la plateforme, et en garantissant l’intégrité des données en fin de traitement.

MÉTHODOLOGIE ET LIVRABLES

Etant donné la taille et la complexité de la plateforme existante, nous avons adopté l’approche suivant : découper la mission en 3 sous-chantiers indépendants, et venir intégrer de nouveaux composants au cœur de l’existant.

Réduire le temps de traitement global

La mission principale d’af83 était de réduire le temps de traitement, avec un objectif de 2h. Il fallait pour cela que seuls les produits nécessaires soient traités quotidiennement. af83 a donc généralisé à tous les marchands le mode de traitement différentiel développé par l’entreprise pour ses grands comptes. Nous avons également facilité le processus pour les marchands en gérant le versionning à leur place et en leur évitant un changement de format de catalogue.

Pour cela, un système de cache nous a permis de traiter en mode différentiel les ajouts, modification et suppression. Ce nouveau système a été accompagné d’une première version d’un nouveau service de traitement unitaire, permettant aux marchands de mettre à jour produit par produit via une API dédiée.

Cette intervention s’est avérée aussi sure qu’efficace puisqu’elle a réduit le temps de traitement global à 3 heures.

Éliminer la contrainte de synchronisation et gérer des priorités entre marchands

Il s’agissait de s’attaquer au cœur même de l’architecture : initialement les données étaient d’abord écrites sur une copie de la base de données de production. Pour éliminer la contrainte de synchronisation, il fallait que les données soient écrites directement sur la production. Or, une grande partie du système applicatif existant était basé et développé en fonction de cette bascule.

La configuration des briques chargées d’écrire les données a donc été modifiée. Elles peuvent ainsi écrire sur la nouvelle base, traiter des tâches plus petites et faire plusieurs traitements en parallèle. L’ordonnancement des traitements a quant à lui été complètement revu.

Nous avons également choisi un système de file d’attente qui puisse prendre en compte la priorisation des catalogues au niveau de chaque brique. Enfin, l’API a été mise à jour en parallèle pour permettre l’attribution de priorités aux marchands, et d’affiner son fonctionnement : à chaque nouvelle demande un nouveau traitement était directement lancé.

Suivre les traitements et gérer les erreurs

Nous avons opté pour une base de données MongoDB ayant tous les avantages des solutions NoSQL (légèreté, simplicité de la modélisation, rapidité d’écriture et de lecture) tout en permettant d’indexer facilement les données et de faire des requêtes élaborées.

Des scripts, permettant l’enregistrement du statut et de la priorité dans la file d’attente, ont été ajoutés au niveau de chaque brique pour alimenter la base. Une brique a été ajoutée à la fin du traitement pour consolider les données enregistrées. Enfin, une application a été développée pour exposer et afficher dans une interface d’administration les données de traitements via une API RestFull.

Le second objectif était d’optimiser la gestion des erreurs, notamment au niveau du formatage des catalogues des marchands. À l’origine, la validation du format des catalogues et données était réalisée en début de processus, et une erreur sur un seul produit provoquait l’échec du traitement de tout le catalogue. Pour résoudre ce problème, nous avons réécrit ce traitement et ajouté de nouvelles fonctionnalités. Les erreurs sont maintenant intégrées aux données de reporting disponibles via l’API et les messages d’erreurs renvoyés sont plus pertinents pour les marchands et les équipes fonctionnelles.

RÉSULTATS

Cette belle réussite a fait intervenir en étroite collaboration une dizaine de développeurs, chez af83, et les équipes de développement, de support et d’administration système chez rue du Commerce.

Nous avons démontré qu’il est possible d’introduire de nouveaux composants basés sur des technologies modernes et performantes dans un système complexe existant, tout en proposant de nouvelles fonctionnalités aux marchands : traitement en temps réel à tout moment, données de reporting disponible en temps réel et à la demande par API… et ceci sans interruption de la plateforme.

Nos équipes ont donc construit une plateforme performante :

  • 2 secondes pour modifier une offre, 1h30 pour charger 700 catalogues
  • un système scalable capable d’intégrer des millions d’offres
  • des APIs ouvertes pour permettre aux marchands de les exploiter dans leur Système d’Information (en les connectant à leur ERP par exemple)
  • la place de marché a depuis connu une augmentation de 800.000 offres en 6 mois

Aperçus