1. Skip to content

1. 📝 RFC: Implementación de Redis para Caching de Sesiones

1.1 ℹ️ Meta Información

  • RFC ID: RFC-042
  • Título: Redis Session Caching
  • Autor: David Developer
  • Estado: Review
  • Fecha: 2028

1.2 📋 Contexto y Alcance

Actualmente, las sesiones de usuario se guardan en la base de datos PostgreSQL principal (users_sessions). Con el crecimiento de usuarios, la tabla de sesiones recibe el 60% de las escrituras totales, causando bloqueos y latencia en otras operaciones críticas. El objetivo es mover el almacenamiento de sesiones a una solución en memoria (Redis) para aliviar la DB y mejorar la latencia de autenticación.


1.3 🏗️ Diseño Propuesto

Utilizar Redis Cluster como store de sesiones.

Arquitectura:

  • Auth Service escribirá/leerá de Redis en lugar de Postgres.
  • TTL (Time To Live) de 24 horas en las keys de Redis.

Modelo de Datos (Redis Key-Value):

  • Key: session:{session_id}
  • Value: JSON { user_id: 123, roles: ["admin"], created_at: ... }

Cambios en API:

  • Transparentes para el frontend (sigue enviando cookie/token).

1.4 🔄 Alternativas Consideradas

  1. Memcached:
  2. Pros: Más simple, multithreaded.
  3. Cons: No persistencia (si reinicia, todos deslogueados), estructuras de datos limitadas.
  4. Decisión: Descartado por falta de persistencia opcional y features avanzadas.

  5. DynamoDB:

  6. Pros: Serverless, escalable.
  7. Cons: Costo más alto por request, latencia mayor que in-memory.
  8. Decisión: Descartado por latencia.

1.5 ⚠️ Riesgos y Desafíos

  • Persistencia: Si Redis cae y no hay persistencia AOF, los usuarios perderán sesión. (Mitigación: Habilitar AOF fsync every second).
  • Consistencia: No habrá consistencia fuerte inmediata si usamos réplicas de lectura (Eventual consistency es aceptable para sesiones).

1.6 ✅ Plan de Implementación

  1. Fase 1: Levantar Redis Cluster en infraestructura.
  2. Fase 2: Auth Service escribe en AMBOS (Postgres + Redis), lee de Postgres (Shadow write).
  3. Fase 3: Switch de lectura a Redis.
  4. Fase 4: Dejar de escribir en Postgres.

1.7 ❓ Preguntas Abiertas

  • ¿Necesitamos encriptar los datos en reposo en Redis? (Probablemente sí por compliance).