Hoja de trabajo semana 6 - martin-hendricks/MISO-PROYECTO-FINAL-SOLVENTA GitHub Wiki
Hoja de trabajo semana 6
| Proyecto | Solventa — Aseguradora digital |
| Elaboración | Juan Acevedo, John Guerrero, Mauricio Rodriguez, Martin Romero |
| Versión | 1.0 |
| Atributos priorizados | Escalabilidad y Latencia (desempeño) |
| Insumos | Enunciado MISW4501-202614-Proyecto.pdf · Hoja de trabajo semana 5 |
Consolidado de la semana 6.
Índice
- Avance de la ejecución de los experimentos de arquitectura sobre validación de ASR
- Avances del prototipo versión web/móvil
- Documento de arquitectura ajustado
- Plan de trabajo y tablero
- Video con evidencias
1. Avance de la ejecución de los experimentos de arquitectura sobre validación de ASR
1.1 Avance en la ejecución de los experimentos que se realizaron para la validación de los ASR
Experimentos diseñados en la semana 5.
| Experimento | ASR que valida | Montaje y carga ejecutada | Métricas medidas | % de avance | Evidencias |
|---|---|---|---|---|---|
| HA-08 — Modelo de lectura de baja latencia para el estado de siniestro (CQRS con proyección materializada y caché) | EC-LAT-11 — Latencia, prioridad (A,A) |
Docker Compose con API de consulta (tres brazos: A lectura directa normalizada, B proyección materializada, C proyección + caché), proyector, simulador de eventos, PostgreSQL, Redis, Redpanda, Prometheus y Grafana. Dataset de 1.000.000 de siniestros. 20 corridas ejecutadas: 9 contrabalanceadas (cuadrado latino, rampa 10→80 req/s), 8 de sensibilidad al TTL (0 s / 300 s, n=3 cada una), y 3 de alta carga (pico de 600 req/s). | p95, p50 y p99 extremo a extremo (k6); latencia interna del servicio; hit-rate de caché; lag de proyección; CPU y memoria por contenedor en serie; tasa de error y dropped_iterations. |
100 % | · Diseño del experimento · Informe del experimento · Informe detallado · Implementación y datos crudos |
| HA-01 — Protección del presupuesto de latencia de la cotización embebida | EC-LAT-01, EC-LAT-02 y EC-LAT-09 — Latencia, prioridad (A,A); restricciones EC-LAT-07 (≤ 120 ms por dependencia) y EC-LAT-08 (timeout duro de 700 ms) |
Montaje implementado y validado sintácticamente: :MsCotización con actualización oportunista de Open Finance, :AdaptadorOF con circuit breaker y aislamiento por proveedor, doble del proveedor con latencia log-normal, Toxiproxy para inyección de fallas y escenarios k6 de tráfico alto y bajo. Sin corridas ejecutadas. |
(diseñadas, no medidas) p95/p99 en el servicio, tasa de resolución con valor de respaldo, comportamiento del interruptor y hit-rate de :CacheOF. |
60 % — implementación completa, ejecución pendiente | · Diseño del experimento · Implementación |
1.2 Avance del análisis de resultados y justificación de las decisiones de diseño frente a los ASR
Análisis de resultados y justificación
[!IMPORTANT] El análisis completo del experimento HA-08 se encuentra en: informe de resultados (ficha, hipótesis, análisis y evidencias) y en el informe detallado se encuentran los resultados por corrida, sensibilidad al TTL, sensibilidad a la carga y amenazas a la validez.
La siguiente tabla resume el resultado y las justificaciones que se reflejaran en el diseño de arquitectura:
| Experimento | Resultado obtenido | Valor objetivo del ASR | ¿Cumple? | Justificación de la decisión de diseño |
|---|---|---|---|---|
| HA-08 · brazo A (lectura directa, sin CQRS) | p95 = 7,86 ms · 0 % de error | EC-LAT-11: p95 ≤ 150 ms |
✅ Sí — 19× de margen | La línea base ya satisface el ASR. La hipótesis HD-08.1 (que la lectura directa no alcanzaría el umbral) queda refutada. El dictamen se validó además con shared_buffers reducido 4× y el conjunto caliente dispersado físicamente: el p95 solo sube a 8,19 ms (+4,2 %), manteniendo 18× de margen. |
| HA-08 · brazo B (proyección materializada) | p95 = 6,19 ms · 0 % de error | EC-LAT-11: p95 ≤ 150 ms |
✅ Sí — 24× de margen | Es el brazo más rápido, pero la mejora sobre A (21 %) representa < 1,2 % del umbral: no es un argumento de necesidad frente a un ASR que A ya cumple. Su justificación válida es otra (ver §3.1): durante la corrida de alta carga, A impuso ~2,5× la carga de CPU sobre PostgreSQL frente a B — es decir, B se justifica por aislamiento de carga sobre el almacén transaccional, no por latencia. |
| HA-08 · brazo C (proyección + caché) | p95 = 6,72 ms · hit-rate 7,6 % · 0 % de error | EC-LAT-11: p95 ≤ 150 ms |
✅ Cumple, pero es 9 % peor que B | HD-08.3 (el caché aporta mejora adicional) queda refutada en la dirección contraria. Con el hit-rate real, la mayoría de las peticiones pagan la serialización y escritura a Redis sin beneficiarse de un acierto. Subir el TTL a 300 s eleva el hit-rate a 32-33 % pero empeora el p95 (6,50 ms vs. 6,27 ms sin caché). Se descarta C. |
| HA-08 · lag de proyección | p95 ≤ 50 ms | HD-08.4: lag ≤ 2 s | ✅ Sí | La proyección asíncrona se mantiene acotada bajo carga concurrente de lectura y escritura (~5 eventos/s sostenidos durante toda la medición). |
| HA-01 | (sin corridas ejecutadas) | EC-LAT-01/EC-LAT-02: p95 ≤ 225 ms, p99 ≤ 475 ms en el servicio |
⏳ Pendiente | Montaje implementado y listo para ejecutar. El análisis de resultados se completará en la siguiente iteración. |
2. Avances del prototipo versión web/móvil
2.1 Avance de la versión web que incluye navegación a la funcionalidad definida
2.2 Avance de la versión móvil que incluye navegación sobre la funcionalidad definida
2.3 Implementación de condiciones de usabilidad (Accesibilidad, Localización, Internacionalización)
3. Documento de arquitectura ajustado
3.1 Modelos de arquitectura y diseño ajustados conforme a los resultados de experimentación
Los modelos se mantienen sin cambios respecto a la semana 5. El experimento HA-08 refutó que CQRS fuera necesario para cumplir
EC-LAT-11(la línea base sin separación de modelos ya alcanza el umbral con 19× de margen, ver §1.2). Como las vistas publicadas nunca incorporaron el proyector, la proyección materializada ni el caché de estado —CQRS aparecía únicamente como hipótesis dentro del diseño del experimento, no como decisión adoptada en los modelos—, el resultado no obliga a modificar ningún diagrama: confirma la arquitectura vigente en lugar de cambiarla. Lo que sí queda pendiente es cerrar el hueco de trazabilidad que el experimento dejó al descubierto (última fila).
| Vista / modelo | Ajuste realizado conforme a la experimentación | Modelo actualizado |
|---|---|---|
| Vista funcional — componentes | Sin cambios. El modelo publicado resuelve la consulta de estado de siniestro con :MsSiniestros sobre :DBSiniestros, sin proyector ni almacén de proyección — que es exactamente el brazo A validado por el experimento. La réplica de :DBSiniestros se mantiene pasiva (fuera del camino de lectura), decisión que el resultado refuerza: no hace falta poner una copia a servir lecturas para cumplir la latencia. |
Ver modelo |
| Vista de despliegue — AWS | Sin cambios. No se introducen nodos nuevos: el experimento descarta el caché en memoria para este camino de lectura (brazo C es 9 % más lento que B), por lo que no se agrega una instancia de Redis para el estado de siniestro ni un nodo para el proyector. | Ver modelo |
| Vista de información | Sin cambios. El modelo de datos conserva únicamente el esquema transaccional normalizado de siniestros. El esquema de lectura desnormalizado (siniestros_r) existía solo en el montaje del experimento y no se promueve al modelo, al no justificarse por latencia. |
Ver modelo |
| Diseño detallado (tácticas y patrones) | Con el dictamen ya disponible, se deja el registro explícito que EC-LAT-11 se satisface sin tácticas de separación de modelo de lectura, y se deja constancia de que la evidencia de aislamiento de carga (~2,5× de CPU sobre PostgreSQL en el brazo A) queda como insumo para otro posible experimento futuro sobre ese atributo, no de latencia teniendo en cuenta el alcance del presente experimento. |
Ver diseño detallado |
4. Plan de trabajo y tablero
Se evidencia actualización del plan de trabajo y tablero en la plataforma seleccionada por el equipo: Jira.