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
U

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%.

Tecnologías