Sobes.tech
Middle+

¿Qué es una saga en el contexto de la gestión de transacciones?

sobes.tech AI

Respuesta de la IA

Saga es un patrón de gestión de transacciones distribuidas en arquitectura de microservicios. Consiste en una secuencia de transacciones locales, donde cada transacción actualiza datos dentro de un solo servicio.

Si alguna transacción local en la secuencia falla, la saga ejecuta un conjunto de transacciones de compensación para revertir los cambios realizados por las transacciones locales que se completaron con éxito, restaurando así la integridad del sistema.

Dos enfoques principales para implementar sagas:

  1. Coreografía: Los servicios intercambian eventos directamente, sin depender de un coordinador central. Cada servicio escucha eventos generados por otros servicios y realiza sus transacciones locales y/o publica nuevos eventos en respuesta.

    • Ventajas: Más sencillo de implementar para un número reducido de servicios, no hay un punto único de fallo.
    • Desventajas: Difícil de rastrear el flujo de ejecución y dependencias cíclicas potenciales, más difícil de depurar.
  2. Orquestación: Un orquestador central (orquestador de saga) gestiona la secuencia de ejecución de las transacciones locales. El orquestador envía comandos a los servicios para que realicen sus transacciones locales y responde a los eventos devueltos por los servicios (éxito/fracaso) para tomar decisiones sobre el siguiente paso o ejecutar transacciones de compensación.

    • Ventajas: Claridad en la responsabilidad, más fácil de rastrear y depurar el flujo de ejecución, más sencillo de implementar lógica compleja.
    • Desventajas: El orquestador puede ser un punto único de fallo, requiere lógica adicional para gestionar el estado de la saga.

La elección de la implementación depende de la complejidad del proceso de negocio, la cantidad de servicios involucrados y los requisitos de gestión y observabilidad. Saga no garantiza atomicidad en el sentido clásico (ACID), pero asegura consistencia eventual.