Command side
Handles state changes. Validates + emits events. Events go to append-only store. Never updates existing rows.
Advertisement
Command side
Handles state changes. Validates + emits events. Events go to append-only store. Never updates existing rows.
Advertisement
Event store
Immutable log of every event. Full history preserved. Time travel + audit are free.
Read side
Materialized views built from events. Denormalized for query needs. Multiple views per event stream.
Projector
Reads events + updates read models. Idempotent — same event twice must be safe. Can rebuild views by replaying from event log.
Eventual consistency
Read side lags write side. Users may not see their write immediately. Handle in UX — 'processing...' message.