magmac83 - Fotolia

Leroy Merlin remplace Oracle Endeca par MongoDB pour son catalogue de produits Web

Adeo, le groupe derrière Leroy Merlin, adopte MongoDB Atlas pour ses applications internes. Il a par exemple remplacé Oracle Endeca par la base de données dans le cloud afin de gérer le catalogue produits du site web de Leroy Merlin.

Adeo (propriété de l’Association Familiale Mulliez) se présente comme un réseau de magasins et de franchisés spécialisés dans le bricolage, l’outillage et la décoration. Installé dans 15 pays, ce groupe, qui se présente comme le leader européen du « DIY » (« Do It Yourself ») en Europe (23,1 milliards d’euros en 2018), rassemble plus de 1 300 de points de vente.
Le groupe français n’est autre que la maison-mère de Leroy Merlin. Selon le cabinet OC&C, l’enseigne en question est la quatrième préférée des Français en 2019.
 

Comme bien d’autres acteurs de la distribution, Leroy Merlin propose ses produits via un site Web. Celui-ci rassemble plus de 10 millions de visiteurs uniques moyens par mois et a même atteint un pic à 35 millions de visiteurs. Il s’est classé dixième du classement Médiamétrie réservé aux sites d’e-commerce au troisième trimestre 2019. Le site génère 100 à 350 millions de pages vues par mois. Ces pages sont des fiches qui correspondent à plus de 400 000 produits de 3 700 types différents.

Selon Gaëtan Belbéoc'h, Directeur de l’expérience client digitale chez Adeo, le groupe doit gérer un catalogue complexe de produits. « Se rendre sur nos sites Web n’implique pas le même processus que de comparer deux smartphones. Un client cherche des outils et des matériaux différents qui lui serviront à effectuer un projet de rénovation, par exemple. De même, il effectuera une partie des travaux lui-même et laissera peut-être la main à un artisan sur d’autres », affirme-t-il.

Ce catalogue doit être régulièrement mis à jour sur le site Web de Leroy Merlin. Il dépend de plusieurs familles de produits, ce qui demande une structuration et une indexation régulières.

Or, la synchronisation était lente. « Avant, les éditeurs des filtres et des catégories du catalogue devaient attendre 24 heures avant de voir leurs modifications en production. Un batch de nuit devait s’exécuter pour obtenir le résultat », assure Emmanuel Dieval, Ingénieur Software chez Adeo.

« Avant, les éditeurs des filtres et des catégories du catalogue devaient attendre 24 heures avant de voir leurs modifications en production. Un batch de nuit devait s’exécuter pour obtenir le résultat ».
Emmanuel DevialIngénieur Software, Adeo

La gestion de ces informations était auparavant effectuée à l’aide d’une base de données Oracle Endeca hébergée sur site. Elle était couplée avec des outils maison. Cela générait une forme de complexité, selon Gaëtan Belbeo’ch.

« Nous voulions une base de données open source qui soit très facile à déployer, à modifier et plus facile à maintenir », explique Emmanuel Dieval.

Gaëtan Belbéoc'h a repris le projet il y a un an. « Nous avons d’abord effectué un audit de l’existant avec les métiers et les responsables des sites Web français, espagnols et russes. Nous avons décidé qu’il valait mieux recommencer en faisant des choix rationnels. Nous avons décidé de changer de technologies, de nous mettre directement en mode “as a service” ».

Le groupe Adeo a choisi MongoDB Atlas, la plateforme de bases de données dans le cloud de l’éditeur. Il dispose aujourd’hui de trois clusters en production de cinq nœuds chacun pour la gestion de catalogues produits de Leroy Merlin hébergés sur Google Cloud Platform. Le système de construction de pages du catalogue se nomme OPUS.

Adeo généralise l’utilisation de MongoDB Atlas

Il s’agit d’une des applications qui utilisent la base de données MongoDB au sein de l’entreprise. Leroy Merlin utilise Oracle, Couchbase, PostgreSQL et adopte la database NoSQL MongoDB et son modèle document.

« Dans tout le groupe, nous avons 150 clusters MongoDB Atlas dont 50 en production et 100 clusters sur site. Nous sommes l’un des plus gros clients de MongoDB en France », précise Emmanuel Dieval.

« Utiliser MongoDB Atlas cela nous permet d’être héberger par Google Cloud Platform tout en étant indépendant de Google plutôt que de choisir une base de données Google ou Amazon. Si jamais nous devions changer de cloud, nous restons sur MongoDB. Si l’on doit sortir de MongoDB Atlas, nous pouvons l’héberger sur site. Cela nous laisse de la liberté tout en ayant la facilité du cloud », assure Gaëtan Belbéoc'h.

Ce choix ne fut pas immédiat, comme l’explique l’ingénieur software. « Lors d’une itération précédente du projet, nous avions choisi une autre base de données NoSQL sur site. Nous l’avions associé à Elasticsearch, mais nous avions énormément de problèmes. Par exemple, nous avons lancé une opération pour analyser quelques données et le cluster s’est écroulé en production ».

« Autre exemple, le temps de migration d’une version à une autre prenait trois à quatre mois et autant de temps de travail pour 25 développeurs », prétend Emmanuel Dieval. « La même chose avec MongoDB Atlas dure quelques minutes sans rupture de services ». Rappelons qu'Adeo opérait la fameuse base de données concurrente on-prem et que les changements de version prennent bien évidemment plus de temps avec ce type d'architecture.

« Au moment des mises à jour, nous externalisons la migration de la base de données à ceux qui la connaissent le mieux, c’est-à-dire les développeurs de MongoDB. Cela nous laisse nous focaliser sur les performances et le développement », assure Gaëtan Belbéoc'h. Il note que les développeurs d’Adeo chargé du projet en question n’avaient pas de grandes connaissances du SGBD NoSQL concurrent, tandis que la formation gratuite de MongoDB est simple d’accès, selon lui.

OPUS : le système de gestion de catalogue produits du site Web de Leroy Merlin

Les familles de produits sont concoctées par des experts métiers suivant les résultats des recherches des utilisateurs. Elles permettent de créer les pages correspondantes. Il suffit de naviguer sur le site de Leroy Merlin pour s’en rendre compte. En tapant le nom de la catégorie perceuse dans la barre de recherche, au moins trois familles apparaissent : les produits à usage occasionnel, régulier et intensif. Il y a ensuite des attributs : « filaire, sans-fil et visseuse et perforateur ». Par exemple, les perforateurs ne font pas partie de la famille « usage occasionnel ».

L’équipe gère également les fiches des services et les tutoriels disponibles sur le site d’e-commerce. Dans l’exemple de notre perceuse, cela comprend des vidéos sur l’utilisation de l’engin et des articles de conseil pour bien choisir l’outil et ses accessoires.

Les données unitaires correspondant aux produits, aux services et autres, sont consolidées par une équipe. Les métiers définissent des règles pour autocatégoriser les produits en se basant sur des attributs de ces derniers. « Par exemple, nous avons des modèles de tondeuses. Les métiers vont choisir l’attribut qui définit l’énergie, ici électrique, et il y a une règle de peuplement automatique pour la famille des tondeuses électriques », ajoute Emmanuel Dieval.

« Tout est dynamique. Classifier les produits à la main est synonyme de complexité au vu du nombre de références. Nous avons des milliers de classes à créer et il y aura peut-être besoin de pousser des modèles différents suivants la manière de chercher les produits dans le catalogue », cela démultiplie les possibilités », constate Gaëtan Belbéoc'h.

« À chaque requête, nous devons calculer en temps réel les produits qui répondent à la demande. Pour cela, nous utilisons le pipeline d’agrégation de MongoDB Atlas », déclare Emmanuel Dieval. La commande Aggregations doit traiter les enregistrements de données et renvoyer les résultats calculés en regroupant les valeurs de plusieurs documents.

Dans le cadre de la recherche sur le site et l'application mobile, MongoDB Atlas est couplé avec Elasticsearch. L’équipe n’a pas fait le choix de la fonction full text search incluse dans la plateforme. Elle ne la considère pas encore prête pour une utilisation en production.

Des performances satisfaisantes, mais un coût encore difficile à maîtriser totalement

« En trois mois, la gestion des caractéristiques des produits était en production pour le site Leroy Merlin », assure Emmanuel Dieval. « Pour le calcul de l’ensemble des filtres d’une catégorie de produits et de la liste d’items correspondants, cela prend 60 ms. Auparavant, obtenir le même résultat prenait entre 300 et 600 millisecondes ».

« En trois mois, la gestion des caractéristiques des produits étaient en production pour le site Leroy Merlin ».
Emmanuel DevialIngénieur Software, Adeo

« Notre équipe SRE, composée de trois DevOps, peut maintenant se concentrer sur la baisse des coûts. La scalabilité est autant montante que descendante », se réjouit le responsable expérience client. Toutefois, il faut faire attention à l’option d’autoscalabilité, toujours en version bêta. « Si un batch se lance sans que vous ne le sachiez, les coûts peuvent grimper. Il faut être vigilant. Au fur et à mesure, nous apprenons et nous imposons des limites », avertit Gaëtan Belbéoc'h. 

Le taux de transformation a augmenté, par ailleurs les pages s’affichent plus rapidement grâce au changement de stacks techniques, notamment les API. Les interfaces de programmation sont maintenant trois fois plus rapides.

Adeo n’a pas terminé la migration des 1 500 familles (environ) de produits vers MongoDB Atlas. Cela représente 25 % du trafic du site Leroy Merlin. « Nous migrons progressivement les familles, nous en sommes environ à la moitié. Nous avons opté une approche CI/CD », assure le responsable expérience client digitale. Le système OPUS gère 140 requêtes à la seconde en journée, une soixantaine par seconde la nuit. Cela représente 74 millions de documents MongoDB lus par jour et plusieurs millions de documents sont retravaillés quotidiennement.

Ces familles de produits doivent guider le client comme le ferait un conseiller en magasin en masquant les attributs techniques et en les traduisant en type d’usage à afficher lors de la navigation sur le site Web.

« Nous aimerions que le site Web propose les éléments pour conseiller les clients comme le font nos vendeurs en magasin, ce n’est pas toujours le cas, nous améliorons constamment ce point », assure le directeur de l’expérience client en ligne.

« Autant sur MongoDB Atlas et GCP nous arrivons à avoir les coûts regroupés par projet, mais nous n’arrivons pas à le faire à l’échelle du micro-service ».
Gaëtan Belbéoc'hHead of Digital costumer experience, Adeo

Pour cela, Adeo mélange intelligence humaine, celle des administrateurs des catégories de produits, et la data science. « L’objectif, c’est de traduire l’expertise des métiers en règles humaines, tandis que le ranking – la recommandation – peut être automatisé sur le Big Data et l’analytique », affirme Gaëtan Belbéoc'h.

Toutefois, cette architecture cloud pose encore une question de mesure des coûts, explique le directeur de l’expérience client digitale.

« Aujourd’hui, nous aimons bien faire des microservices. Autant sur MongoDB Atlas et GCP, nous arrivons à avoir les coûts regroupés par projet, mais nous n’arrivons pas à le faire à l’échelle du microservice. C’est encore compliqué de connaître le coût par appel d’API ».

Pour l’instant, l’équipe responsable du projet OPUS utilise Datadog afin de suivre les métriques de performances et de coûts de GCP, de MongoDB et des services par projet.

Pour approfondir sur PaaS