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:

Aggregate Root Decider

  • "protect the system when taking a meaningful decision"
  • weird name choice
  • @yves-goeleven doesn't have internal state in his agg roots

Task Processing

  • 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

  • turn event history into human-readable state
  • same person? on demand.
  • another person? eventual consistency... choose the destination database depending on querying needs

Reaction

  • 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

  • an extension to a LoB system
  • delegate to the pros
  • Saga is a series of delegations

Event Generator

  • typical use is to capture state changes, i.e., sensors
  • virtual event generators can be used to detect changes in databases

Stream Processing

  • 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

  • command needs a result
  • low-level, immediate

State Transformation

  • 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
  1. Aggregate Root Decider
  2. Delegation
  3. Downstream Activity
  4. Event Generator
  5. Projection
  6. Reaction
  7. State Transformation
  8. Stream Processing
  9. Task Processing