Caso
Una plataforma de analítica en tiempo real
Recopilación y procesamiento de un flujo de eventos con paneles en tiempo real en Go, PostgreSQL y Redis.
- Año
- 2025
- Cliente
- Plataforma SaaS de analítica
- Rol
- Tech Lead
Descripción
La plataforma de analítica ingiere un flujo de eventos de usuario y de sistema, lo procesa al vuelo y entrega métricas agregadas a los paneles con una latencia mínima. El servicio de ingesta y procesamiento de eventos está escrito en Go por su alto rendimiento y latencia predecible: las goroutines atienden miles de conexiones simultáneas, los eventos se almacenan en búfer y se escriben en el almacenamiento por lotes. Los agregados calientes (contadores, ventanas deslizantes, tops) se calculan en Redis usando conjuntos ordenados y HyperLogLog, mientras que los datos históricos se guardan en PostgreSQL con funciones de ventana para las consultas analíticas. La capa de producto y la API de gestión de paneles están implementadas en Laravel. Todo el sistema está contenedorizado y desplegado en Kubernetes con autoescalado horizontal de los procesadores según la carga, lo que le permite soportar los picos de tráfico sin perder eventos.
Problema
La analítica existente se calculaba mediante tareas por lotes nocturnas, los datos se retrasaban un día y, al crecer el tráfico, el procesamiento no daba abasto y perdía eventos. El negocio necesitaba métricas actualizadas en tiempo real.
Solución
Construí un servicio de ingesta de eventos en Go con escritura por lotes, trasladé los agregados calientes a Redis, organicé un almacén histórico en PostgreSQL con funciones de ventana y desplegué los procesadores en Kubernetes con autoescalado.
Resultados
El retraso desde el evento hasta el panel se redujo de 24 horas a 3 segundos, se eliminó la pérdida de eventos en los picos, la plataforma procesa de forma estable más de 50.000 eventos por segundo y los costes de infraestructura se redujeron en un 35%.