Contact
Travaillons ensemble
MyEasyWeb - Plateforme SaaS E-Commerce en Marque Blanche

MyEasyWeb - Plateforme SaaS E-Commerce en Marque Blanche

Plateforme SaaS multi-tenant generant des sites e-commerce personnalisés pour 40+ revendeurs du marche européen de l'objet publicitaire - 3 applications interconnectées, 108K lignes de code, 7 langues, 32 devises, 1 506 commits sur ~3 ans.

2013 - 2016
~3 ans
Senior Software Engineer (64,6% des commits)
PHP 5.3+Symfony 2.4Symfony 3.1Silex 2.0MySQLDoctrine ORMApache SolrElasticSearchMemcachedTwigAmazon SESjQueryBootstrapApacheREST API (FOS)

Lignes de code

~108,000

PHP, CSS, JS, Twig sur 3 applications

Sites clients

40+

Sites revendeurs actifs avec domaines propres

Langues

7

FR, EN, ES, DE, IT, NL, PT

Devises

32

Taux de change BCE, mise a jour automatique

Présentation du projet

Ce qu'est MyEasyWeb et pourquoi il existe

MyEasyWeb est une plateforme SaaS multi-tenant qui généré des sites e-commerce en marque blanche pour les revendeurs d'objets publicitaires. Developpee par Medialeads pour European Sourcing, leader européen des bases de données d'objets promotionnels, la plateforme permet a chaque revendeur (distributeur) de disposer de son propre site web personnalisé - avec son logo, ses couleurs, son nom de domaine et son catalogue configure - tout en étant alimente automatiquement par la base centralisée European Sourcing de plus de 200 000 produits provenant de centaines de fournisseurs.

Le système se compose de trois applications distinctes : le front-end principal et le back-office revendeur (myeasyweb.net, Symfony 2.4), un back-office d'administration interne pour l'équipe European Sourcing (bo.myeasyweb.pro, Symfony 3.1), et un site vitrine/moteur de recherche produits (myeasyweb.pro, Silex 2.0). Chaque site revendeur est identifié par son nom de domaine, et l'application charge dynamiquement la configuration correspondante (theme, langues, fournisseurs, marges) a chaque requête.

Trois applications interconnectées

myeasyweb.net

Application principale : front catalogue public + back-office revendeur (Symfony 2.4)

bo.myeasyweb.pro

Back-office d'administration interne pour l'équipe European Sourcing (Symfony 3.1)

myeasyweb.pro

Site vitrine et moteur de recherche produits (Silex 2.0)

Fonctionnalites du back-office (21 modules)
Dashboard avec commandes recentes, contacts, produits et statistiques newsletter
Personnalisation complète du site : themes, couleurs, polices, logos, docs d'en-tete, CSS custom
Catalogue produits avec recherche full-text Solr/ElasticSearch et filtrage fournisseurs
Système de devis en ligne avec montants minimaux configurables et notifications email (Amazon SES)
Système publicitaire complet : diaporamas, bannieres, skyscrapers, publicites par categorie
Tableaux de bord statistiques : devis, contacts, consultations produits, recherches

Objectifs, contexte et risques

Vision stratégique et defis de la plateforme

MyEasyWeb a été construit avec un objectif clair de monétisation B2B : offrir a chaque revendeur d'objets publicitaires en Europe un site web clé en main connecté a la base European Sourcing, generant des revenus récurrents et ancrant les revendeurs dans l'écosystème.

Sites clé en main

40+ en ligne

Sites professionnels pour revendeurs sans compétence technique

Multi-langue

7 langues

FR, EN, ES, DE, IT, NL, PT

Multi-devise

32 devises

Taux de change BCE, mise a jour quotidienne

Catalogue produits

200K+ produits

Base centralisée de centaines de fournisseurs

Personnalisation

3 themes

Branding entièrement personnalisable par revendeur

Contexte

Le projet s'inscrit dans un écosystème plus large chez Medialeads/European Sourcing, comprenant la marketplace European Sourcing, l'extranet revendeurs, les outils de traduction, les pipelines d'import de données et d'autres produits B2B. L'infrastructure existante disposait déjà d'une base MySQL centralisée, d'un moteur de recherche Apache Solr et d'un système d'API interne. Le développement a commence sous SVN avant de migrer vers GitHub en 2016.

Enjeux

MyEasyWeb impacte directement le modèle de revenus d'European Sourcing : chaque site revendeur généré du volume d'affaires pour les fournisseurs de la plateforme. Au-dela du chiffre d'affaires, la plateforme sert d'outil de fidélisation - en fournissant un site web professionnel gratuit, European Sourcing ancre ses revendeurs dans son écosystème plutot que chez la concurrence. La couverture internationale (7 langues, 32 devises) reflète une ambition pan-européenne, incluant un site allemand dédié (meineasyweb.de).

Risques identifiés

Complexité multi-tenant

Gerer 40+ sites avec des configurations individuelles sur un seul code base augmente la complexité de maintenance et le risque de déploiement.

Sécurité mots de passe (MD5)

Mots de passe encodes en MD5 sans salage (iterations: 1) - une vulnérabilité connue même pour l'époque (bcrypt était déjà recommande).

Solr point unique de defaillance

La recherche produits depend entièrement de Solr avec des imports cron quotidiens - une panne du moteur de recherche impacte les 40+ sites simultanement.

Couplage base de données

Acces direct a la base partagee europeansourcing depuis plusieurs applications : couplage fort et risques de migration de schéma.

Phases de réalisation

Quatre ans de développement, des fondations a la maturite

Phase 1
Fondations et architecture multi-tenant
2012 - 2013
  • Développement de l'application principale (myeasyweb.net) avec Symfony 2.4 sous SVN
  • Conception et implémentation de l'architecture multi-tenant : detection de domaine, chargement dynamique de configuration
  • Intégration avec la base MySQL European Sourcing existante et le moteur de recherche Apache Solr
  • Construction du back-office revendeur : gestion de contenu, statistiques, devis, configuration des marges
  • Déploiement des premiers sites revendeurs avec noms de domaine personnalisés
Phase 2
Enrichissement fonctionnel et montee en charge
2014 - 2015
  • Construction du système publicitaire complet : diaporamas, bannieres simples, publicites 4 emplacements, skyscrapers, publicites par categorie
  • Implémentation des menus personnalisés avec support de liens et pages intégrées
  • Développement des tableaux de bord statistiques détaillés : devis, contacts, produits, recherches
  • Intégration du suivi Google Analytics par site revendeur
  • Ajout de la gestion et de l'envoi de newsletters
  • Développement des fonctionnalités SEO : categories personnalisees, sitemaps XML, gestion des meta-données
  • Expansion a 3 themes visuels avec couche commune partagee + polices web personnalisees
Phase 3
Modernisation et nouveau back-office
2016 (T3)
  • Développement de bo.myeasyweb.pro avec Symfony 3.1 - nouveau back-office d'administration interne
  • Implémentation d'une architecture API REST (FOSRestBundle + JMSSerializer) pour la gestion centralisée des sites
  • Construction du service de synchronisation entre les bases interne et revendeur
  • Ajout du système de gestion des traductions (TranslatableListener, Locale, CategoryTranslation)
  • Migration du contrôle de version de SVN vers GitHub (organisation : medialeads)
Phase 4
Site vitrine et recherche
2016 (T4)
  • Développement du site vitrine myeasyweb.pro avec le micro-framework Silex 2.0
  • Intégration d'ElasticSearch avec une bibliotheque PHP custom (lib/ElasticSearch/)
  • Construction des pages de recherche produits avec templates Twig (Home, Search, Layout)
  • Sauvegarde des 3 dépôts sur NAS (dernière activité documentée : décembre 2016)
Évolution des fonctionnalités dans le temps
Métriques techniques par application

Acteurs et interactions

Une équipe de 5 développeurs sur 1 506 commits

Le projet a été construit au sein de Medialeads, une société éditrice developpant des produits pour European Sourcing - le leader européen des bases de données d'objets publicitaires. L'équipe de 5 développeurs a travaille sur 3 dépôts, avec Jose Da Costa comme développeur lead responsable de 64,6% de l'ensemble des commits (974 sur 1 506). L'équipe partageait sa documentation via un DokuWiki interne hébergé sur le serveur de recette.

Le modèle de collaboration reposait sur les branches : chaque développeur travaillait sur sa propre branche (visible dans l'historique git : branches `jose`, `fancyweb`, `Amandine-es`). Wamania a joue un role particulier en tant qu'architecte de la modernisation 2016, étant le seul auteur de bo.myeasyweb.pro et myeasyweb.pro. Thomas C. (`fancyweb`) était un contributeur significatif sur l'application principale, tandis qu'Amandine se concentrait sur la localisation (probablement espagnole, vu son alias `Amandine-es`).

Répartition des commits par développeur
Contributions de l'équipe
DéveloppeurRoleCommits%
Jose Da CostaLead Developer97464.6%
WamaniaSenior Developer / Architect36324.1%
Thomas C.Developer1298.6%
AmandineDeveloper / Localization291.9%
Bastien B.Developer110.7%
Total1,506100%

Parties prenantes externes

Au-dela de l'équipe technique, le projet impliquait de multiples acteurs externes : les fournisseurs d'objets publicitaires (dont les catalogues alimentaient la plateforme via l'API European Sourcing), les 40+ revendeurs (utilisateurs directs du back-office MyEasyWeb), OVH (hébergement serveurs dédiés), Amazon Web Services (envoi d'emails via SES) et GitHub (hébergement du code sous l'organisation medialeads).

Résultats et livrables

Ce qui a été accompli sur 4+ ans de développement

Pour la plateforme

Volume de code par langage

Entites en base

67

41 (principal) + 10 (ES) + 10 (BO) + 6 (partage)

Controllers

57

44 (principal) + 13 (BO admin)

Routes/Endpoints API

136

Sur myeasyweb.net uniquement

Commits totaux

1 506

Sur 3 dépôts, 5 développeurs

Themes visuels

3 + common

Entierement personnalisables par revendeur

Fichiers de stats

1 355

Statistiques fournisseurs (2012-2015)

Répartition des entites par base de données
Métriques d'architecture technique
Capacites de la plateforme

Pour l'entreprise

MyEasyWeb a permis a European Sourcing de fidéliser son réseau de 40+ revendeurs en leur offrant un site web professionnel gratuit, personnalisé et directement connecté a la base produits. Chaque site revendeur généré indirectement du volume d'affaires pour les fournisseurs de la plateforme. Les 1 355 fichiers de statistiques fournisseurs collectes entre 2012 et 2015 témoignent d'une activité commerciale soutenue générée par la plateforme.

Pour moi personnellement

En tant que développeur lead responsable de pres des deux tiers du code, ce projet a été une experience professionnelle marquante :

  • Architecture SaaS multi-tenant - conception et maintenance d'un code base unique servant 40+ sites de marque independants, un pattern que j'ai applique a chaque projet SaaS depuis
  • Expertise PHP full-stack - maîtrise approfondie de l'écosystème Symfony 2.x (Doctrine, Twig, sécurité, traductions, bundles) sous contraintes de production reelles
  • Intégration de moteurs de recherche - experience pratique avec Apache Solr et ElasticSearch pour la recherche full-text de produits sur des catalogues massifs
  • Domaine e-commerce B2B - comprehension approfondie de la gestion de catalogues, de la tarification/marges, des workflows de devis, de la synchronisation fournisseurs et de la gestion multi-devise
  • Architecture base de données - travail avec la replication MySQL maitre/esclave, le cache Memcached et les bases de données partagees entre applications
  • Leadership technique - coordination du développement sur 3 dépôts avec 4 autres développeurs en workflow par branches, de SVN a Git

Les lendemains du projet

Évolution et héritage de la plateforme

Suites immediates (2016)

La dernière activité documentée date de décembre 2016 (backup NAS). Le projet était en pleine évolution a ce moment : le nouveau back-office interne (bo.myeasyweb.pro, Symfony 3.1) venait d'etre finalise, le site vitrine (myeasyweb.pro, Silex 2.0) venait d'etre déployé, et la migration de SVN vers GitHub était achevée. La plateforme servait 40+ sites revendeurs actifs a travers l'Europe.

Impact a long terme

MyEasyWeb faisait partie d'un écosystème plus large de 30+ applications interconnectées construites sur pres d'une decennie chez European Sourcing. Les patterns d'architecture multi-tenant, l'approche d'intégration Solr et l'expertise du domaine e-commerce B2B développés pendant ce projet ont directement influence la conception des outils suivants de l'écosystème European Sourcing - notamment l'Extranet (229K lignes), le moteur d'import de données (120+ tables) et la plateforme de synchronisation fournisseurs (Flux).

État actuel

Les fichiers analyses ont été récupérés d'un backup NAS réalisé fin 2016. Le projet a très probablement continue après cette date, mais l'activité post-backup n'est pas accessible depuis ces archives. L'architecture de la plateforme - un code base PHP unique servant des dizaines de sites e-commerce personnalisés - était un modèle SaaS mature et éprouvé qui démontré la viabilité des approches multi-tenant pour les marches de niche B2B.

Regard critique

Analyse honnete avec le recul du temps

Points forts
  • Architecture multi-tenant : un code base pour 40+ sites avec personnalisations individuelles - un vrai produit SaaS, pas des sites isoles
  • Richesse fonctionnelle : le back-office revendeur couvrait pub, stats, SEO, newsletters, marges, telechargements, pages corporates - bien au-dela d'un simple CMS
  • Infrastructure scalable : replication MySQL maitre/esclave, Memcached, Solr, Amazon SES - des choix de montee en charge reflechis
  • Multi-langue et multi-devise natifs : 7 langues et 32 devises intégrés dans le modèle de données des la conception
  • Séparation des responsabilites : 3 applications avec des stacks adaptees (Symfony 2.4, 3.1, Silex 2.0) pour différents cas d'usage
Points d'amélioration
  • Sécurité mots de passe : MD5 sans salage est une vulnérabilité critique, même pour 2012 (bcrypt était déjà la recommandation)
  • Couverture de tests : seulement 4 fichiers de test dans bo.myeasyweb.pro, aucun visible dans myeasyweb.net - quasiment aucun test automatisé pour un projet de cette envergure
  • Dette technique CSS : 38 091 lignes de CSS suggèrent une accumulation sans refactoring, probablement liée a la multiplication des themes
  • Couplage inter-applications : l'accès direct a la base partagee europeansourcing créé un couplage fort et des migrations de schéma risquees
  • Déploiement manuel : un simple script shell (prod.sh) pour la production - pas de CI/CD, pas de tests dans le pipeline, pas de rollback automatique

Leçons clés retenues

  1. Le multi-tenant est un multiplicateur de valeur : un code base unique servant 40+ clients généré un ROI bien superieur aux developpements sur mesure, a condition de bien structurer la couche de personnalisation
  2. La dette technique croit avec le succès : plus le produit attire de clients et de fonctionnalités, plus le risque de dette CSS/tests/sécurité augmente si la qualité n'est pas mesuree en continu
  3. La migration SVN vers Git s'est rentabilisée rapidement grace aux branches par développeur et au workflow collaboratif - les choix de contrôle de version ont un impact durable
  4. La documentation opérationnelle (wiki avec URLs, commandes, crontabs) est aussi critique que la documentation architecturale pour la survie a long terme d'un projet

Architecture et diagrammes

Architecture système
Trois applications interconnectées avec infrastructure partagee
Flux de requête multi-tenant
Traitement d'une requête visiteur sur un domaine revendeur
Modèle de données (bo.myeasyweb.pro)
Diagramme entite-relation de la base d'administration interne
Infrastructure et déploiement
Environnements de développement, recette et production
Modèle de données complet (41 entites - Draw.io)
Cartographie complète des entites du BackBundle myeasyweb.net organisee par domaine : Core, Catalogue, Publicite, Contenu, Statistiques

Parcours associe

Experience professionnelle liee a cette realisation

Competences mobilisees

Competences techniques et humaines appliquees

Galerie d'images

Captures et visuels du projet

Tableau de bord d'administration MyEasyWeb avec gestion des revendeurs, commandes et statistiques
Back-office interne (bo.myeasyweb.pro) - Tableau de bord d'administration revendeurs
Page de connexion et inscription revendeur avec options de personnalisation de marque
Portail d'authentification revendeur - Connexion personnalisée avec domaines dédiés
Panneau de personnalisation marque blanche avec parametres de theme, couleurs, logo et polices pour les sites revendeurs
Panneau de personnalisation - Controle complet de l'identite visuelle par site revendeur
Vitrine catalogue produits avec filtres de recherche, navigation par categorie et listings de produits promotionnels
Vitrine catalogue - Recherche produits multilingue avec filtrage par fournisseur
Brochure marketing de la plateforme SaaS e-commerce marque blanche MyEasyWeb avec points forts
Brochure commerciale - Fonctionnalites de la plateforme et proposition de valeur pour les revendeurs