Reto 2 — Disponibilidad y seguridad en el sistema de pedidos de CCP

Grupo 1 · ARTI4109 Arquitectura de Software · MATI, Universidad de los Andes

Integrantes
Carlos Chaparro
Javier Rodríguez
Alexander Reyes
Nicolás E Rozo E

CCP es una comercializadora de productos de consumo masivo que opera en cinco países, 7x24x365. Su sistema nuevo tiene que reconocer dos situaciones anómalas que, vistas desde adentro, parecen operación normal. La primera es una sesión de vendedor abierta con credenciales correctas desde un dispositivo que no es el que CCP le suministró. La segunda es un pedido que se detuvo en su cadena sin lanzar ningún error. La cadena son las tres etapas que siguen al pedido (facturación, descargue de inventario y validación de despacho), y su cierre habilita a logística.

Este wiki documenta la arquitectura que el grupo 1 diseñó para atender esas dos situaciones.

Cómo se recorre

Las páginas siguen el orden en que se construyó la arquitectura. Los insumos describen el negocio sin proponer soluciones. De ellos salen los escenarios de calidad, llamados ASR (architecturally significant requirements). Las decisiones y los modelos responden a esos escenarios, y los experimentos ponen a prueba dos de ellas. Cada página se sostiene sola, así que se puede entrar por cualquiera. Para buscar un término en todo el sitio, usa Ctrl + K o ⌘ + K.

Etapa Página Qué responde
Insumo Problema que resuelve la arquitectura Qué es CCP, qué promete su sistema nuevo y por qué lo difícil es reconocer lo anómalo
Insumo Stakeholders Quién usa el sistema, quién recibe sus avisos y quién responde cuando algo se detiene
Insumo Restricciones Lo que la arquitectura hereda y no puede negociar, separado de las hipótesis de solución
Insumo Historias de usuario Qué necesita hacer cada actor, organizado en épicas, capacidades e historias
Insumo Glosario El vocabulario fijado: actores, pedido y las tres etapas que lo siguen
Escenarios ASRs de disponibilidad y seguridad Los cuatro escenarios de calidad, ASR-1 a ASR-4, con su ambiente, su medida y su origen
Decisiones Registro de ADR Las diez decisiones de arquitectura que atienden los cuatro escenarios
Modelos Diagramas de arquitectura La portada de los diagramas, con la trazabilidad entre ASR, ADR y diagrama
Modelos Componentes · Concurrencia · Información · Despliegue Las cuatro vistas, con diez diagramas dibujados en draw.io
Validación Experimentos E01 y E02 Las dos hipótesis, el montaje común, la carga y cómo se decide cada una
Validación Resultados de E01 y E02 Qué arrojaron las ejecuciones y qué decisión sale de cada experimento

Los cuatro escenarios

Dos escenarios son de seguridad y dos de disponibilidad. En cada atributo, uno pide detectar la situación anómala y el otro pide reaccionar a ella; en disponibilidad, la reacción es reparar la cadena.

ASR Atributo Qué exige
ASR-1 Seguridad · detección Detectar en ≤ 2 s que una sesión de vendedor la opera un dispositivo distinto del suministrado, y avisar al área de seguridad
ASR-2 Seguridad · reacción Ante una escritura hecha por un actor con permiso solo de consulta, bloquearlo, cerrar su sesión y revertir la escritura en ≤ 5 s
ASR-3 Disponibilidad · detección Detectar en ≤ 30 s que la cadena de un pedido confirmado quedó detenida sin señalar error, con ≤ 1 falsa alarma por hora
ASR-4 Disponibilidad · reparación Reanudar la cadena detenida desde la etapa que falló en ≤ 5 s, sin duplicar factura, descargue ni orden de despacho

ASR-3 y ASR-4 comparten un presupuesto conjunto de 35 s, desde que la cadena se detiene hasta que se reanuda.

Lo que dijeron los experimentos

Las ejecuciones de octubre de 2026 probaron dos hipótesis por separado, para que una pudiera caer sin arrastrar a la otra. E01 prueba la decisión que el equipo propuso para ASR-1. E02 prueba una alternativa más simple a la decisión propuesta para ASR-3.

E01, seguridad (ASR-1). La hipótesis H1 dice que basta con comparar la huella del dispositivo apenas se abre la sesión, que es lo que propone ADR-007. El Verificador de dispositivo avisó al área de seguridad en las 50 aperturas desde un dispositivo distinto del suministrado, con 115 ms en el peor caso, y no dio falsas alarmas. H1 se sostiene: ADR-007 queda para aceptar.

E02, disponibilidad (ASR-3). La hipótesis H2 dice que basta con un Monitor que consulta de forma periódica la salud de cada etapa. En su primera versión, el sondeo solo comprobaba que la etapa estuviera viva: detectó las etapas caídas en unos 6 s, pero no vio ninguno de los 30 pedidos congelados dentro de una etapa viva. El equipo la refinó: el punto de salud ahora informa los pedidos que la etapa lleva más de 15 s sin terminar, y cada etapa es idempotente. Así, el punto de salud informó los 15 pedidos congelados, que llegaron a la Dead-Letter-Queue en ≤ 17,6 s, y ninguna entrega repetida repitió su efecto. H2 se sostiene, y ADR-004 y ADR-005 se actualizan.

El detalle de cada criterio está en Resultados de E01 y E02.

El prototipo

Fuera de este wiki, en el repositorio, vive el prototipo de los experimentos: doce micros en Java 21 y Spring Boot 3, con PostgreSQL y RabbitMQ en Docker Compose. make help lista los comandos; make e2e verifica el montaje, make e02-rapido corre E02 en unos 25 min y make experimentos corre E01 y E02 de decisión, unas 3 h 30 min.

Cómo agregar o cambiar una página

Todo archivo .md que llegue a main dentro de docs/ se publica en este sitio, y el sitio se reconstruye solo. Sin front matter, el título sale del primer encabezado #. Con front matter se controla el título y la posición en el menú:

---
title: Nombre de la página
nav_order: 10
---

Este wiki es la fuente de verdad del reto, y Helix, la herramienta del curso, es una réplica que se carga desde aquí. Un cambio se hace primero en docs/.