← Volver a proyectos

Servicio de calificación de alto rendimiento en Go

Backend

Problema

Calificar grandes lotes de forma confiable, separando el trabajo en cola del cacheo de resultados, y dejando todo listo para una futura migración a la nube.

Impacto

Un servicio rápido y portable, con políticas de almacenamiento correctas y compatible con Redis administrado en la nube.

El problema

El servicio debía calificar grandes lotes de forma confiable. Necesitaba una cola para el trabajo pendiente y un caché para los resultados, pero esas dos cargas tienen políticas de memoria opuestas — y el plan era migrar a la nube, donde Redis administrado impone restricciones.

La arquitectura

  • Servicio HTTP en Go, con la lógica de calificación separada de la capa de transporte.
  • Dos instancias de Redis: una para caché y otra para cola, aisladas por prefijos de clave (no por multi-DB).
  • Worker separado de la API, para escalar el procesamiento de forma independiente.
  • Autenticación Bearer multi-token para proteger los endpoints.

Decisiones clave

  • Dos Redis en vez de uno con multi-DB: el caché necesita una política de eviction (allkeys-lru) y la cola necesita no perder datos (noeviction). Son mutuamente excluyentes en una sola instancia. Además, el multi-DB no es viable en Redis administrado con cluster mode, así que separar por instancias y prefijos dejó el diseño listo para la nube desde el día uno.
  • Worker/API separados: el cálculo escala sin afectar la disponibilidad del endpoint.

Impacto

Un servicio de calificación rápido, con las políticas de almacenamiento correctas para cada tipo de carga, y portable a infraestructura administrada sin rediseñar.