Capa de interoperabilidad · Prueba técnica de arquitectura

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

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.