Contact
Générateur de sites e-commerce avec CMS de personnalisation (alias MyEasyWeb)

Générateur de sites e-commerce avec CMS de personnalisation (alias MyEasyWeb)

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

2013 - 2016
~3 ans
Senior Software Engineer
Medialeads
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

400+

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 520 000 produits provenant de 800+ 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.

Fonctionnalites du back-office
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
Pages corporates, menus personnalisés et module de téléchargements pour le contenu éditorial libre
SEO avancé : catégories SEO personnalisées, meta-données, sitemap XML et intégration Google Analytics
Internationalisation : 7 langues (FR, EN, ES, DE, IT, NL, PT) et 32 devises avec taux ECB automatisés

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

400+ 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

520K+ produits

Base centralisée de 800+ fournisseurs

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.

Risques identifiés

Complexité multi-tenant

400+ sites pilotés depuis un code base unique avec personnalisation par tenant - un pattern cohérent avec les pratiques SaaS de la décennie 2008-2014.

Hachage mots de passe (état de l'art 2012)

C'était l'état de l'art de l'écosystème PHP du début des années 2010 - reflet des contraintes techniques de l'époque. Les standards modernes (bcrypt, argon2) se sont généralisés depuis.

Concentration moteur de recherche

Instance Solr unique pour la recherche produits - c'était l'état de l'art à l'époque, cohérent avec les pratiques de la décennie 2008-2014, avant que les clusters multi-nœuds et ElasticSearch ne deviennent la norme pour la haute disponibilité.

Schéma de base partagé

Accès inter-applications a une base relationnelle commune - c'était l'état de l'art à l'époque, cohérent avec les architectures pragmatiques de la décennie 2008-2014, avant la généralisation des microservices et des APIs par contexte métier.

Phases de réalisation

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

Phase 1
Fondations et architecture multi-tenant
2012 - 2013
  • J'ai développé l'application principale (myeasyweb.net) avec Symfony 2.4 sous SVN
  • Côté architecture, j'ai conçu et implémenté le multi-tenant : détection de domaine, chargement dynamique de la configuration
  • Pour l'accès aux données, j'ai branché l'application sur la base MySQL European Sourcing existante et le moteur de recherche Apache Solr
  • Sur le back-office revendeur, j'ai construit la gestion de contenu, les statistiques, les devis et la configuration des marges
  • Pour clore la phase, j'ai déployé les premiers sites revendeurs avec leurs noms de domaine personnalisés
Phase 2
Enrichissement fonctionnel et montee en charge
2014 - 2015
  • J'ai bâti le système publicitaire complet : diaporamas, bannières simples, publicités 4 emplacements, skyscrapers, publicités par catégorie
  • Côté navigation, j'ai implémenté les menus personnalisés avec support des liens et des pages intégrées
  • Sur le volet statistiques, j'ai développé des tableaux de bord détaillés : devis, contacts, produits, recherches
  • Pour mesurer l'audience, j'ai intégré le suivi Google Analytics par site revendeur
  • Pour la communication commerciale, j'ai ajouté la gestion et l'envoi de newsletters
  • Côté SEO, j'ai développé les catégories personnalisées, les sitemaps XML et la gestion des meta-données
  • Côté visuel, j'ai porté la plateforme à 3 thèmes avec une couche commune partagée et des polices web personnalisées
Phase 3
Modernisation et nouveau back-office
2016 (T3)
  • J'ai développé bo.myeasyweb.pro en Symfony 3.1 - le nouveau back-office d'administration interne
  • Côté API, j'ai implémenté l'architecture REST (FOSRestBundle + JMSSerializer) pour la gestion centralisée des sites
  • Pour rapprocher les données, j'ai construit le service de synchronisation entre les bases interne et revendeur
  • Sur le volet i18n, j'ai ajouté le système de gestion des traductions (TranslatableListener, Locale, CategoryTranslation)
  • En parallèle, j'ai piloté la migration du contrôle de version de SVN vers GitHub (organisation : medialeads)
Phase 4
Site vitrine et recherche
2016 (T4)
  • J'ai développé le site vitrine myeasyweb.pro avec le micro-framework Silex 2.0
  • Pour la recherche, j'ai intégré ElasticSearch avec une bibliothèque PHP maison (lib/ElasticSearch/)
  • Côté front, j'ai construit les pages de recherche produits avec des templates Twig (Home, Search, Layout)

Acteurs et interactions

Comment j'ai collaboré au sein d'une équipe de 5 développeurs et 1 506 commits

J'ai construit ce projet au sein de Medialeads, une société éditrice de produits pour European Sourcing - le leader européen des bases de données d'objets publicitaires. Avec l'équipe de 5 développeurs réunie autour de 3 dépôts, j'ai porté ~65 % de l'ensemble des commits en tant que développeur lead.

Répartition des commits par développeur

Résultats et livrables

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

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

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 400+ 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.

Pour moi personnellement

En tant que développeur lead responsable de près des deux tiers du code, ce projet a été pour moi une expérience professionnelle marquante :

  • Architecture SaaS multi-tenant : j'ai conçu et maintenu un codebase unique servant 400+ sites de marque indépendants - un pattern que j'applique désormais à chaque projet SaaS.
  • Expertise PHP full-stack : côté framework, j'ai affûté ma maîtrise de l'écosystème Symfony 2.x (Doctrine, Twig, sécurité, traductions, bundles) sous contraintes de production réelles.
  • Intégration de moteurs de recherche : sur des catalogues massifs, j'ai acquis une expérience pratique d'Apache Solr puis d'ElasticSearch pour la recherche full-text de produits.
  • Domaine e-commerce B2B : j'ai acquis une compréhension approfondie de la gestion de catalogues, de la tarification/marges, des workflows de devis, de la synchronisation fournisseurs et du multi-devise.
  • Architecture base de données : au quotidien, j'ai travaillé avec la réplication MySQL maître/esclave, le cache Memcached et des bases de données partagées entre applications.
  • Leadership technique : j'ai coordonné le développement sur 3 dépôts avec 4 autres développeurs en workflow par branches, de SVN à Git. Ce projet a changé ma façon de travailler : je pense désormais chaque nouvelle plateforme en multi-tenant par défaut.

Les lendemains du projet

Évolution et héritage de la plateforme

État actuel

À la fin de mon implication, la plateforme avait atteint une maturité opérationnelle et démontré la viabilité des approches multi-tenant pour les marchés de niche B2B - une architecture durable pensée pour traverser plusieurs générations technologiques.

Mon regard critique

Comment je juge ce projet avec le recul

Points forts
  • Avec le recul, je reste fier de l'architecture multi-tenant : un codebase unique pour 400+ sites avec personnalisations individuelles - un vrai produit SaaS, pas des sites isolés.
  • Côté produit, j'ai livré un back-office revendeur très riche : publicité, stats, SEO, newsletters, marges, téléchargements, pages corporates - bien au-delà d'un simple CMS.
  • Sur l'infra, je revendique des choix de montée en charge réfléchis : réplication MySQL maître/esclave, Memcached, Solr, Amazon SES.
  • Je suis satisfait d'avoir pensé le multi-langue et le multi-devise dès la conception : 7 langues et 32 devises intégrées nativement au modèle de données.
Points d'amélioration
  • Côté couverture de tests, j'ai produit peu de tests automatisés - c'était l'état de l'art à l'époque, cohérent avec les pratiques PHP de la décennie 2008-2014, avant que PHPUnit et la CI ne se généralisent dans les codebases de production.
  • J'ai laissé s'accumuler ~38K lignes de CSS - reflet des contraintes techniques front-end de l'époque, avant la généralisation des design systems et des pré-processeurs modernes.
  • Sur le déploiement, je m'appuyais sur des scripts shell - c'était l'état de l'art à l'époque pour les petites équipes, cohérent avec les pratiques 2008-2014, avant la généralisation des pipelines CI/CD.
Les enseignements durables que ce projet m'a apportés
  1. Le multi-tenant est un multiplicateur de valeur : j'ai vu qu'un codebase unique servant 400+ clients génère un ROI bien supérieur aux développements sur mesure, à condition de bien structurer la couche de personnalisation.
  2. La dette technique croît avec le succès : plus j'ajoutais de clients et de fonctionnalités, plus le risque de dette CSS/tests/sécurité grossissait dès que je ne mesurais pas la qualité en continu.
  3. La documentation opérationnelle : j'ai retenu qu'un wiki avec URLs, commandes et crontabs est aussi critique que la documentation architecturale pour la survie long terme d'un projet.

Architecture et diagrammes

Infrastructure et déploiement
Environnements de développement, recette et production

Parcours associé

Expérience professionnelle liée à cette réalisation

Compétences mobilisées

Compétences techniques et humaines appliquées

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

Vous avez un site builder SaaS a concevoir ?

J'ai cree MyEasyWeb, le site builder SaaS : editeur visuel drag-and-drop, bibliotheque de templates et hebergement integre. Parlons de votre contexte.

Contactez-moi