
MyEasyWeb - Plataforma SaaS E-Commerce White-Label
Plataforma SaaS multi-tenant gerando sites e-commerce personalizados para 40+ revendedores no mercado europeu de produtos promocionais - 3 aplicacoes interconectadas, 108K linhas de codigo, 7 idiomas, 32 moedas, 1.506 commits em ~3 anos.
Linhas de codigo
~108,000
PHP, CSS, JS, Twig em 3 aplicacoes
Sites clientes
40+
Sites de revendedores ativos com dominios proprios
Idiomas
7
FR, EN, ES, DE, IT, NL, PT
Moedas
32
Taxas de cambio BCE, atualizacao automatica
Visao geral do projeto
O que e o MyEasyWeb e por que ele existe
MyEasyWeb e uma plataforma SaaS multi-tenant que gera sites e-commerce white-label para revendedores de produtos promocionais. Desenvolvida pela Medialeads para a European Sourcing, lider europeia em bancos de dados de produtos promocionais, a plataforma permite que cada revendedor (distribuidor) tenha seu proprio site personalizado - com seu logo, cores, dominio e catalogo configurado - alimentado automaticamente pelo banco de dados centralizado da European Sourcing com mais de 200.000 produtos de centenas de fornecedores.
O sistema e composto por tres aplicacoes distintas: o front-end principal e back-office do revendedor (myeasyweb.net, Symfony 2.4), um back-office de administracao interna para a equipe European Sourcing (bo.myeasyweb.pro, Symfony 3.1), e um site vitrine/motor de busca de produtos (myeasyweb.pro, Silex 2.0). Cada site de revendedor e identificado pelo seu dominio, e a aplicacao carrega dinamicamente a configuracao correspondente (tema, idiomas, fornecedores, margens) em cada requisicao.
myeasyweb.net
Aplicacao principal: front catalogo publico + back-office do revendedor (Symfony 2.4)
bo.myeasyweb.pro
Back-office de administracao interna para a equipe European Sourcing (Symfony 3.1)
myeasyweb.pro
Site vitrine e motor de busca de produtos (Silex 2.0)
Objetivos, contexto e riscos
Visao estrategica e desafios da plataforma
O MyEasyWeb foi construido com um objetivo claro de monetizacao B2B: oferecer a cada revendedor de produtos promocionais na Europa um site pronto conectado ao banco de dados European Sourcing, gerando receita recorrente e fixando os revendedores no ecossistema.
Sites prontos
40+ ativos
Sites profissionais para revendedores sem habilidades tecnicas
Multi-idioma
7 idiomas
FR, EN, ES, DE, IT, NL, PT
Multi-moeda
32 moedas
Taxas de cambio BCE, atualizacao diaria automatica
Catalogo de produtos
200K+ produtos
Banco de dados centralizado de centenas de fornecedores
Personalizacao
3 temas
Branding totalmente personalizavel por revendedor
Contexto
O projeto esta inserido em um ecossistema maior na Medialeads/European Sourcing, que inclui o marketplace European Sourcing, a extranet de revendedores, ferramentas de traducao, pipelines de importacao de dados e outros produtos B2B. A infraestrutura existente ja contava com um banco de dados MySQL centralizado, um motor de busca Apache Solr e um sistema de API interno. O desenvolvimento comecou com SVN antes de migrar para o GitHub em 2016.
Desafios
O MyEasyWeb impacta diretamente o modelo de receita da European Sourcing: cada site de revendedor gera volume de negocios para os fornecedores da plataforma. Alem da receita, a plataforma serve como ferramenta de retencao - ao fornecer um site profissional gratuito, a European Sourcing mantem seus revendedores no ecossistema. A cobertura internacional (7 idiomas, 32 moedas) reflete uma ambicao pan-europeia, incluindo um site alemao dedicado (meineasyweb.de).
Complexidade multi-tenant
Gerenciar 40+ sites com configuracoes individuais em um unico codigo aumenta a complexidade de manutencao e o risco de implantacao.
Seguranca de senhas (MD5)
Senhas codificadas em MD5 sem salt (iterations: 1) - uma vulnerabilidade conhecida mesmo para a epoca (bcrypt ja era recomendado).
Solr ponto unico de falha
A busca de produtos depende inteiramente do Solr com importacoes cron diarias - uma falha no motor de busca impacta todos os 40+ sites simultaneamente.
Acoplamento de banco de dados
Acesso direto ao banco compartilhado europeansourcing de varias aplicacoes: acoplamento forte e riscos de migracao de schema.
Fases de implementacao
Quatro anos de desenvolvimento, das fundacoes a maturidade
- Desenvolvimento da aplicacao principal (myeasyweb.net) com Symfony 2.4 no SVN
- Projeto e implementacao da arquitetura multi-tenant: deteccao de dominio, carregamento dinamico de configuracao
- Integracao com o banco MySQL European Sourcing existente e o motor de busca Apache Solr
- Construcao do back-office do revendedor: gestao de conteudo, estatisticas, orcamentos, configuracao de margens
- Implantacao dos primeiros sites de revendedores com dominios personalizados
- Construcao do sistema publicitario completo: slideshows, banners, anuncios 4 posicoes, skyscrapers, anuncios por categoria
- Implementacao de menus personalizados com suporte a links e paginas incorporadas
- Desenvolvimento de paineis de estatisticas detalhados: orcamentos, contatos, produtos, buscas
- Integracao do rastreamento Google Analytics por site de revendedor
- Adicao de gerenciamento e envio de newsletters
- Desenvolvimento de funcionalidades SEO: categorias personalizadas, sitemaps XML, gestao de meta-dados
- Expansao para 3 temas visuais com camada comum compartilhada + fontes web personalizadas
- Desenvolvimento do bo.myeasyweb.pro com Symfony 3.1 - novo back-office de administracao interna
- Implementacao de arquitetura API REST (FOSRestBundle + JMSSerializer) para gestao centralizada de sites
- Construcao do servico de sincronizacao entre bancos interno e de revendedores
- Adicao do sistema de gestao de traducoes (TranslatableListener, Locale, CategoryTranslation)
- Migracao do controle de versao de SVN para GitHub (organizacao: medialeads)
- Desenvolvimento do site vitrine myeasyweb.pro usando o micro-framework Silex 2.0
- Integracao do ElasticSearch com biblioteca PHP customizada (lib/ElasticSearch/)
- Construcao das paginas de busca de produtos com templates Twig (Home, Search, Layout)
- Backup dos 3 repositorios no NAS (ultima atividade documentada: dezembro de 2016)
Atores e interacoes
Uma equipe de 5 desenvolvedores em 1.506 commits
O projeto foi construido dentro da Medialeads, uma empresa de software desenvolvendo produtos para a European Sourcing - lider europeia em bancos de dados de produtos promocionais. A equipe de 5 desenvolvedores trabalhou em 3 repositorios, com Jose Da Costa como desenvolvedor lead responsavel por 64,6% de todos os commits (974 de 1.506). A equipe compartilhava documentacao atraves de um DokuWiki interno hospedado no servidor de homologacao.
O modelo de colaboracao era baseado em branches: cada desenvolvedor trabalhava em sua propria branch (visivel no historico git: branches `jose`, `fancyweb`, `Amandine-es`). Wamania teve um papel especial como arquiteto da modernizacao de 2016, sendo o unico autor do bo.myeasyweb.pro e do myeasyweb.pro. Thomas C. (`fancyweb`) foi um contribuidor significativo na aplicacao principal, enquanto Amandine focou na localizacao (provavelmente espanhol, dado seu alias `Amandine-es`).
| Desenvolvedor | Funcao | Commits | % |
|---|---|---|---|
| Jose Da Costa | Lead Developer | 974 | 64.6% |
| Wamania | Senior Developer / Architect | 363 | 24.1% |
| Thomas C. | Developer | 129 | 8.6% |
| Amandine | Developer / Localization | 29 | 1.9% |
| Bastien B. | Developer | 11 | 0.7% |
| Total | 1,506 | 100% | |
Partes interessadas externas
Alem da equipe tecnica, o projeto envolveu multiplos atores externos: fornecedores de produtos promocionais (cujos catalogos alimentavam a plataforma via API European Sourcing), 40+ revendedores (usuarios diretos do back-office MyEasyWeb), OVH (hospedagem em servidores dedicados), Amazon Web Services (envio de emails via SES) e GitHub (hospedagem de codigo na organizacao medialeads).
Resultados e entregas
O que foi alcancado em 4+ anos de desenvolvimento
Para a plataforma
Entidades no banco
67
41 (principal) + 10 (ES) + 10 (BO) + 6 (compartilhado)
Controllers
57
44 (principal) + 13 (BO admin)
Rotas/Endpoints API
136
Somente no myeasyweb.net
Commits totais
1.506
Em 3 repositorios, 5 desenvolvedores
Temas visuais
3 + common
Totalmente personalizaveis por revendedor
Arquivos de stats
1.355
Estatisticas de fornecedores (2012-2015)
Para o negocio
O MyEasyWeb permitiu que a European Sourcing retivesse sua rede de 40+ revendedores oferecendo-lhes um site profissional gratuito, personalizado e diretamente conectado ao banco de produtos. Cada site de revendedor gera indiretamente volume de negocios para os fornecedores da plataforma. Os 1.355 arquivos de estatisticas de fornecedores coletados entre 2012 e 2015 comprovam uma atividade comercial sustentada gerada pela plataforma.
Para mim pessoalmente
Como desenvolvedor lead responsavel por quase dois tercos do codigo, este projeto foi uma experiencia profissional marcante:
- Arquitetura SaaS multi-tenant - projeto e manutencao de um codigo unico servindo 40+ sites de marca independentes, um padrao que apliquei a cada projeto SaaS desde entao
- Expertise PHP full-stack - dominio profundo do ecossistema Symfony 2.x (Doctrine, Twig, seguranca, traducoes, bundles) sob restricoes de producao reais
- Integracao de motores de busca - experiencia pratica com Apache Solr e ElasticSearch para busca full-text de produtos em catalogos massivos
- Dominio e-commerce B2B - compreensao profunda de gestao de catalogos, precificacao/margens, fluxos de orcamentos, sincronizacao de fornecedores e gestao multi-moeda
- Arquitetura de banco de dados - trabalho com replicacao MySQL master/slave, cache Memcached e bancos compartilhados entre aplicacoes
- Lideranca tecnica - coordenacao do desenvolvimento em 3 repositorios com 4 outros desenvolvedores em workflow por branches, de SVN a Git
O que veio depois
Evolucao e legado da plataforma
Proximos passos imediatos (2016)
A ultima atividade documentada data de dezembro de 2016 (backup NAS). O projeto estava em plena evolucao naquele momento: o novo back-office interno (bo.myeasyweb.pro, Symfony 3.1) acabara de ser finalizado, o site vitrine (myeasyweb.pro, Silex 2.0) acabara de ser implantado, e a migracao de SVN para GitHub estava completa. A plataforma servia 40+ sites de revendedores ativos por toda a Europa.
Impacto a longo prazo
O MyEasyWeb fazia parte de um ecossistema maior de 30+ aplicacoes interconectadas construidas ao longo de quase uma decada na European Sourcing. Os padroes de arquitetura multi-tenant, a abordagem de integracao Solr e o conhecimento do dominio e-commerce B2B desenvolvidos durante este projeto influenciaram diretamente o design das ferramentas seguintes do ecossistema European Sourcing - incluindo a Extranet (229K linhas), o motor de importacao de dados (120+ tabelas) e a plataforma de sincronizacao de fornecedores (Flux).
Estado atual
Os arquivos analisados foram recuperados de um backup NAS realizado no final de 2016. O projeto muito provavelmente continuou apos essa data, mas a atividade pos-backup nao e acessivel a partir desses arquivos. A arquitetura da plataforma - um codigo PHP unico servindo dezenas de sites e-commerce personalizados - era um modelo SaaS maduro e comprovado que demonstra a viabilidade de abordagens multi-tenant para mercados de nicho B2B.
Reflexao critica
Analise honesta com o beneficio da retrospectiva
- Arquitetura multi-tenant: um codigo para 40+ sites com personalizacoes individuais - um produto SaaS real, nao sites isolados
- Riqueza funcional: o back-office do revendedor cobria anuncios, estatisticas, SEO, newsletters, margens, downloads, paginas corporativas - muito alem de um CMS simples
- Infraestrutura escalavel: replicacao MySQL master/slave, Memcached, Solr, Amazon SES - escolhas de escalabilidade bem pensadas
- Multi-idioma e multi-moeda nativos: 7 idiomas e 32 moedas integrados no modelo de dados desde a concepcao
- Separacao de responsabilidades: 3 aplicacoes com stacks adaptadas (Symfony 2.4, 3.1, Silex 2.0) para diferentes casos de uso
- Seguranca de senhas: MD5 sem salt e uma vulnerabilidade critica, mesmo para 2012 (bcrypt ja era a recomendacao)
- Cobertura de testes: apenas 4 arquivos de teste no bo.myeasyweb.pro, nenhum visivel no myeasyweb.net - praticamente nenhum teste automatizado para um projeto deste porte
- Divida tecnica CSS: 38.091 linhas de CSS sugerem acumulo sem refatoracao, provavelmente pela multiplicacao de temas
- Acoplamento entre aplicacoes: acesso direto ao banco compartilhado europeansourcing cria acoplamento forte e migracoes de schema arriscadas
- Implantacao manual: um simples script shell (prod.sh) para producao - sem CI/CD, sem testes no pipeline, sem rollback automatico
Licoes-chave aprendidas
- O multi-tenant e um multiplicador de valor: um codigo unico servindo 40+ clientes gera ROI muito superior a desenvolvimentos sob medida, desde que a camada de personalizacao esteja bem estruturada
- A divida tecnica cresce com o sucesso: quanto mais clientes e funcionalidades, maior o risco de divida CSS/testes/seguranca se a qualidade nao for medida continuamente
- A migracao SVN para Git se pagou rapidamente com branches por desenvolvedor e workflow colaborativo - escolhas de controle de versao tem impacto duradouro
- A documentacao operacional (wiki com URLs, comandos, crontabs) e tao critica quanto a documentacao arquitetural para a sobrevivencia a longo prazo de um projeto
Arquitetura e diagramas
Trajetoria relacionada
Experiencia profissional ligada a esta realizacao
Competencias aplicadas
Competencias tecnicas e humanas aplicadas
Galeria de imagens
Capturas e visuais do projeto




