Qué es Patrón Saga
Transacciones distribuidas mediante secuencias de eventos
Patrón Saga es un patrón para gestionar transacciones distribuidas a través de una secuencia de transacciones locales con acciones compensatorias en caso de fallos.
El Problema
- Los microservicios tienen sus propias bases de datos
- Las transacciones ACID clásicas son imposibles
- Se necesita consistencia entre servicios
Tipos de Saga
- Coreografía — los servicios intercambian eventos
- Orquestación — un coordinador central gestiona
Coreografía
- Los servicios se suscriben a los eventos de otros
- Cada servicio publica su resultado
- Sin punto único de fallo
- Más difícil rastrear el estado
Orquestación
- El coordinador Saga gestiona el flujo
- Llama a los servicios secuencialmente
- Más fácil de rastrear y depurar
- Riesgo de punto único de fallo
Transacciones Compensatorias
- Deshacer pasos ya completados
- Deben ser idempotentes
- Deshacer semántico (no rollback)
- Ejemplo: reembolsar pago en lugar de cancelar