Přeskočit na obsah
_CORE
AI & Agentic Systems Core Informační Systémy Cloud & Platform Engineering Data Platforma & Integrace Security & Compliance QA, Testing & Observability IoT, Automatizace & Robotika Mobile & Digital Banky & Finance Pojišťovnictví Veřejná správa Obrana & Bezpečnost Zdravotnictví Energetika & Utility Telco & Média Průmysl & Výroba Logistika & E-commerce Retail & Loyalty
Reference Technologie Blog Knowledge Base O nás Spolupráce Kariéra
Pojďme to probrat

Saga Pattern — distribuované transakce bez 2PC

01. 01. 2024 1 min čtení advanced

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