Patrón 7 ‐ Multi‐AZ y Autoescalado - JuanHerreraP/Proyecto-MISO-Solventa-Grupo-11 GitHub Wiki

Problema

La cotización y el perfilamiento consultan proveedores externos que pueden responder lentamente o dejar de funcionar. Esto podría aumentar la latencia o bloquear el recorrido de compra.

Solución

Se utiliza el patrón Cache-Aside con ElastiCache Redis.

Antes de consultar Open Finance u Open Data, el servicio busca un perfil vigente en caché. Si no existe, consulta al proveedor, procesa la respuesta y guarda el resultado con un tiempo de expiración.

Aplicación en Solventa

Los servicios de Perfilamiento y Cotización administran la caché:

  1. Consultan Redis.
  2. Si existe información vigente, la utilizan.
  3. Si no existe, llaman al adaptador correspondiente.
  4. Guardan el resultado con un tiempo de expiración.
  5. Si el proveedor falla, pueden utilizar el último perfil permitido y registrar la degradación.

Razonamiento

El patrón reduce llamadas externas, mejora los tiempos de respuesta y permite continuar temporalmente cuando un proveedor presenta fallas.

Solo se almacenará la información necesaria y asociada a un consentimiento vigente.

Relación con los ASR

  • EC01 – Latencia: reduce el tiempo de cotización.
  • EC02 – Latencia: acelera la generación del perfil de riesgo.
  • EC12 – Disponibilidad: permite continuar el journey cuando falla un proveedor externo.

También soporta HU10 y HU11.

Ventajas

  • Menor latencia.
  • Menos llamadas a proveedores.
  • Mejor disponibilidad.
  • Reducción de costos de integración.

Limitaciones

  • Los datos pueden quedar desactualizados.
  • Se debe controlar la expiración.
  • La información sensible debe protegerse.
  • No todos los datos pueden reutilizarse durante una falla.

Diagrama

flowchart TD
    Request["Solicitud de cotización"]
    Profiling["Servicio de Perfilamiento"]
    Cache[("ElastiCache Redis")]
    Found{"¿Perfil vigente?"}
    Adapter["Adaptador Open Finance / Open Data"]
    Provider["Proveedor externo"]
    Rating["Servicio de Cotización"]
    Audit["Registro de uso de caché"]

    Request --> Profiling
    Profiling --> Cache
    Cache --> Found

    Found -->|Sí| Rating
    Found -->|No| Adapter
    Adapter --> Provider
    Provider --> Adapter
    Adapter --> Cache
    Cache --> Rating

    Found -.->|Perfil anterior permitido| Audit
    Audit --> Rating