CQRS / EventSourcing
by Krzysztof Konieczny
1. resources
1.1. http://foreverframe.net/cqrses-1-a-bit-of-theory/
1.2. https://bulldogjob.pl/articles/122-cqrs-i-event-sourcing-czyli-latwa-droga-do-skalowalnosci-naszych-systemow
1.3. People
1.3.1. Greg Young
1.3.2. Udi Dahan
1.3.3. Martin Fowler
1.4. https://martinfowler.com/eaaDev/EventSourcing.html
2. CQRS
2.1. CQS
2.1.1. „Pytanie nie powinno zmieniać odpowiedzi.”
2.2. CQRS
2.2.1. „Mówiąc o CQS myślimy o metodach. Mówiąc o CQRS myślimy o obiektach.”
2.2.2. "CQRS and Event Sourcing are not architectural styles. Service Oriented Architecture, Event Driven Architecture are examples of architectural styles." Greg Young
2.2.3. Arch
2.2.3.1. Command
2.2.3.2. Command Bus
2.2.3.3. Command Handler
2.2.3.4. Domain objects (models)
2.2.3.5. Event
2.2.3.6. Event Bus
2.2.3.7. Event Handler
2.2.3.8. Read Database Abstraction
2.2.4. Flow
3. Event Sourcing
3.1. Zadaniem ES jest bowiem odtwarzanie aktualnego stanu aplikacji (patrz obiektów domenowych) na podstawie zdarzeń składowanych w magazynie danych zwanym Event Store. Z początku może wydawać się to rozwiązaniem bezsensownym jednak takim nie jest, ponieważ na podobnej zasadzie działają chociażby systemy bankowe.
3.2. The key to Event Sourcing is that we guarantee that all changes to the domain objects are initiated by the event objects. This leads to a number of facilities that can be built on top of the event log:
3.2.1. Complete Rebuild
3.2.2. Temporal Query
3.2.3. Event Replay