
Software Engineer · développeur PHP Zend Framework
European Sourcing Group







European Sourcing Group est une entreprise familiale fondée par Bernard et Christine Lavigne, spécialisée dans la plus grande base de données européenne d'objets publicitaires et de textile promotionnel. Basée initialement à Bègles puis à Pessac (Avenue de Canteranne), l'entreprise opère dans un environnement PME agile et connecté fournisseurs et distributeurs du marché publicitaire européen. Le groupe comprend également Medialeads, son bras technologique, et diffuse ses données produits à travers plusieurs plateformes B2B et B2C. L'hébergement est assuré par OVH.
520 000+
Produits
3 670 000+
Variations
20 700+
Revendeurs
71 000+
Clients
800+
Fournisseurs
1 800+
Marques
2 000+
Bases MySQL
7
Langues
35
Collaborateurs
La plateforme European Sourcing est un écosystème complet compose de plusieurs briques interconnectées : un front office (catalogue produits public), un back office (administration interne), un extranet fournisseurs (dépôt de produits et assets), un système de devis et briefs en ligne, des mini-sites personnalisables pour chaque revendeur, et une gestion de contenu multi-langue. L'ensemble repose sur plus de 2 000 bases MySQL précalculées pour optimiser les performances des recherches produits.
Front Office
Catalogue produits public
Back Office
Administration interne
Extranet fournisseurs
Dépôt produits et assets
Devis & Briefs
Système en ligne
Mini-sites
Personnalisables par revendeur
Multi-langue
Gestion de contenu 7 langues
9.1M
Lignes de code
7 510+
Fichiers PHP
4 510+
Fichiers JS
910+
Contrôleurs
2 220+
Vues / Templates
Au sein d'une équipe de 5 à 6 développeurs, j'étais positionné comme développeur PHP Zend Framework avec un périmètre d'action large. Mon travail couvrait à la fois le développement des plateformes web (portail de recherche, extranets, générateur de sites) et l'administration des serveurs Linux.
Je travaillais en collaboration directe avec les équipes commerciales, les fournisseurs, le design et la direction technique, ce qui me donnait une vision transversale du produit.
L'environnement PME me confiait une autonomie importante : de la conception à la mise en production, en passant par la modélisation des bases de données et la rédaction de toute la documentation projet. À l'époque, nous utilisions SVN (Subversion) pour la gestion de version et nous gérions plusieurs environnements (développement, recette, production).
- Conception et développement de moteurs de recherche produits avec Apache Solr et MySQL, indexant la plus grande base de données européenne d'objets publicitaires
- Développement d'extranets ERP et PIM sur mesure avec intégration des flux fournisseurs via MyEasyImport et réconciliation de formats hétérogènes
- Construction du générateur de sites e-commerce MyEasyWeb avec Zend Framework 1.7 et le framework MVC SQLi
- Architecture logicielle basée sur le pattern MVC, la conception orientée objet et les design patterns (Factory, Singleton, Observer, Strategy) appliqués au framework Zend
- Modélisation des bases de données avec MySQL Workbench (.mwb) : conception des schémas relationnels, optimisation des index, gestion de plus de 2 000 bases MySQL distinctes
- Mise en place de la virtualisation des serveurs avec Proxmox VE et OpenVZ, permettant l'isolation des environnements et la gestion des conteneurs de production
- Administration de l'infrastructure serveurs Linux (Debian/Ubuntu) : configuration Apache, sécurisation iptables, déploiement, sauvegardes. Hébergement chez Systonic puis migration vers OVH
- Mise en place de stratégies SEM/SEO pour maximiser la visibilité des plateformes clients sur les moteurs de recherche
- Développement d'outils de classification automatique de produits (couleurs, textes, catégories) basés sur du Machine Learning et du NLP - une approche en avance sur son temps pour l'époque
- Création d'outils de traduction multilingues (7 langues) avec gestion des fichiers .po et .mo via un back-office dédié
- Conception d'API REST sécurisées pour la synchronisation de données produits avec les partenaires externes
- Rédaction de l'ensemble de la documentation projet : propositions techniques et commerciales, cahiers des charges, spécifications fonctionnelles et techniques, cahiers de recette, référentiels d'exigences, guides de déploiement et procédures d'exploitation
- Indexer et rendre accessible la plus grande base de données européenne d'objets publicitaires via des moteurs de recherche performants
- Automatiser l'import et la réconciliation des flux produits de dizaines de fournisseurs aux formats hétérogènes
- Permettre aux revendeurs de créer leur boutique en ligne en quelques clics via MyEasyWeb
- Garantir la disponibilité et la performance d'une infrastructure gérant plus de 2 000 bases de données MySQL
Projets principaux
Portail de recherche B2B d'objets publicitaires pour les revendeurs européens. Moteur de recherche Apache Solr indexant des centaines de milliers de produits avec facettage avancé (catégories, prix, couleurs, marques). Interface de recherche optimisée pour la découverte produit et la génération de devis.
Marketplace B2C d'objets publicitaires a destination des clients finaux. La plateforme connecté les acheteurs directement aux revendeurs partenaires, avec gestion du catalogue, des commandes et de la mise en relation commerciale.
Générateur de sites e-commerce clé en main pour les revendeurs d'objets publicitaires. Chaque revendeur pouvait créer rapidement sa propre boutique en ligne personnalisée, connectée au catalogue produit central. Construit avec Zend Framework 1.7 et le framework MVC SQLi.
Extranet ERP et PIM sur mesure pour la gestion centralisée des produits, fournisseurs, commandes, stocks, clients et revendeurs. Back-office complet avec système d'import sophistiqué (MyEasyImport) capable de réconcilier les flux de dizaines de fournisseurs aux formats différents.
Portail communautaire dédié aux salons professionnels du secteur de l'objet publicitaire. Plateforme de mise en relation entre exposants, visiteurs et organisateurs, avec gestion des événements, des stands et des plannings.
Déploiement et personnalisation de nombreuses boutiques en ligne B2C sous PrestaShop pour les revendeurs d'objets publicitaires, ainsi que des sites vitrines et institutionnels sous WordPress. Chaque boutique est connectée au catalogue produit central.
Boutique en ligne B2C destinée aux revendeurs d'objets publicitaires souhaitant vendre directement aux clients finaux. Catalogue produit connecté au système central avec gestion des commandes et de la logistique.
MyEasyWeb etait une plateforme SaaS de generation de sites e-commerce en marque blanche, bien avant que des solutions comme Shopify ou Wix ne democratisent le concept. Chaque revendeur d'objets publicitaires pouvait, en quelques clics, selectionner ses fournisseurs, choisir parmi leurs catalogues de produits, et generer instantanement sa propre boutique en ligne personnalisee - sans aucune competence technique.
Ce qui rendait MyEasyWeb unique :
- Selection des fournisseurs et catalogues en mode "drag & pick" : le revendeur cochait les fournisseurs souhaites et leurs produits apparaissaient automatiquement dans sa boutique
- Personnalisation CMS complete : couleurs, logos, mise en page, polices, images d'en-tete, pages corporates - tout etait configurable par le revendeur via un back-office intuitif
- Systeme de theming avance construit avec des selecteurs jQuery et du CSS dynamique - un defi technique majeur a l'epoque, bien avant les CSS custom properties et les design tokens
- Architecture multi-tenant : un seul codebase Symfony servait 40+ sites avec chacun son propre nom de domaine, sa charte graphique et sa selection de fournisseurs
- 7 langues, 32 devises (taux BCE), gestion des marges par revendeur, systeme publicitaire integre (sliders, bannieres), devis en ligne, SEO automatise
108K
Lignes de code
40+
Sites revendeurs
200K+
Produits catalogue
1 506
Commits
Ce projet a represente un effort considerable et une complexite technique rare pour l'epoque. Le systeme de personnalisation visuelle en temps reel, entierement construit avec des selecteurs jQuery, etait une prouesse d'ingenierie front-end bien avant l'avenement des frameworks modernes.
Au-dela du code, le vrai defi chez European Sourcing residait dans la modelisation et l'implementation de regles de gestion d'une complexite rare pour une PME. Chaque fonctionnalite du systeme devait composer avec des dizaines de cas particuliers lies au modele economique B2B multi-pays. Voici quelques exemples parmi tant d'autres :
- Jusqu'a 50+ grilles tarifaires degressives par produit (prix fixe, prix variable, prix reduit) avec des formules dynamiques de calcul
- Prix totalement differents selon le pays de connexion : un meme produit affichait des tarifs distincts pour un revendeur francais, allemand ou espagnol - systeme siege/filiales par fournisseur (Mid Ocean Brands : 10 entites, Plastoria : 4 pays, BIC Graphic : variantes par pays)
- Marges specifiques par revendeur connecte : chaque revendeur appliquait ses propres coefficients sur les prix fournisseur, avec 32 devises et taux BCE automatiques
- Des produits avec des milliers de declinaisons : couleurs, tailles, matieres, longueurs de manches (T-shirts), types de colle, grammages - certains produits depassaient 15 000 combinaisons possibles
- 32+ champs par fiche produit/variante avec tables de couleur, taille et matiere distinctes - chaque variante portant ses propres prix, stocks et images
- 36 champs par option de marquage : technique (serigraphie, broderie, gravure, impression...), position sur le produit, dimensions, nombre de couleurs, nombre de logos, prix de base, frais divers (BAT, livraison, emballage)
- Calculs de colissage en cascade : nombre de pieces par boite, boites par carton, cartons par palette - avec des regles differentes par fournisseur, par produit et par variante
- Frais variables par fournisseur : BAT (bon a tirer), frais de livraison, emballage, frais de cliche - chaque fournisseur imposant ses propres grilles et conditions commerciales
- 37 connecteurs fournisseurs distincts (FTP, HTTP, API REST) avec des formats heterogenes a reconcilier quotidiennement - chaque fournisseur ayant potentiellement plusieurs filiales europeennes avec catalogues et tarifs specifiques
- Calcul du produit cartesien de toutes les variantes disponibles (couleur x taille x matiere x manche x grammage) pour generer et afficher dynamiquement dans l'IHM l'ensemble des declinaisons possibles - certains produits atteignaient 15 000+ combinaisons
- Chaque combinaison portait ses propres prix degressifs, son stock, ses images, ses options de marquage et ses frais - le tout precalcule en batch et stocke dans des tables denomalisees pour maintenir des temps de reponse acceptables
Cette complexite metier a forge une rigueur de modelisation et une discipline d'architecture logicielle qui sont devenues des reflexes permanents. Traduire un modele economique aussi tortueux en code maintenable, performant et fiable - le tout reparti sur 2 000+ bases MySQL - representait un defi d'ingenierie quotidien.
Le moteur de recherche produit a connu quatre générations technologiques successives, chacune répondant aux limites de la précédente face a la croissance du catalogue et aux exigences de performance.
Recherche initiale basee sur des requêtes SQL LIKE et FULLTEXT sur les tables produits MySQL. Fonctionnel pour quelques milliers de références, mais les temps de reponse se dégradaient rapidement avec la croissance du catalogue. Pas de facettage, pas de tolerance aux fautes de frappe, pertinence limitee au matching exact.
Migration vers PostgreSQL et son moteur de recherche plein texte natif (tsvector / tsquery). Apport du stemming, de la ponderation par champs (titre, description, marque) et des operateurs booleens. Un gain de pertinence notable, mais les performances de facettage sur des centaines de milliers de produits restaient insuffisantes.
Adoption d'Apache Solr comme moteur de recherche dédié. Indexation de centaines de milliers de produits avec facettage avance (categories, couleurs, prix, fournisseurs), suggestions de recherche, correction orthographique et scoring de pertinence personnalisé. C'est cette génération qui a permis a la plateforme de passer a l'échelle sur le marché europeen.
Evolution vers Elasticsearch pour sa scalabilité horizontale, son API REST native et ses capacités d'analyse en temps réel. Mise en place de recherche multi-langue (7 langues), d'analyseurs linguistiques dédiés, de synonymes métier et d'aggregations complexes pour le filtrage dynamique du catalogue.
Langages & Frameworks
Bases de données & Recherche
Serveurs & Virtualisation
Outils & Modélisation
Réseau & Sécurité
Services
L'infrastructure European Sourcing representait un volume de données colossal pour une PME : plus de 2 000 bases de données MySQL distinctes, des centaines de milliers de fiches produits, des millions de lignes de données réparties sur des dizaines de tables interconnectées. Chaque base était précalculée pour servir les requêtes de recherche en temps réel.
A cette échelle, la moindre erreur de conception était fatale. Un index manquant sur une table de 500 000 lignes pouvait transformer une requete de 50 ms en timeout de 30 secondes. On passait des heures sur EXPLAIN ANALYZE, a etudier chaque plan d'exécution, chaque full table scan, chaque filesort. Les formes normales (1NF, 2NF, 3NF, BCNF) n'étaient pas un sujet academique - c'était une nécessité quotidienne pour eviter la redundance et les anomalies de mise a jour sur des volumes aussi importants.
L'optimisation était permanente : stratégies d'indexation composites, précalcul de tables de jointure, denormalisation ciblee pour les requêtes les plus critiques, partitionnement de tables, tuning des parametres MySQL (buffer pool, query cache, sort buffer, join buffer). Les batchs de recalcul de stocks, prix et promotions tournaient plusieurs heures chaque nuit - chaque seconde gagnee par requete se multipliait par des millions d'exécutions.
Ce contexte imposait une maîtrise complète des design patterns (Factory, Singleton, Observer, Strategy, Repository), des principes SOLID, de la modélisation UML et de la conception orientée objet appliquée au framework Zend. Pas de raccourcis possibles quand chaque choix d'architecture impacte directement les performances en production.
Le tout dans un environnement PME qui me donnait une liberté totale sur les choix techniques et une maîtrise de bout en bout : de la modélisation de la base de données a l'administration des serveurs Linux, du code applicatif au tuning des requêtes SQL. Cette autonomie complete, sur un système a cette échelle, a été l'expérience la plus formatrice de ma carrière.
À l'époque, avant l'ère du CI/CD, notre chaîne de déploiement reposait sur SVN et des scripts Bash. Le workflow était : commit SVN (subversion.europeansourcing.com) -> script de déploiement (.sh) -> export SVN vers /var/www/esv3 -> Apache sert la production. Chaque développeur (jose, vincent, mathieu, fabien, thomas) commitait sur le dépôt central, et les scripts de déploiement automatisaient l'export et la mise en ligne.
Dans un écosystème concurrentiel et prive comme celui de l'objet publicitaire, imposer un format d'échange normalisé entre fournisseurs et revendeurs est un defi de taille. Chaque fournisseur possede son propre format de catalogue (CSV, XML, bases propriétaires), ses propres nomenclatures et ses propres règles métier.
Nous avons consacre un travail considerable a la conception d'un format normalisé d'export fournisseur et d'import revendeur. L'objectif était de créer un standard commun permettant a chaque acteur de la chaîne de transmettre et recevoir les données produits de manière uniforme - références, descriptions, prix, visuels, stocks.
Malgre nos efforts, nous n'avons jamais réussi a imposer ce format de standardisation. La position dominante de certains fournisseurs, qui n'avaient aucun interet a adapter leurs exports, a rendu l'adoption impossible. Le pivot a été de construire un back-office dédié (extranet fournisseurs) permettant a chaque fournisseur de deposer ses produits et assets dans son propre format, avec un système d'API standardisé cote plateforme pour réconcilier et normaliser les données en interne.
Cette expérience m'a appris que dans un marché prive, la standardisation ne peut pas etre imposee par un seul acteur - elle doit etre portee collectivement ou contournee par des solutions d'adaptation intelligentes.
European Sourcing a été mon véritable baptême du feu en tant que développeur.
L'environnement PME familiale m'a donné une autonomie et une responsabilité que je n'aurais jamais eue dans une grande structure. Chaque développeur avait un impact direct sur le produit.
J'y ai découvert la puissance d'un moteur de recherche bien conçu pour connecter fournisseurs et distributeurs, et la complexité de gérer plus de 2 000 bases de données MySQL en parallèle.
Les exécutions de batchs de plusieurs heures pour recalculer stocks, prix et promotions m'ont appris la patience et la rigueur de l'optimisation à grande échelle.
La proximité avec les équipes commerciales et les fournisseurs m'a aussi donné une vision produit de bout en bout, bien au-delà du simple code.
17 Compétence technique · 7 Compétence humaine
Compétence technique
Dev full-stack PHP/Zend Framework 1.7 avec jQuery. Plateformes B2B European Sourcing, extranets ERP/PIM, générateur de sites MyEasyWeb, boutiques PrestaShop.
Contribution a l'architecture d'un écosystème de 15+ sous-applications interconnectées (front, back, extranet, mini-sites, devis, traduction).
Déploiements SVN avec scripts Bash sur serveurs Linux, gestion des environnements dev/recette/production.
Gestion de 2 000+ bases MySQL précalculées, modélisation avec MySQL Workbench, optimisation des index et batchs de recalcul stocks/prix.
Mise en place de Proxmox VE et OpenVZ pour la virtualisation et l'isolation des environnements de production.
Scripts Bash de déploiement SVN, batchs PHP de recalcul de stocks, prix et promotions exécutant plusieurs heures.
Configuration réseau des serveurs dédiés, migration de l'hébergement Systonic vers OVH, gestion DNS et Apache.
Sécurisation iptables des serveurs Linux, configuration Apache, gestion des accès et des certificats.
Administration serveurs Linux Debian/Ubuntu, configuration Apache, sauvegardes et procédures d'exploitation.
Déploiements SVN vers production, procédures de mise en ligne validées, sauvegardes régulières des 2 000+ bases.
Surveillance des performances du moteur Apache Solr et des batchs de calcul multi-heures.
Pattern MVC Zend Framework et framework SQLi, conception orientée objet appliquée aux plateformes B2B.
Application des design patterns Factory, Singleton, Observer et Strategy dans le contexte Zend Framework.
Modelisation UML des plateformes, diagrammes de classes et de sequences pour les spécifications techniques détaillées.
Conception d'API REST sécurisée pour la synchronisation de données produits avec les partenaires et fournisseurs externes.
Sécurisation des applications web PHP, protection contre les injections SQL et XSS sur les plateformes exposées aux fournisseurs.
Veille active sur PHP, Zend Framework, Apache Solr, virtualisation Proxmox et les pratiques de l'écosystème e-commerce.
Compétence humaine
Coordination des livrables techniques au sein d'une équipe de 5-6 développeurs, suivi des tâches et estimations de charge.
Résolution de problématiques de performance sur 2 000+ bases MySQL et optimisation du moteur de recherche Apache Solr.
Collaboration directe avec les équipes commerciales, les fournisseurs d'objets publicitaires, le design et la direction technique.
Montée en compétences rapide sur Zend Framework, Apache Solr, Proxmox VE et l'écosystème e-commerce B2B en autonomie.
Interface avec les fournisseurs d'objets publicitaires et les revendeurs partenaires pour les flux de données produits.
Rédaction complète de propositions techniques et commerciales, cahiers des charges, spécifications fonctionnelles et techniques, cahiers de recette, guides de déploiement.
Support utilisateurs internes et formation sur les outils d'administration des extranets et du back-office produit.
European Sourcing - Écosystème B2B
Écosystème de 15+ sous-applications interconnectées pour le sourcing d'objets publicitaires
Extranet - Plateforme d'administration B2B
Extranet ERP/PIM sur mesure pour la gestion des produits, fournisseurs et commandes
EuropeanTool - Plateforme B2B
Plateforme de 30+ applications interconnectees, 250+ fournisseurs, 50+ revendeurs
Moteur de recherche objets publicitaires
Moteur de recherche vertical avec Apache Solr, 22 000+ mots indexes
Portail communautaire salons professionnels
Portails WordPress pour les salons professionnels du secteur, 35+ sites