
Software Engineer · desenvolvedor PHP Zend Framework
European Sourcing Group







O European Sourcing Group e uma empresa familiar fundada por Bernard e Christine Lavigne, operando a maior base de dados europeia de produtos promocionais e têxteis. Sediada inicialmente em Begles e depois em Pessac (Avenue de Canteranne), a empresa opera em um ambiente PME ágil conectando fornecedores e distribuidores do mercado promocional europeu. O grupo também inclui a Medialeads, seu braco tecnológico, e distribui dados de produtos atraves de várias plataformas B2B e B2C. A hospedagem e fornecida pela OVH.
520 000+
Produtos
3 670 000+
Variações
20 700+
Revendedores
71 000+
Clientes
800+
Fornecedores
1 800+
Marcas
2 000+
Bancos MySQL
7
Idiomas
35
Colaboradores
A plataforma European Sourcing e um ecossistema completo composto por vários componentes interconectados: um front office (catálogo público de produtos), um back office (administração interna), um extranet de fornecedores (upload de produtos e assets), um sistema de orçamentos e briefs online, mini-sites personalizaveis para cada revendedor, e gestão de conteúdo multi-idioma. Todo o sistema depende de mais de 2.000 bancos de dados MySQL pre-calculados para otimizar o desempenho das buscas de produtos.
Front Office
Catálogo público
Back Office
Administração interna
Extranet fornecedores
Upload de produtos
Orçamentos & Briefs
Sistema online
Mini-sites
Personalizáveis por revendedor
Multi-idioma
Gestão de conteúdo 7 idiomas
9.1M
Linhas de código
7 510+
Arquivos PHP
4 510+
Arquivos JS
910+
Controladores
2 220+
Views / Templates
Em uma equipe de 5 a 6 desenvolvedores, eu era posicionado como desenvolvedor PHP Zend Framework com um escopo amplo. Meu trabalho cobria tanto o desenvolvimento de plataformas web (portal de busca, extranets, gerador de sites) quanto a administração de servidores Linux.
Trabalhava em colaboração direta com as equipes comerciais, fornecedores, design e direção técnica, o que me dava uma visão transversal do produto.
O ambiente PME me concedia autonomia significativa: da concepção ao deploy em produção, incluindo a modelagem de bancos de dados e a redação de toda a documentação do projeto. Na epoca, usavamos SVN (Subversion) para controle de versão e gerenciavamos vários ambientes (desenvolvimento, homologação, produção).
- Design e desenvolvimento de mecanismos de busca de produtos com Apache Solr e MySQL, indexando a maior base de dados europeia de produtos promocionais
- Desenvolvimento de extranets ERP e PIM personalizados com integração de feeds de fornecedores via MyEasyImport e reconciliação de formatos heterogeneos
- Construção do gerador de sites de e-commerce MyEasyWeb com Zend Framework 1.7 e o framework MVC SQLi
- Arquitetura de software baseada no padrão MVC, design orientado a objetos e design patterns (Factory, Singleton, Observer, Strategy) aplicados ao framework Zend
- Modelagem de bancos de dados com MySQL Workbench (.mwb): design de esquemas relacionais, otimização de índices, gestão de mais de 2.000 bancos MySQL distintos
- Configuração de virtualização de servidores com Proxmox VE e OpenVZ, permitindo isolamento de ambientes e gestão de containers de produção
- Administração da infraestrutura de servidores Linux (Debian/Ubuntu): configuração Apache, segurança iptables, deploy, backups. Hospedagem na Systonic, depois migração para OVH
- Implementação de estratégias SEM/SEO para maximizar a visibilidade das plataformas nos mecanismos de busca
- Desenvolvimento de ferramentas de classificação automática de produtos (cores, textos, categorias) baseadas em Machine Learning e NLP - uma abordagem a frente de seu tempo
- Criação de ferramentas de tradução multilinguais (7 idiomas) com gestão de arquivos .po e .mo via back-office dedicado
- Concepção de APIs REST seguras para sincronização de dados de produtos com parceiros externos
- Redação de toda a documentação do projeto: propostas técnicas, documentos de requisitos, especificações funcionais e técnicas, planos de teste de aceitação, rastreabilidade de requisitos, guias de deploy e procedimentos operacionais
- Indexar e tornar acessível a maior base de dados europeia de produtos promocionais atraves de mecanismos de busca de alto desempenho
- Automatizar a importação e reconciliação de feeds de produtos de dezenas de fornecedores com formatos heterogeneos
- Permitir que revendedores criem sua loja online em poucos cliques via MyEasyWeb
- Garantir disponibilidade e desempenho de uma infraestrutura gerenciando mais de 2.000 bancos de dados MySQL
Projetos principais
Portal de busca B2B de produtos promocionais para revendedores europeus. Mecanismo de busca Apache Solr indexando centenas de milhares de produtos com facetagem avancada (categorias, preços, cores, marcas). Interface de busca otimizada para descoberta de produtos e geração de orçamentos.
Marketplace B2C de produtos promocionais para clientes finais. A plataforma conecta compradores diretamente com revendedores parceiros, com gestão de catálogo, pedidos e intermediação comercial.
Gerador de sites de e-commerce pronto para uso para revendedores de produtos promocionais. Cada revendedor podia criar rapidamente sua própria loja online personalizada, conectada ao catálogo central de produtos. Construído com Zend Framework 1.7 e o framework MVC SQLi.
Extranet ERP e PIM sob medida para gestão centralizada de produtos, fornecedores, pedidos, estoques, clientes e revendedores. Back-office completo com sistema de importação sofisticado (MyEasyImport) capaz de reconciliar fluxos de dezenas de fornecedores com formatos diferentes.
Portal comunitário dedicado a feiras profissionais do setor de produtos promocionais. Plataforma conectando expositores, visitantes e organizadores, com gestão de eventos, alocação de estandes e agendamento.
Implantação e personalização de diversas lojas online B2C com PrestaShop para revendedores de produtos promocionais, além de sites institucionais e vitrines construídos com WordPress. Cada loja e conectada ao catálogo central de produtos.
Loja online B2C para revendedores de produtos promocionais que queriam vender diretamente para clientes finais. Catálogo de produtos conectado ao sistema central com gestão de pedidos e logística.
MyEasyWeb era uma plataforma SaaS de geracao de sites e-commerce em marca branca, muito antes de solucoes como Shopify ou Wix popularizarem o conceito. Cada revendedor de produtos promocionais podia, em poucos cliques, selecionar seus fornecedores, escolher entre seus catalogos de produtos e gerar instantaneamente sua propria loja online personalizada - sem nenhuma competencia tecnica.
O que tornava o MyEasyWeb unico:
- Selecao de fornecedores e catalogos em modo "drag & pick": o revendedor marcava os fornecedores desejados e seus produtos apareciam automaticamente em sua loja
- Personalizacao CMS completa: cores, logos, layout, fontes, imagens de cabecalho, paginas corporativas - tudo era configuravel pelo revendedor via um back-office intuitivo
- Sistema de temas avancado construido com seletores jQuery e CSS dinamico - um grande desafio tecnico na epoca, bem antes das CSS custom properties e design tokens
- Arquitetura multi-tenant: um unico codebase Symfony servia 40+ sites, cada um com seu proprio dominio, identidade visual e selecao de fornecedores
- 7 idiomas, 32 moedas (taxas BCE), gestao de margens por revendedor, sistema publicitario integrado (sliders, banners), orcamentos online, SEO automatizado
108K
Linhas de código
40+
Sites revendedores
200K+
Produtos catalogo
1 506
Commits
Este projeto representou um esforco consideravel e uma complexidade tecnica rara para a epoca. O sistema de personalizacao visual em tempo real, inteiramente construido com seletores jQuery, foi uma proeza de engenharia front-end bem antes do surgimento dos frameworks modernos.
Alem do codigo, o verdadeiro desafio na European Sourcing estava na modelagem e implementacao de regras de negocio de uma complexidade rara para uma PME. Cada funcionalidade do sistema precisava lidar com dezenas de casos especiais ligados ao modelo economico B2B multi-pais. Aqui estao alguns exemplos entre muitos outros:
- Ate 50+ grades tarifarias degressivas por produto (preco fixo, variavel, reduzido) com formulas dinamicas de calculo
- Precos totalmente diferentes por pais de conexao: um mesmo produto exibia tarifas distintas para um revendedor frances, alemao ou espanhol - sistema sede/filiais por fornecedor (Mid Ocean Brands: 10 entidades, Plastoria: 4 paises, BIC Graphic: variantes por pais)
- Margens especificas por revendedor conectado: cada revendedor aplicava seus proprios coeficientes, com 32 moedas e taxas BCE automaticas
- Produtos com milhares de variacoes: cores, tamanhos, materiais, comprimentos de manga (camisetas), tipos de cola, gramaturas - alguns produtos ultrapassavam 15 000 combinacoes possiveis
- 32+ campos por ficha produto/variante com tabelas de cor, tamanho e material distintas - cada variante com seus proprios precos, estoques e imagens
- 36 campos por opcao de marcacao: tecnica (serigrafia, bordado, gravacao, impressao...), posicao no produto, dimensoes, numero de cores, numero de logos, preco base, taxas diversas
- Calculos de embalagem em cascata: pecas por caixa, caixas por caixa maior, caixas por palete - com regras diferentes por fornecedor, produto e variante
- Taxas variaveis por fornecedor: BAT (prova), frete, embalagem, taxas de cliche - cada fornecedor com suas proprias grades e condicoes comerciais
- 37 conectores de fornecedores distintos (FTP, HTTP, API REST) com formatos heterogeneos reconciliados diariamente - cada fornecedor com potenciais filiais europeias com catalogos e tarifas especificas
- Calculo do produto cartesiano de todas as variantes disponiveis (cor x tamanho x material x manga x gramatura) para gerar e exibir dinamicamente na interface todas as combinacoes possiveis - alguns produtos atingiam 15 000+ combinacoes
- Cada combinacao carregava seus proprios precos degressivos, estoque, imagens, opcoes de marcacao e taxas - tudo pre-calculado em batch e armazenado em tabelas desnormalizadas para manter tempos de resposta aceitaveis
Essa complexidade de negocio forjou um rigor de modelagem e uma disciplina de arquitetura de software que se tornaram reflexos permanentes. Traduzir um modelo economico tao intrincado em codigo mantivel, performante e confiavel - tudo em 2 000+ bancos MySQL - representava um desafio de engenharia diario.
O mecanismo de busca de produtos passou por quatro gerações tecnológicas sucessivas, cada uma respondendo aos limites da anterior conforme o catálogo crescia e as exigencias de desempenho aumentavam.
Busca inicial baseada em consultas SQL LIKE e FULLTEXT nas tabelas de produtos MySQL. Funcional para alguns milhares de referências, mas os tempos de resposta se degradavam rapidamente com o crescimento do catálogo. Sem facetagem, sem tolerância a erros de digitação, relevância limitada a correspondência exata.
Migração para PostgreSQL e seu mecanismo de busca full-text nativo (tsvector / tsquery). Adição de stemming, ponderação por campos (título, descrição, marca) e operadores booleanos. Uma melhoria notável na relevância, mas o desempenho de facetagem em centenas de milhares de produtos permanecia insuficiente.
Adoção do Apache Solr como mecanismo de busca dedicado. Indexação de centenas de milhares de produtos com facetagem avancada (categorias, cores, preços, fornecedores), sugestões de busca, correção ortografica e scoring de relevância personalizado. Essa geração permitiu que a plataforma escalasse no mercado europeu.
Evolução para Elasticsearch por sua escalabilidade horizontal, API REST nativa e capacidades de análise em tempo real. Implementação de busca multi-idioma (7 idiomas), analisadores linguisticos dedicados, sinonimos de negócio e agregações complexas para filtragem dinâmica do catálogo.
Linguagens & Frameworks
Bancos de dados & Busca
Servidores & Virtualização
Ferramentas & Modelagem
Rede & Segurança
Serviços
A infraestrutura da European Sourcing representava um volume de dados colossal para uma PME: mais de 2.000 bancos de dados MySQL distintos, centenas de milhares de fichas de produtos, milhões de linhas de dados distribuídas em dezenas de tabelas interconectadas. Cada banco era pre-calculado para servir consultas de busca em tempo real.
Nessa escala, o menor erro de concepção era fatal. Um índice faltando em uma tabela de 500.000 linhas podia transformar uma consulta de 50ms em um timeout de 30 segundos. Passavamos horas no EXPLAIN ANALYZE, estudando cada plano de execução, cada full table scan, cada filesort. As formas normais (1NF, 2NF, 3NF, BCNF) não eram um assunto acadêmico - eram uma necessidade diária para evitar redundância e anomalias de atualização em volumes tao grandes.
A otimização era constante: estratégias de indexação composta, tabelas de junção pre-calculadas, desnormalização direcionada para as consultas mais críticas, particionamento de tabelas, tuning de parâmetros MySQL (buffer pool, query cache, sort buffer, join buffer). Os batchs de recalculo de estoques, preços e promoções rodavam várias horas todas as noites - cada segundo economizado por consulta se multiplicava por milhões de execuções.
Esse contexto exigia domínio completo dos design patterns (Factory, Singleton, Observer, Strategy, Repository), dos princípios SOLID, da modelagem UML e do design orientado a objetos aplicado ao framework Zend. Nenhum atalho era possível quando cada decisão de arquitetura impactava diretamente o desempenho em produção.
Tudo isso em um ambiente PME que me dava liberdade total sobre as decisões técnicas e domínio de ponta a ponta: da modelagem de banco de dados a administração de servidores Linux, do código aplicativo ao tuning de consultas SQL. Essa autonomia total, em um sistema nessa escala, foi a experiência mais formativa da minha carreira.
Antes da era CI/CD, nossa cadeia de deploy dependia do SVN e scripts Bash. O fluxo era: commit SVN (subversion.europeansourcing.com) -> script de deploy (.sh) -> export SVN para /var/www/esv3 -> Apache serve a produção. Cada desenvolvedor (jose, vincent, mathieu, fabien, thomas) commitava no repositório central, e os scripts de deploy automatizavam a exportação e publicação.
Em um ecossistema competitivo e privado como o de produtos promocionais, impor um formato de troca padronizado entre fornecedores e revendedores e um grande desafio. Cada fornecedor possui seu próprio formato de catálogo (CSV, XML, bancos proprietarios), suas próprias nomenclaturas e suas próprias regras de negócio.
Dedicamos um trabalho considerável ao design de um formato padronizado de exportação de fornecedor e importação de revendedor. O objetivo era criar um padrão comum permitindo que cada ator da cadeia transmitisse e recebesse dados de produtos de maneira uniforme - referências, descrições, preços, visuais, níveis de estoque.
Apesar de nossos esforcos, nunca conseguimos impor esse formato de padronização. A posição dominante de certos fornecedores, que não tinham interesse em adaptar suas exportações, tornou a adoção impossível. O pivot foi construir um back-office dedicado (extranet de fornecedores) permitindo que cada fornecedor fizesse upload de seus produtos e assets em seu próprio formato, com um sistema de API padronizado do lado da plataforma para reconciliar e normalizar os dados internamente.
Essa experiência me ensinou que em um mercado privado, a padronização não pode ser imposta por um único ator - ela deve ser conduzida coletivamente ou contornada com soluções de adaptação inteligentes.
A European Sourcing foi meu verdadeiro batismo de fogo como desenvolvedor.
O ambiente PME familiar me deu uma autonomia e responsabilidade que eu nunca teria em uma grande organização. Cada desenvolvedor tinha impacto direto no produto.
Descobri o poder de um mecanismo de busca bem projetado para conectar fornecedores e distribuidores, e a complexidade de gerenciar mais de 2.000 bancos de dados MySQL em paralelo.
Execuções de batchs de várias horas para recalcular estoques, preços e promoções me ensinaram paciência e o rigor da otimização em grande escala.
A proximidade com as equipes comerciais e os fornecedores também me deu uma visão de produto de ponta a ponta, muito além de apenas escrever código.
17 Competência técnica · 7 Competência humana
Competência técnica
Dev full-stack PHP Zend Framework de plataformas B2B, extranets ERP/PIM e gerador de sites e-commerce MyEasyWeb.
Arquitetura de um ecossistema de 15+ sub-aplicações interconectadas para sourcing de brindes corporativos.
Deploys SVN com scripts Bash, gestão dos ambientes dev/homologação/produção em servidores Linux.
Gestão de 2.000+ bases MySQL, modelagem com MySQL Workbench, otimização de índices e batchs de cálculo.
Implementação de Proxmox VE e OpenVZ para virtualização dos servidores de produção.
Scripts Bash de deploy, batchs PHP de recalculo de estoques, preços e promoções.
Configuração de rede de servidores, gestão de hospedagem Systonic e migração para OVH.
Proteção iptables, configuração Apache, gestão de acessos a servidores Linux.
Administração de servidores Linux (Debian/Ubuntu), configuração Apache, backups.
Deploys SVN para produção, procedimentos de publicação, backups regulares.
Acompanhamento do desempenho dos motores de busca Solr e dos batchs de cálculo.
Padrão MVC Zend Framework, design patterns (Factory, Singleton, Observer, Strategy).
Aplicação dos design patterns GoF no contexto Zend Framework.
Modelagem UML para concepção das plataformas, diagramas de classes e de sequências.
Concepção de API REST para sincronização de dados de produtos com parceiros externos.
Proteção de aplicações web, proteção contra injeções SQL e XSS.
Vigilia tecnológica sobre PHP, Zend Framework, motores de busca e virtualização.
Competência humana
Coordenação das entregas técnicas, acompanhamento de tarefas em uma equipe de 5-6 desenvolvedores.
Resolução de problematicas de desempenho em 2.000+ bases MySQL e motores de busca Solr.
Colaboração direta com equipes comerciais, fornecedores, design e direção técnica.
Aprendizado de Zend Framework, Apache Solr, virtualização Proxmox de forma autônoma.
Interface com fornecedores de brindes corporativos e revendedores parceiros.
Redação completa de documentos tecnicos, cadernos de encargos, especificações, guias de deploy.
Suporte a usuários e treinamento sobre as ferramentas internas e as extranets.
European Sourcing - Ecossistema B2B
Ecossistema de 15+ sub-aplicações interconectadas para sourcing de produtos promocionais
Extranet - Plataforma de administracao B2B
Extranet ERP/PIM sob medida para gestão de produtos, fornecedores e pedidos
EuropeanTool - Plataforma B2B
Plataforma de 30+ aplicações interconectadas, 250+ fornecedores, 50+ revendedores
Motor de busca de produtos promocionais
Motor de busca vertical com Apache Solr, 22 000+ palavras indexadas
Portal comunitario de feiras profissionais
Portais WordPress para feiras profissionais do setor, 35+ sites