Wzorzec saga
Proces biznesowy w kilku serwisach prowadzony jako łańcuch lokalnych transakcji, z akcją kompensującą, która cofa krok, gdy padnie któryś z kolejnych.
Zamówienie rezerwuje towar, obciąża kartę i zamawia kuriera, każde w innym serwisie. Gdy kurier się nie uda, saga zwraca płatność i zwalnia towar zamiast robić rollback. W choreografii każdy serwis reaguje na zdarzenia innych; w orkiestracji jeden koordynator mówi każdemu serwisowi, co ma zrobić. Inne procesy widzą stany pośrednie, kompensacja jest decyzją biznesową, a nie cofnięciem, i każdy krok musi być idempotentny.
Powiązane hasła
- Commit dwufazowy (2PC): Protokół, w którym koordynator prosi każdą bazę o przygotowanie zmiany, a potem każe wszystkim ją zatwierdzić albo wszystkim wycofać.
- Wzorzec outbox (transactional outbox): Zapisanie zdarzenia w tabeli outbox w tej samej transakcji bazy co sama zmiana, a potem osobne opublikowanie go w brokerze.
- Baza danych na serwis (database per service): Każdy serwis jest właścicielem swoich danych i żaden inny nie czyta jego tabel bezpośrednio; pozostałe korzystają z jego API albo zdarzeń.
- Idempotentność (idempotency key): Operacja jest idempotentna, jeśli wykonana dwa razy daje ten sam efekt co raz. Ponowienia stają się bezpieczne.
- Trwałe wykonanie (durable execution): Prowadzenie długiego procesu tak, żeby postęp zapisywał się po każdym kroku, dzięki czemu przetrwa awarię i może czekać godzinami albo dniami, a potem wrócić.
