ADR-004: saga orquestada en order-service
Aceptado el 10/11/2026 por Andrés.
Contexto
Crear orden toca inventario, pasarela, OMS y notificaciones. Hoy cada canal coordina su propia cadena, sin compensaciones.
Opciones
| Opción | Problema |
|---|---|
| Coreografía por eventos | El flujo queda repartido en cinco servicios; nadie responde en qué va una orden |
| Delegar en el OMS | Válido solo si el OMS orquesta; el supuesto 1 dice que no |
| Motor de flujos (Temporal, Step Functions) | Otra pieza que operar para un flujo de nueve pasos |
| Orquestador en código dentro de order-service | Hay que escribir estado, reintentos y recuperación |
Decisión
Orquestación en order-service, con estado en su base, outbox y pasos idempotentes. El cobro es el pivote: antes se compensa, después se reintenta. Detalle en docs/to-be/04-saga-crear-orden.md.
Qué se sacrifica
order-serviceconoce a los demás participantes: es el punto de mayor acoplamiento lógico.- El manejo de estado y recuperación es código propio.
Cuándo se revisaría
Al sumar la tercera saga (devoluciones, cancelaciones): ahí un motor de flujos empieza a pagar su costo. También si el supuesto 1 resulta falso.