Sobes.tech
Middle+

Cos'è una saga nel contesto della gestione delle transazioni?

sobes.tech AI

Risposta dell'AI

Una saga è un modello di gestione delle transazioni distribuite in un'architettura a microservizi. Rappresenta una sequenza di transazioni locali, in cui ogni transazione aggiorna i dati all'interno di un singolo servizio.

Se una transazione locale nella sequenza fallisce, la saga esegue un insieme di transazioni di compensazione per annullare le modifiche apportate dalle transazioni locali precedentemente completate, ripristinando così l'integrità del sistema.

Due approcci principali per implementare le saghe:

  1. Coreografia: I servizi scambiano eventi direttamente, senza fare affidamento su un coordinatore centrale. Ogni servizio ascolta gli eventi generati da altri servizi e esegue le proprie transazioni locali e/o pubblica nuovi eventi in risposta.

    • Vantaggi: Più semplice da implementare per un numero ridotto di servizi, nessun punto singolo di fallimento.
    • Svantaggi: Difficile tracciare il flusso di esecuzione e le dipendenze cicliche potenziali, più difficile da debug.
  2. Orchestrazione: Un orchestratore centrale (orchestratore di saga) gestisce la sequenza di esecuzione delle transazioni locali. L'orchestratore invia comandi ai servizi per eseguire le loro transazioni locali e risponde agli eventi restituiti dai servizi (successo/fallimento) per prendere decisioni sul passo successivo o eseguire transazioni di compensazione.

    • Vantaggi: Chiarezza nella responsabilità, più facile da tracciare e debug, più semplice da implementare logiche complesse.
    • Svantaggi: L'orchestratore può essere un punto singolo di fallimento, richiede logica aggiuntiva per gestire lo stato della saga.

La scelta dell'implementazione dipende dalla complessità del processo di business, dal numero di servizi coinvolti e dai requisiti di gestione e osservabilità. La saga non garantisce atomicità nel senso classico (ACID), ma garantisce coerenza eventuale.