Fantastic Nine
Summary
- Complexity is our enemy
- Messaging: passing information across time Data Temporality
- Past: event, fact
- Present: state, properties
- Future: command, intent
- system types:
- line of business
- IoT
- Business Intelligence
Aggregate Root Decider
From Aggregate Root Decider
Go to text →
- "protect the system when taking a meaningful decision"
- weird name choice
- @yves-goeleven doesn't have internal state in his agg roots
Task Processing
From Task Processing
Go to text →
- used when a command needs to be invoked after a certain condition has become true, but usually only when conditions are not known
- in many cases, let user invoke the command at the right time
- in Line of Business applications, this is the only thing the UI is used for
- when conditions are known / only postponed in time, it can be automated
- when conditions are comples, background service monitors state until conditions are met
Projection
From Projection
Go to text →
- turn event history into human-readable state
- same person? on demand.
- another person? eventual consistency... choose the destination database depending on querying needs
Reaction
From Reaction
Go to text →
- invoke an action in response to an event
- transient: notify a person who may or may not be paying attention
- guaranteed reaction: obligation to "perform a command", use delivery guarantees
Delegation
From Delegation
Go to text →
- an extension to a LoB system
- delegate to the pros
- Saga is a series of delegations
Event Generator
From Event Generator
Go to text →
- typical use is to capture state changes, i.e., sensors
- virtual event generators can be used to detect changes in databases
Stream Processing
From Stream Processing
Go to text →
- use to filter, count, group, join, or window event streams
- into a new derived (more meaningful) event
- needs a standing query engine... i.e., Databricks or Reactivex
- typically followed by a Reaction
Downstream Activity
From Downstream Activity
Go to text →
- command needs a result
- low-level, immediate
State Transformation
From State Transformation
Go to text →
- transforms state into report (which is also state, just more high-level) or a different structure (e.g. visual)
- common method is ETL
Bonus integration styles
Highlights
- focus on information flow over time, not data structure
- 3 types of information: command, event, state
- 9 transition patterns
Resources
Children