Capsule Informatiche di Lello De Luca
← Tutte le Capsule

Saga Pattern: transazioni locali e compensazioni

DecomposizionePattern classico

Scomporre il processo in transazioni locali coordinate da eventi o da un orchestratore; in caso di errore eseguire azioni compensative di business.

Il problema

Una business transaction attraversa più servizi indipendenti e non può essere racchiusa in un'unica transazione ACID.

Il pattern

Scomporre il processo in transazioni locali coordinate da eventi o da un orchestratore; in caso di errore eseguire azioni compensative di business.

Come funziona

Ogni step committa localmente. Una compensazione non è un rollback SQL: è una nuova operazione che annulla o neutralizza l'effetto precedente secondo le regole di dominio.

Esempio sanitario

Benefici

  • Evita lock distribuiti
  • Mantiene autonomia dei servizi
  • Rende esplicito il workflow

Trade-off

  • Consistenza eventuale
  • Compensazioni complesse
  • Richiede idempotenza e observability

Quando usarlo

Per processi multi-servizio con stati intermedi e compensazioni ben definite.

Quando evitarlo

Quando serve atomicità immediata e non esiste una compensazione sensata.

Pattern correlati

RIFERIMENTI

Fonti e riferimenti

Microservices Design Patterns - Draft

Draft caricato nel progetto

ADT - Architettura tecnica e pattern distribuiti

Capsule Informatiche · Materiale progettuale