Přeskočit na obsah
_CORE
Architektura Expert

Saga Pattern — distribuované transakce bez 2PC

SagaTransactionsMicroservices
3 min čtení

Implementace Saga patternu pro konzistenci dat napříč mikroservisami. Choreografie vs orchestrace.

Problém distribuovaných transakcí

V monolitu stačí DB transakce. V mikroservisách má každá služba vlastní DB — klasické transakce nefungují. Saga je sekvence lokálních transakcí s kompenzačními akcemi.

Choreografie vs Orchestrace

Choreografie: Služby komunikují přes events, žádný centrální koordinátor.

Orchestrace: Centrální Saga orchestrátor řídí sekvenci kroků.

class CreateOrderSaga {
    steps = [
        { action: 'order.create', compensate: 'order.cancel' },
        { action: 'payment.process', compensate: 'payment.refund' },
        { action: 'inventory.reserve', compensate: 'inventory.release' },
        { action: 'order.confirm', compensate: null }
    ];
    async execute(data) {
        const completed = [];
        for (const step of this.steps) {
            try {
                await this.invoke(step.action, data);
                completed.push(step);
            } catch (error) {
                for (const s of completed.reverse())
                    if (s.compensate) await this.invoke(s.compensate, data);
                throw error;
            }
        }
    }
}

Kdy co použít

  • Choreografie — jednodušší sagy (2-4 kroky)
  • Orchestrace — složitější sagy (5+ kroků)
  • Nástroje: Temporal, Camunda, AWS Step Functions

Shrnutí

Saga pattern vyžaduje pečlivý návrh kompenzačních akcí a idempotentních operací. Pro komplexní workflows doporučujeme orchestraci s Temporal.

Potřebujete pomoct s implementací?

Náš tým má zkušenosti s návrhem a implementací moderních architektur. Rádi vám pomůžeme.

Nezávazná konzultace