Sobes.tech
Senior

Tell me about the SAGA pattern: orchestration and choreography.

sobes.tech AI

Answer from AI

The SAGA pattern is used for managing distributed transactions in a microservices architecture, where traditional ACID transactions are not possible.

Main idea:

  • A transaction is broken down into a sequence of local transactions across different services.
  • Each local transaction has a compensating operation to rollback in case of an error.

There are two main approaches to implementing SAGA:

  1. Orchestration

    • A central component — the orchestrator — manages the sequence of steps.
    • The orchestrator calls services in order, controlling the success or failure of each step.
    • In case of an error, the orchestrator initiates compensating transactions for the steps already completed.
  2. Choreography

    • No central controller.
    • Each service publishes events about its actions.
    • Other services subscribe to these events and react by performing their local transactions.
    • In case of an error, services independently trigger compensating operations based on the events.

Example:

  • When placing an order (Order Service), an order is created.
  • An "OrderCreated" event is published.
  • The payment service (Payment Service) listens to this event and attempts to process the payment.
  • If the payment is successful, a "PaymentSucceeded" event is published.
  • If the payment fails, a "PaymentFailed" event is published, and the Order Service initiates order cancellation.

The choice between orchestration and choreography depends on requirements for control, complexity of business logic, and architectural preferences.