concepto · intermedio · 2 min de lectura
Saga Pattern
El patrón Saga coordina transacciones distribuidas que abarcan múltiples servicios mediante una secuencia de pasos locales, cada uno con su correspondiente paso de compensación en caso de falla.
No requiere conocimientos previos.
Alcance en breve
Cubre
- saga pattern as a core architectural concept
No cubre
- implementation details beyond conceptual understanding
Supone
- The reader understands basic distributed systems concepts.
Resumen
En una arquitectura de microservicios, una operación de negocio —como «crear una orden»— puede requerir que varios servicios ejecuten pasos: el servicio de órdenes reserva stock, el de pagos cobra al cliente, el de envíos agenda despacho. Cada paso es una transacción local en su propia base de datos. Si el pago falla después de haber reservado stock, hay que deshacer la reserva. El patrón Saga coordina esta coreografía.
Cada paso de la saga tiene un paso de compensación: la acción que deshace el paso si algo falla más adelante. No es un rollback atómico como en una base de datos relacional —cada paso ya fue commiteado— sino una compensación semántica: si cobraste, devolvés el dinero; si reservaste stock, lo liberás.
Hay dos formas de coordinar una saga:
- Coreografía: cada servicio sabe qué hacer después de su paso y emite un evento. Es descentralizada.
- Orquestación: un coordinador central le dice a cada servicio qué hacer en cada paso. Es más fácil de entender y monitorear.
Alcance y supuestos
Este paquete cubre el concepto a nivel arquitectónico: qué es, qué problema resuelve, cómo se relaciona con otros patrones del ecosistema, y en qué contexto tiene sentido aplicarlo. No cubre detalles de implementación específicos de cada tecnología ni configuraciones de proveedores cloud concretos. Asume que el lector entiende los fundamentos de sistemas distribuidos y arquitectura de software.
Modelo mental
Organizar una mudanza. Contratás un flete, comprás cajas, pedís ayuda a amigos. Si el flete cancela a último momento, no podés «des-comprar» las cajas —ya las tenés—, pero podés devolverlas. La saga coordina que, si algo falla, cada paso que ya se ejecutó tenga una forma de revertirse.
Uso práctico
- ✅ Transacciones distribuidas sin 2PC: evita locks distribuidos y mejora disponibilidad.
- ✅ Resiliencia: cada servicio puede fallar independientemente, y la saga maneja la compensación.
- ❌ Sin garantía de atomicidad: entre el paso y la compensación puede haber inconsistencias visibles temporalmente.
- ❌ Complejidad de compensación: no todo es compensable —enviar un email, por ejemplo, no se puede «desenviar»—.
Ejemplo trabajado: saga de creación de orden
Un ecommerce procesa una orden en 3 pasos: reservar stock, cobrar pago, despachar envío. El orquestador Saga ejecuta cada paso en secuencia. Si el cobro falla, ejecuta la compensación del paso 1 —liberar stock—. Si el despacho falla, ejecuta compensación de paso 2 —devolver pago— y de paso 1 —liberar stock—. El usuario no ve estados intermedios inconsistentes: la orden está confirmada o está cancelada y todo volvió al estado original.
Evidencia
- Microsoft Azure Architecture Center, Cloud Design Patterns documenta el patrón Saga, sus variantes y las mejores prácticas de implementación.
Fuentes citadas
- Microsoft Azure Architecture Center, Cloud Design Patterns (Oficial, 21-07-2026)