← Voltar aos projetos

Aepio · bancadas de ensaio · Em produção

Dados que não podiam se perder numa rede que cai o tempo todo

Integração de 6 bancadas de ensaio ao servidor central, com reenvio automático e um contrato único de dados.

Arquitetura
6 bancadas de ensaio
Fila local + reenvio
API de ingestão
Contrato único de dados
Verificação de aprovação

Contexto

Cada medidor de gás produzido passa por ensaio em uma de 6 bancadas. Os resultados precisavam chegar ao servidor central, onde é feita a verificação final de aprovação. Antes, a equipe de Qualidade parava cerca de 1 hora por dia para extrair esses dados, uma vez por dia.

Restrições

  • A rede da fábrica cai com frequência. Um ensaio perdido é um medidor sem rastreabilidade.
  • Cada bancada enviava os dados num formato diferente.
  • Volume de 15 mil+ medidores por mês, sem parar a produção.

Decisões e trade-offs

  • Guardar localmente e reenviar (store-and-forward). Cada envio é gravado antes de sair da bancada e só é descartado depois da confirmação do servidor. Troquei simplicidade por garantia de entrega, porque perder dado de ensaio não é aceitável.
  • Um contrato único de dados. Em vez de o servidor entender 6 formatos, padronizei o envio na origem. O servidor fica simples e uma bancada nova só precisa respeitar o contrato.
  • Tempo real em vez de lote diário. A verificação de aprovação passa a acontecer com o dado fresco, não no dia seguinte.

Resultado

Dados de ensaio de 15 mil+ medidores por mês chegando em tempo real, sem perda quando a rede cai, e o fim da extração manual diária da equipe de Qualidade.

O que eu faria diferente

Colocaria métricas de saúde da integração desde o primeiro dia (tamanho da fila local, tempo até a confirmação) para enxergar problemas de rede antes de alguém perceber.

Stack

  • Python
  • APIs REST
  • MySQL
  • SQL Server