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 |