¿Qué es el Patrón SAGA?

El Patrón SAGA aplicado a microservicios nos ayuda a garantizar la integridad en transaccione distribuidas repartidas entre microservicios.

El Patrón SAGA divide esta transacción distribuida en transacciones locales.

El Patrón SAGA puede aplicarse de 2 formas (subpatrones)

  • Patrón SAGA mediante coreografía
  • Patrón SAGA mediante orquestación

Patrón SAGA mediante coreografía

En este caso cada transacción local publica un evento cuando el trabajo se ha concluido. La siguiente transacción local recibe el evento y hace su tarea. El trabajo finaliza cuando todas las transacciones locales se concluyen:

Cada servicio debe conocer e implementar cómo responder a ciertos estados.

Las ventajas de este método es que es fácil de implementar y los endpoints están poco acoplados, por el contrario puede volverse complicado cuando crecen el número de transacciones y pueden crearse dependencias cíclicas entre servicios.

Patrón SAGA mediante orquestación

Para implementar este patrón es necesario un proceso o servicio encargado de la coordinación (el llamada Orquestador o Manager) de todo el proceso.

Si alguna transacción falla el orquestador es el responsable del rollback de las transacciones previas ejecutadas.

 

Este método tiene la ventaja de ser más sencillo de entender y mantener y además su complejidad no crece cuando crece el número de transacciones. Por otro lado la lógica de negocio está implementada en el orquestador y la disponibilidad y escalabilidad depende de este.

Por suerte existen bastantes frameworks y librerías que nos ayudan a implementar este patrón, como:

Axon que es un framework y server creado específicamente para manejar microservicios

 

O Motores BPM como Camunda que por su ligereza son perfectamente válidos para hacer esta orquestación, podéis verlo en este ejemplo:

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s