WheyScore Backend Node
Backend automatizado para rastreo de precios, informes, webhooks y notificaciones.
Problema
Monitorear precios, generar reportes y disparar notificaciones exige rutinas confiables en background — sin depender de intervención manual cuando un job falla o un marketplace cambia el layout.
Solución e impacto
Backend Node.js con MySQL, node-cron para rutinas de rastreo y reportes, Winston para logs estructurados y webhooks para alertas de fallo. Docker para despliegue reproducible. El resultado es automatización orientada a producto con observabilidad pragmática, sin APM enterprise.
Arquitectura y trade-offs
Trade-off: node-cron dentro del proceso en vez de una cola externa (BullMQ/Redis) — suficiente para el volumen actual, con el costo de retries y aislamiento limitados. Separación clara entre jobs de recolección, persistencia en MySQL y la capa de notificación vía webhooks. Winston centraliza logs para troubleshooting post-deploy.
Operación y observabilidad
Healthchecks HTTP, logs Winston estructurados y webhooks para fallos de job. Sin dashboard de APM — alertas y logs son la primera línea de defensa. Rollback vía redeploy del contenedor Docker.
Desafíos técnicos
Garantizar que los jobs programados no dupliquen trabajo tras un restart, mantener webhooks confiables cuando las APIs externas fallan, y balancear la simplicidad operacional con la necesidad futura de métricas por job.
Qué haría diferente
Con mayor volumen, migraría los jobs críticos a una cola con retries explícitos. Hoy el diseño cron + webhooks es adecuado; adelantaría contadores de fallo por job en el log para reducir el tiempo de diagnóstico.
Contexto técnico
- node-cronAgendamientoRutinas de rastreo y reportes
- WinstonLogsLogging estructurado
Decisiones documentadas (ADR)
- ADR 003: node-cron vs cola externa
Cron suficiente para el volumen actual; una cola externa añadiría infraestructura sin beneficio proporcional.
Stack
- Node.js
- MySQL
- node-cron
- Winston
- Webhooks
- Docker