WheyScore Backend Node
Backend automatizado para rastreamento de preços, relatórios, webhooks e notificações.
Problema
Monitorar preços, gerar relatórios e disparar notificações exige rotinas confiáveis em background — sem depender de intervenção manual quando um job falha ou um marketplace muda o layout.
Solução e impacto
Backend Node.js com MySQL, node-cron para rotinas de rastreamento e relatórios, Winston para logs estruturados e webhooks para alertas de falha. Docker para deploy reproduzível. O resultado é automação orientada a produto com observabilidade pragmática, sem APM enterprise.
Arquitetura e trade-offs
Trade-off: node-cron dentro do processo em vez de fila externa (BullMQ/Redis) — suficiente para o volume atual, com o custo de retries e isolamento limitados. Separação clara entre jobs de coleta, persistência em MySQL e camada de notificação via webhooks. Winston centraliza logs para troubleshooting post-deploy.
Operação e observabilidade
Healthchecks HTTP, logs Winston estruturados e webhooks para falhas de job. Sem dashboard de APM — alertas e logs são o primeiro linha de defesa. Rollback via redeploy de container Docker.
Desafios técnicos
Garantir que jobs agendados não duplicem trabalho após restart, manter webhooks confiáveis quando APIs externas falham, e balancear simplicidade operacional com necessidade futura de métricas por job.
O que eu faria diferente
Com volume maior, migraria jobs críticos a uma fila com retries explícitos. Hoje o desenho cron + webhooks é adequado; eu adiantaria contadores de falha por job no log para reduzir tempo de diagnóstico.
Contexto técnico
- node-cronAgendamentoRotinas de rastreamento e relatórios
- WinstonLogsLogging estruturado
Decisões documentadas (ADR)
- ADR 003: node-cron vs fila externa
Cron suficiente para o volume atual; fila externa adicionaria infra sem ganho proporcional.
Stack
- Node.js
- MySQL
- node-cron
- Winston
- Webhooks
- Docker