Getting Started with Event Storming
Learn how to use Event Storming to discover and model your business domain effectively
Introduction to Event Storming
Event Storming is a collaborative modeling technique that helps teams explore complex business domains. It was introduced by Alberto Brandolini and has become a valuable tool in Domain-Driven Design (DDD) and Event-Driven Architecture (EDA).
Why Event Storming?
At FlowMart, we use Event Storming because it:
- Brings together domain experts and technical teams
- Helps identify domain events, commands, and aggregates
- Aligns perfectly with our event-driven architecture
- Facilitates better understanding of business processes
- Helps in defining service boundaries and responsibilities
Example Event Storming Session
Here is an example of an event storming session for the Orders domain.
Event Storming Example in Lucid Chart
Git workflow
Key Concepts
Domain Events
- Represent something significant that has happened in the business domain
- Written in past tense (e.g., “Order Placed”, “Payment Received”)
- Captured on orange sticky notes during the session
Commands
- Triggers that cause domain events
- Written in imperative form (e.g., “Place Order”, “Process Payment”)
- Captured on blue sticky notes
Aggregates
- Business entities that ensure consistency
- Group related events and commands
- Captured on yellow sticky notes
Policies
- Business rules that react to events
- Automated processes or human workflows
- Captured on purple sticky notes
Event Storming Levels
-
Big Picture Event Storming
- High-level view of the entire business domain
- Focuses on major events and workflows
- Helps identify bounded contexts
-
Process Level Event Storming
- Detailed view of specific processes
- Includes commands, policies, and external systems
- Helps design individual services
-
Software Design Level Event Storming
- Technical perspective of the domain
- Includes aggregates, entities, and value objects
- Leads to implementation decisions
Benefits for FlowMart
Event Storming has helped us:
- Design our microservices architecture
- Identify service boundaries
- Define event contracts between services
- Improve collaboration between teams
- Reduce misunderstandings and rework
Prerequisites for Event Storming
To conduct an effective Event Storming session, you’ll need:
- A large modeling space (physical or virtual)
- Sticky notes in different colors
- Domain experts and technical team members
- A skilled facilitator
- 2-4 hours of uninterrupted time
Next Steps
Continue reading to learn: