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é:
- Consultan Redis.
- Si existe información vigente, la utilizan.
- Si no existe, llaman al adaptador correspondiente.
- Guardan el resultado con un tiempo de expiración.
- 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