Skip to content

ADR_00017: Event Replay Policy

Status: Proposed / Accepted
Date: 2025-12-30


Context

V systému s event-driven architekturou je potřeba:

  • rebuild read modelů (projekce),
  • obnovit cache nebo analytické modely,
  • provádět migrace dat.

Bez jasné policy pro replay hrozí:

  • neúmyslné změny doménového stavu,
  • porušení business pravidel,
  • nekonzistence mezi projekcemi a autoritativním stavem,
  • nemožnost bezpečně provádět opakované zpracování.

Decision

Replay je povolen pouze pro read modely

  • Eventy mohou být znovu aplikovány na projekce, cache nebo analytické modely.
  • Replay nesmí měnit autoritativní doménový stav.

Replay není povolen pro doménový stav

  • Historie doménového modelu je nezměnitelná.
  • Chyby v doménovém stavu se řeší opravnými procesy, nikoli replay.

Idempotence

  • Každý handler musí být idempotentní, aby opakovaný replay neměl vedlejší efekty.
  • Replay je bezpečný i při opakovaném spuštění.

Consequences

Pozitiva

  • Bezpečné rebuildy read modelů
  • Konzistence projekcí s event store
  • Možnost rychlé obnovy analytických modelů

Negativa

  • Replay nelze využít pro opravy doménového stavu
  • Nutnost správně navržených idempotentních handlerů
  • Vyšší nároky na kvalitu eventů

Rationale

Rozhodnutí Důvod
Omezení replay na read modely Zabránění nekontrolovaným změnám domény
Idempotentní handlery Bezpečný replay bez vedlejších efektů
Historie domény nezměnitelná Zachování integrity dat a auditability
Bez replay pro opravy Chybám se čelí procesně, ne technicky přes eventy