Contact
Vamos trabalhar juntos
Flux - Sincronizacao de Dados de Fornecedores

Flux - Sincronizacao de Dados de Fornecedores

Uma plataforma ETL interna automatizando a sincronizacao diaria de dados de produtos (estoque, precos, catalogos) de mais de 30 fornecedores europeus via FTP, HTTP e APIs REST para o marketplace European Sourcing.

2013 - 2016
~3 anos
Senior Software Engineer - ETL & Integracao de Dados
PHP 5.3+Symfony 2.4MySQLDoctrine DBALTwigBootstrap 3/4jQuerySelect2SwiftMailerPHPExcelFTPHTTP/HTTPSREST APICSVXMLJSONElasticsearchGitCronLinux

Fornecedores Integrados

30+

8+ paises europeus

Classes de Conectores

37

Padrao Strategy (Lib/*.php)

Formatos de Dados

7

CSV, XML, JSON, XLS, TSV, TXT, GZ

Tamanho do BD

~15 Go

Dump SQL completo (marco 2019)

Apresentacao

O centro nervoso da integracao de dados de fornecedores europeus

Flux (v1) e FluxV2 sao aplicacoes web internas desenvolvidas para a European Sourcing, empresa especializada em sourcing de produtos promocionais e publicitarios em toda a Europa. Essas aplicacoes constituem a espinha dorsal da sincronizacao de dados de produtos entre fornecedores e a plataforma European Sourcing.

A plataforma opera no dominio de e-commerce B2B / marketplace de produtos promocionais. A European Sourcing atua como agregadora de catalogos de fornecedores de objetos promocionais (brindes, texteis, acessorios, material de escritorio, etc.) para revendedores europeus. A empresa coleta, normaliza e redistribui dados de produtos (niveis de estoque, precos, imagens, fichas tecnicas) de dezenas de fornecedores para sua plataforma online, atendendo aproximadamente 60 sites revendedores.

Recuperacao de dados multi-protocolo

FTP, HTTP, API REST com autenticacao variada (chaves API, login/senha, tokens, hash)

Normalizacao de dados heterogeneos

30+ formatos proprietarios transformados em um esquema interno unificado

Atualizacoes de estoque e precos quase em tempo real

Sincronizacao automatizada diaria via cron com grades de precos degressivos

Re-indexacao automatica de busca

Dispara sincronizacao Elasticsearch apos cada atualizacao de fornecedor

Relatorios detalhados e rastreabilidade

Relatorios de execucao com timestamp, logs baixaveis, arquivos CSV e ZIP

Alertas de falha por email

Notificacao automatica por email para a equipe em caso de falha

Arquitetura do Sistema
Arquitetura geral do sistema Flux dentro do ecossistema European Sourcing

Objetivos, Contexto, Desafios e Riscos

Compreendendo a visao estrategica por tras do pipeline de dados

Objetivos
  • Automatizar 100% da sincronizacao de estoque e precos dos fornecedores (execucao diaria via cron)
  • Garantir a frescura dos dados: estoques e precos atualizados diariamente para cada fornecedor ativo
  • Normalizar 30+ formatos proprietarios heterogeneos em um esquema interno unificado
  • Garantir rastreabilidade: cada execucao gera um relatorio com timestamp e logs detalhados
  • Permitir controle granular: ativacao por fornecedor e por tipo de dados
Contexto
  • Parte de um ecossistema de 20+ aplicacoes sob *.europeansourcing.com (extranet, API, motor de busca, exportacao, estatisticas, traducao, etc.)
  • Desenvolvimento sob a organizacao GitHub medialeads (~8 desenvolvedores) em Bordeaux, Franca
  • Banco de dados MySQL master/slave compartilhado (~15 GB) com todos os outros projetos da plataforma
  • Multiplos ambientes: desenvolvedor (local), homologacao (es-recette.com), producao (OVH)
Desafios de Negocios
  • Impacto comercial importante: estoque ou precos desatualizados geram pedidos impossiveis de atender, impactando diretamente a credibilidade e a receita
  • Cobertura internacional: fornecedores em 8+ paises europeus com variacoes especificas por pais
  • Multiplicidade de protocolos: FTP, HTTP, API REST com metodos de autenticacao variados
Riscos Identificados

Dependencia de formato de fornecedor

Qualquer mudanca de formato por um fornecedor requer adaptacao do codigo - risco de quebra silenciosa

Vulnerabilidade de injecao SQL

O handler POST de configuracoes constroi clausulas SQL diretamente de dados do usuario sem sanitizacao

Credenciais codificadas

Credenciais FTP e chaves API codificadas diretamente nas classes PHP (melhorado na v2)

Sem testes automatizados

O unico arquivo de teste e um boilerplate Symfony intocado (~0% de cobertura)

As Etapas - O que Fiz

Uma jornada concreta, fase por fase, da construcao

Fase 1
Flux v1 - Plataforma Central
Antes de 2016 - 2017
  • Desenvolvidos 30+ conectores de fornecedores individualmente (classes Lib/*.php)
  • Construido o pipeline ETL completo: download → parsing → matching → atualizacao BD → geracao de relatorios
  • Implementada interface web com dashboard, configuracao por fornecedor, visualizacao de relatorios e download de arquivos
  • Criada execucao CLI via comando Symfony (php app/console lanceramaj)
  • Minhas contribuicoes: conector BIC France, conector PF Concept v2 com correcoes, conector Midocean (novo FTP), commit inicial e importacao SVN
Fase 2
FluxV2 - UI e Arquitetura Modernizados
2017 - 2019
  • Interface modernizada migrada de Bootstrap 3 para Bootstrap 4
  • Arquitetura melhorada: namespace AppBundle\Flow\ substituindo o bundle legado
  • Configuracao externalizada: URL e tipo de autenticacao configuraveis via interface web (vs codificado na v1)
  • Adicionada coluna "Status" em tempo real ao dashboard para monitoramento de execucoes
  • Sistema de notificacao para desenvolvedores em qualquer modificacao de fluxo
Pipeline ETL - Sequencia de execucao por fornecedor
Pipeline ETL completo mostrando etapas de extracao, transformacao e carregamento
Modelo de Dados
Tabelas do banco de dados usadas pelo Flux para configuracao de sincronizacao e relatorios
Mapa de Fornecedores - 30+ conectores por protocolo
Mapa completo de 30+ fornecedores integrados, classificados por protocolo (FTP, HTTP, API REST) com pais de origem e formato de dados
Metricas do Codigo
Infraestrutura e Implantacao
Ambientes de implantacao do desenvolvimento local a producao OVH

Os Atores - Interacoes

Uma equipe pequena e focada dentro de um ecossistema maior

O projeto Flux foi desenvolvido principalmente por 2 desenvolvedores dentro da organizacao medialeads (~8 pessoas no total). Thomas C. foi o desenvolvedor principal, implementando a maioria dos conectores de fornecedores (28 commits, 65% do codigo). Eu contribui com 15 commits (35%) incluindo o commit inicial, migracao SVN e conectores-chave para BIC France, PF Concept e Midocean.

Distribuicao de Commits Git (43 commits)
Partes Interessadas

Marina Lalague

Gerente de Catalogo / Product Owner

Decisoes de negocios sobre prioridades de sincronizacao de dados

Jennifer

Gerente de Dados/Catalogo

Destinataria de alertas, gerenciamento de credenciais API

Parceiros Externos

O projeto interagia diretamente com mais de 30 APIs e feeds de dados de fornecedores europeus - cada um com seus proprios protocolos, formatos, metodos de autenticacao e contatos tecnicos. Isso exigia adaptacao e comunicacao constantes com equipes tecnicas externas.

Fornecedores por Protocolo
Distribuicao de Formatos de Dados

Resultados

Impacto mensuravel para o negocio e crescimento pessoal

Impacto nos Negocios
  • Sincronizacao automatizada diaria garante dados de produtos atualizados para revendedores no europeansourcing.com → conversao melhorada, erros de pedido reduzidos
  • 6.120 variantes de produtos atualizadas em uma unica execucao de 45 segundos (fornecedor Anda, agosto 2019)
  • ~100 execucoes diarias em todos os fornecedores, garantindo frescura continua dos dados
  • Cobertura massiva de catalogo: banco de dados de ~15 GB atendendo mais de 60 sites revendedores
  • Alcance geografico pan-europeu: fornecedores de 8+ paises integrados perfeitamente
Tipos de Sincronizacao
Cobertura Geografica
Crescimento Pessoal
  • Expertise profunda em integracao de dados heterogeneos (ETL) atraves de multiplos protocolos e formatos
  • Dominio do padrao de design Strategy aplicado a arquitetura real de conectores de fornecedores
  • Compreensao da gestao de catalogos de e-commerce B2B em escala europeia
  • Experiencia com arquitetura MySQL master/slave e operacoes de dados em grande escala
  • Conhecimento pratico de comandos CLI, servicos e sistema de eventos do Symfony 2

O Futuro do Projeto

Alem da entrega - ciclo de vida e evolucao

  • 1
    FluxV2 estava operacional e funcional em agosto de 2019, com logs mostrando execucoes diarias bem-sucedidas
  • 2
    O sistema funcionou continuamente em producao por pelo menos 3 anos, processando centenas de sincronizacoes diarias
  • 3
    A evolucao da v1 para v2 demonstrou a capacidade da equipe de iterar e melhorar: configuracao externalizada, UI modernizada, melhor monitoramento
  • 4
    Backups completos foram arquivados em agosto de 2019 (codigo, dumps de banco, capturas de tela), sugerindo um periodo de transicao
  • 5
    O projeto esta agora arquivado - a European Sourcing provavelmente evoluiu sua infraestrutura de sincronizacao desde entao

Reflexao Critica

Retrospectiva honesta sobre pontos fortes, fracos e licoes aprendidas

Pontos Fortes
  • Cobertura funcional impressionante: 30+ fornecedores integrados com protocolos e formatos muito diversos, cada um com requisitos especificos de parsing
  • Pipeline robusto: o padrao Base/filho permite adicionar um novo fornecedor implementando apenas transformerEnProduits(), herdando todo o pipeline
  • Rastreabilidade exemplar: cada execucao produz um relatorio com timestamp, logs detalhados e arquivos de resultado
  • Evolucao continua: criar o FluxV2 mostra capacidade de questionar e melhorar o sistema existente
  • Arquitetura pragmatica: SQL bruto ao inves de Doctrine ORM, justificado pela natureza das operacoes (atualizacoes em massa)
Areas para Melhoria
  • Seguranca: injecao SQL no handler POST de configuracoes, credenciais FTP/API codificadas, autenticacao basica por sessao compartilhada
  • Sem testes: zero testes unitarios ou de integracao - o unico arquivo de teste e um boilerplate Symfony intocado
  • Sem CI/CD: implantacao provavelmente manual via git pull no servidor, sem pipeline de integracao continua
  • Acoplamento forte: classes de conectores misturam logica de download, parsing, matching e atualizacao BD
  • Documentacao inexistente: o doc/index.rst e um placeholder vazio, sem README personalizado
Licoes Aprendidas
  • Integracao de dados heterogeneos e um problema de normalizacao, nao de codigo - entender o formato de cada fornecedor e o verdadeiro trabalho antes de escrever qualquer codigo
  • O padrao Strategy e ideal para variacoes do mesmo processo - Base define o "o que" (pipeline de sync), cada filho define o "como" (parsing especifico)
  • Rastreabilidade nao e um luxo - em um sistema automatizado diario, logs e relatorios sao indispensaveis para diagnostico rapido de problemas
  • Externalizar URLs e autenticacao do codigo para uma interface configuravel e uma grande vitoria de manutenibilidade (melhoria v2)

Trajetoria relacionada

Experiencia profissional ligada a esta realizacao

Competencias aplicadas

Competencias tecnicas e humanas aplicadas

Galeria de imagens

Capturas e visuais do projeto