SlideShare una empresa de Scribd logo
1 de 35
Descargar para leer sin conexión
Event Storming
PROCESS, STICKES & EVENTS
Francesco Garavaglia
01/2016
Agenda  The problem
 The solution: Event storming
 Summary
3
The Problem
The Problem
0
0,2
0,4
0,6
0,8
1
1,2
1,00 2,00 3,00 4,00 5,00 6,00 7,00 8,00 9,00 10,00
Complexity
Time elapsed
Changing Cost
Green Field illusion
Maintainence
I cannot do this
Refactoring from
scratch
How to gather
requirements from
many different
departments/speci
alists?
4
Department C
Department E
Department A
Department D
Department B
Sequential data
gathering?
Time
6
Or design by committee?
The Problem
7
Event Storming
 Event Storming is a fun way of bringing developers and business experts together and drive your
analysis from the outside and quickly explore complex business domains in hours instead of
days/weeks.
Event Storming (or Model storming) is a way of
starting your analysis from the outside and quickly
explore complex business domains.
Invented by Alberto Brandolini
See
http://ziobrando.blogspot.dk/2013/11/introducing-
event-storming.html
The Problem
Much
requirements
gathering still
follow in the steps
of structural or
classic OO design
WE WRITE USE CASES/STORIES
AND AFTERWARDS LOOK
FOR NOUNS AND VERBS
8
9
Usually we start with a simple model
The Problem
10
And as time goes by…
The Problem
11
It gets more complicated
The Problem
12
And finally we drown
The Problem
We end up with
One Domain Model
to Rule them All
CAN’T WE AVOID
CEREMONIAL MODELING?
SOMETHING EASIER, FASTER
AND BETTER?
13
14
Event Storming
 All togher into the same room
 Unlimited modelling surface
 Invite the right People
 Those who bring the questions
 Those who know the answers (not all of them)
 Value is in the interaction between people: miss one and you’ll miss n-1 interactions
 Refine the model step-by-step
The Solution: ES
15
Hack the space
 There is no perfect room for a event storming
 Hacking the space is up to you
 Unlimited modelling space: can’t tell a problem size before exploring it
 Table creates the wrong phisical space
 position are fixed, no emerging alliances
 posture is far from optimal
 too easy to switch on laptops or other distractions
 No body language to observe
The Solution: ES
16
Needed stuff
The Solution: ES
17
How to run EventStorming session
 Explore the domain starting from Domain/Business
 Simple semantic and notation
 Represent the state transitions
 Gives us precision
 Easy to grasp by everybody in the room
 Place them along a timeline to visualize the process
 An event might be the predecessor or the follower of another one
The Solution: ES
18
An Event message is non-prescriptive of what should happen in other services. It leaves this open to the
recipients, so that they themselves determine what to do based on occurrence of the event.
Events always carry a name in its past-tense form: OrderWasAccepted, OrderHasShipped,
CustomerWasReimbursed
Other qualities
 Immutable, i.e. content cannot be changed
 Always carries the ID of the Business Object it relates to
 An event can and will typically will be published to multiple consumers.
 The publisher of the event does not know who the recipients are
 And it doesn’t know what the recipients intend to do with the event
“An Event describes something that HAS happened”
What is an Event?
The Solution: ES
19
 User Action model it as a Command
 External system
 Time
 Other Domain Events
 Documents
External
Time
Command Role
Event Event
Document
What does it cause Domain Events?
The Solution: ES
20
Define a language…
A physical model provides a safe
support for spotting critical areas in
your business process
It’s not like
that
The Solution: ES
21
..Along the time line
Enforce narratives: People like telling Stories, not just filling diagrams or template
 Encourage experts to tell a story
 Look for concrete examples
 look for edge cases, they fit perfectly in a narrative and they should fit into your model too
 Eventually turn them into tests
The Solution: ES
22
Or reverse narrative
 Use Time line in a reverse mode:
What was the
path that led us
here?
What needs to
happen before,
so that this event
can happen
too?
The Solution: ES
23
A Command message is prescriptive of what should happen. This is a stronger form of coupling than Event and Document
messages.
A Command’s primary goal is to capture USER INTENT
A Command supports a single usecase and targets a single Business Object
Commands always carry a name in its imperative form: CreateOrder, ShipOrder, CancelOrder, ReimburseCustomer, etc.
Other qualities
 Immutable, i.e. content cannot be changed
 Always carries the ID of the Business Object that it relates to
 A command can only be handled by ONE service
 The Operations that consume Commands don’t return values – but can throw exceptions
 Commands mutate Business Object state which results in one or more Events being published
“A command describes a Task that you want someone else to carry out for you and the recipient can
reject the Command”
Events are often the side effect of Commands
The Solution: ES
24
Commands & Events
Receives a
Command
Asynchronousl
y
Publishes multiple
Events
asynchronously
The Solution: ES
25
Entering the process manager
Process managers are the home of reactive behaviour in the systems «Whanaver» is the most
common word here
 Whenever we receive an
invoice we schedule a
payment
 Whenever we receive a Bs.we
try to reconcile it
Suppler
invoice
receiver
Bank
Statement
Received
Schedule
Payment
Reconcile
Operation
The Solution: ES
26
Using Business Events to drive Business Processes
Sales Service
Shipping
Billing
Sales
Customers
MessageChannel
Online Ordering System
Web Shop
(Composite UI)
Billing Service
Shipping Service
Order
Accepted
Event
AcceptOrde
r
Command
The sales
fulfillment
processing
can now
begin…
The Solution: ES
27
Not all the results are visible
 The model on the paper roll is huge and tangible but more value is created along the way
Event
Storming
More often than not, old
problems find a solution
during the workshop
The Solution: ES
28
Not all the results are visible
 Conflicts and potential overlappings are highlighted
 Can finally see the Big Picture
 Conversations can finally Happen
 And ideas are popping out
The Solution: ES
29
 Explore Aggregates Outside In
 An Aggregate receives Commands and decides to execute them or reject
them
 If the Aggregate executes a Command it will produce one or more Domain
Events as a result
Exploring…..
The Solution: ES
30
Invoice
InvoiceLine
*
Account *
What:
• Cluster coherent Entities and Value
Objects, with complex associations into
Aggregates with well defined boundaries.
• Choose one entity to be root and control
access to objects inside the boundary
through the root.
• External objects hold references to the
root
• Aggregates only refer to other aggregates
by identity (their id)
Motivation:
Control invariants and consistency through the aggregate root.
Enables: Loading schemes, coarse grained locking and…
Ensuring consistency & transactional boundaries for Distributed scenarios
Root
….Aggregates
The Solution: ES
31
 Explore Sub domains
 Different areas of responsibility map pretty well to different subdomains or
portions of the pork
 Explore Bounded Contexts
 During the discussion, some conflict areas with regards to different
interpretations of terms might emerge
 Draw boundaries between the multiple consistent models that will coexist in
your domain
31
… And sub-domains
The Solution: ES
32
Conceptual CQRS
Users decide actions
according to the real world
experience (things they know
which are not in the system)
and read Model
Humans decide according
to different sets of info (ex:
faces, pictures, surnames,
ecc)
The model of anything: CQRS
The Solution: ES
33
Summary: Event Storming
 Legend:
 User Action modeled as a Command
 External system
 Time
 Domain Events
 Documents
 IT Operations (Gateway)
 Aggregate
 Read Model
External
Time
Comma
nd
Role
Event Event
Docume
nt
IT Ops
Read
Model
Aggregate
Summary
34
Event Storming is
 Powerful
 come up with a comprehensive model of a complete business flow in hours instead of weeks.
 Engaging:
 bring people with the questions and people who know the answer in the same room and to build a
model together
 Efficient
 the resulting model is perfectly aligned with Event Sourcing and EDA, and allows for a quick
determination of Bounded Context and Aggregate boundaries and thereby also Service boundaries
 Easy
 the notation is ultra-simple. No complex UML
 Fun
 Eventstorming workshops and fun, people are energized and deliver more than they expected. The right
questions arise, and the atmosphere is the right one.
Summary
Thanks
FRANCESCO.GARAVAGLIA@GMAIL.COM

Más contenido relacionado

La actualidad más candente

Strategic Domain-Driven Design by Nick Tune at #AgileIndia2019
Strategic Domain-Driven Design by Nick Tune at #AgileIndia2019Strategic Domain-Driven Design by Nick Tune at #AgileIndia2019
Strategic Domain-Driven Design by Nick Tune at #AgileIndia2019
Agile India
 

La actualidad más candente (20)

Software design as a cooperative game with EventStorming
Software design as a cooperative game with EventStormingSoftware design as a cooperative game with EventStorming
Software design as a cooperative game with EventStorming
 
Event Storming and Saga
Event Storming and SagaEvent Storming and Saga
Event Storming and Saga
 
Software Engineering Culture - Improve Code Quality
Software Engineering Culture - Improve Code QualitySoftware Engineering Culture - Improve Code Quality
Software Engineering Culture - Improve Code Quality
 
Joshua Arnold – Using Cost of Delay
Joshua Arnold – Using Cost of DelayJoshua Arnold – Using Cost of Delay
Joshua Arnold – Using Cost of Delay
 
Service Mesh - Observability
Service Mesh - ObservabilityService Mesh - Observability
Service Mesh - Observability
 
Microservices Architecture Part 2 Event Sourcing and Saga
Microservices Architecture Part 2 Event Sourcing and SagaMicroservices Architecture Part 2 Event Sourcing and Saga
Microservices Architecture Part 2 Event Sourcing and Saga
 
Observability – the good, the bad, and the ugly
Observability – the good, the bad, and the uglyObservability – the good, the bad, and the ugly
Observability – the good, the bad, and the ugly
 
Strategic Domain-Driven Design by Nick Tune at #AgileIndia2019
Strategic Domain-Driven Design by Nick Tune at #AgileIndia2019Strategic Domain-Driven Design by Nick Tune at #AgileIndia2019
Strategic Domain-Driven Design by Nick Tune at #AgileIndia2019
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to Microservices
 
What Is Light BPT and How Can You Use it for Parallel Processing?
What Is Light BPT and How Can You Use it for Parallel Processing?What Is Light BPT and How Can You Use it for Parallel Processing?
What Is Light BPT and How Can You Use it for Parallel Processing?
 
Microservices Architecture - Bangkok 2018
Microservices Architecture - Bangkok 2018Microservices Architecture - Bangkok 2018
Microservices Architecture - Bangkok 2018
 
Deconstructing Monoliths with Domain Driven Design
Deconstructing Monoliths with Domain Driven DesignDeconstructing Monoliths with Domain Driven Design
Deconstructing Monoliths with Domain Driven Design
 
Cloud-Native Observability
Cloud-Native ObservabilityCloud-Native Observability
Cloud-Native Observability
 
How to Monitoring the SRE Golden Signals (E-Book)
How to Monitoring the SRE Golden Signals (E-Book)How to Monitoring the SRE Golden Signals (E-Book)
How to Monitoring the SRE Golden Signals (E-Book)
 
Demystifying observability
Demystifying observability Demystifying observability
Demystifying observability
 
Containers Docker Kind Kubernetes Istio
Containers Docker Kind Kubernetes IstioContainers Docker Kind Kubernetes Istio
Containers Docker Kind Kubernetes Istio
 
Logging, Serilog, Structured Logging, Seq
Logging, Serilog, Structured Logging, SeqLogging, Serilog, Structured Logging, Seq
Logging, Serilog, Structured Logging, Seq
 
Microservice vs. Monolithic Architecture
Microservice vs. Monolithic ArchitectureMicroservice vs. Monolithic Architecture
Microservice vs. Monolithic Architecture
 
Design patterns for microservice architecture
Design patterns for microservice architectureDesign patterns for microservice architecture
Design patterns for microservice architecture
 
Observability for modern applications
Observability for modern applications  Observability for modern applications
Observability for modern applications
 

Destacado

ACT December 2015 - OM (2)
ACT December 2015 - OM (2)ACT December 2015 - OM (2)
ACT December 2015 - OM (2)
Mark Shanholtzer
 
Arthritis foods to avoid
Arthritis foods to avoidArthritis foods to avoid
Arthritis foods to avoid
brooke123
 
Cmar 36105-critical-appraisal-of-the-potential-use-of-cannabinoids-in-c 082913
Cmar 36105-critical-appraisal-of-the-potential-use-of-cannabinoids-in-c 082913Cmar 36105-critical-appraisal-of-the-potential-use-of-cannabinoids-in-c 082913
Cmar 36105-critical-appraisal-of-the-potential-use-of-cannabinoids-in-c 082913
Sue Rosen RN CLNC
 
2015新年紀伊半島溫泉行
2015新年紀伊半島溫泉行2015新年紀伊半島溫泉行
2015新年紀伊半島溫泉行
Dave Chiu
 
Wheaton Science Products_overview
Wheaton Science Products_overviewWheaton Science Products_overview
Wheaton Science Products_overview
Ernie Desmarais
 
Are you paying attention?
Are you paying attention?Are you paying attention?
Are you paying attention?
arvindbalu
 

Destacado (20)

Event Sourcing con NEventStore
Event Sourcing con NEventStoreEvent Sourcing con NEventStore
Event Sourcing con NEventStore
 
NCrafts Eventstorming workshop
NCrafts Eventstorming workshopNCrafts Eventstorming workshop
NCrafts Eventstorming workshop
 
Idea stickies green bar - Wroclaw edition
Idea stickies green bar - Wroclaw editionIdea stickies green bar - Wroclaw edition
Idea stickies green bar - Wroclaw edition
 
CQRS + Event Sourcing
CQRS + Event SourcingCQRS + Event Sourcing
CQRS + Event Sourcing
 
Indian Aluminium Extrusions Industry - Challenges & Oppourtunities
Indian Aluminium Extrusions Industry - Challenges & OppourtunitiesIndian Aluminium Extrusions Industry - Challenges & Oppourtunities
Indian Aluminium Extrusions Industry - Challenges & Oppourtunities
 
ACT December 2015 - OM (2)
ACT December 2015 - OM (2)ACT December 2015 - OM (2)
ACT December 2015 - OM (2)
 
Arthritis foods to avoid
Arthritis foods to avoidArthritis foods to avoid
Arthritis foods to avoid
 
BI-TORQ BDI 2012
BI-TORQ BDI 2012BI-TORQ BDI 2012
BI-TORQ BDI 2012
 
Linkedin 2013 Facts & Statistics
Linkedin 2013 Facts & StatisticsLinkedin 2013 Facts & Statistics
Linkedin 2013 Facts & Statistics
 
Magic book 2 pre unit pres
Magic book 2 pre unit  presMagic book 2 pre unit  pres
Magic book 2 pre unit pres
 
Team creo
Team creoTeam creo
Team creo
 
Cmar 36105-critical-appraisal-of-the-potential-use-of-cannabinoids-in-c 082913
Cmar 36105-critical-appraisal-of-the-potential-use-of-cannabinoids-in-c 082913Cmar 36105-critical-appraisal-of-the-potential-use-of-cannabinoids-in-c 082913
Cmar 36105-critical-appraisal-of-the-potential-use-of-cannabinoids-in-c 082913
 
Magic book unit 2 pres
Magic book unit 2 presMagic book unit 2 pres
Magic book unit 2 pres
 
2015新年紀伊半島溫泉行
2015新年紀伊半島溫泉行2015新年紀伊半島溫泉行
2015新年紀伊半島溫泉行
 
Dup 3d opportunity-productdesign
Dup 3d opportunity-productdesignDup 3d opportunity-productdesign
Dup 3d opportunity-productdesign
 
Wheaton Science Products_overview
Wheaton Science Products_overviewWheaton Science Products_overview
Wheaton Science Products_overview
 
November 13th
November 13thNovember 13th
November 13th
 
Are you paying attention?
Are you paying attention?Are you paying attention?
Are you paying attention?
 
Brandlink
BrandlinkBrandlink
Brandlink
 
FEO White Paper
FEO White PaperFEO White Paper
FEO White Paper
 

Similar a Work shop eventstorming

Seminar - Scalable Enterprise Application Development Using DDD and CQRS
Seminar - Scalable Enterprise Application Development Using DDD and CQRSSeminar - Scalable Enterprise Application Development Using DDD and CQRS
Seminar - Scalable Enterprise Application Development Using DDD and CQRS
Mizanur Sarker
 
Design patterns 1july
Design patterns 1julyDesign patterns 1july
Design patterns 1july
Edureka!
 

Similar a Work shop eventstorming (20)

Event Storming & Event Sourcing with Lagom
Event Storming & Event Sourcing with LagomEvent Storming & Event Sourcing with Lagom
Event Storming & Event Sourcing with Lagom
 
Save Time, Money and Bloodshed with Soft System Discovery
Save Time, Money and Bloodshed with Soft System DiscoverySave Time, Money and Bloodshed with Soft System Discovery
Save Time, Money and Bloodshed with Soft System Discovery
 
Abstract
AbstractAbstract
Abstract
 
Webinar: Design Patterns : Tailor-made solutions for Software Development
Webinar: Design Patterns : Tailor-made solutions for Software DevelopmentWebinar: Design Patterns : Tailor-made solutions for Software Development
Webinar: Design Patterns : Tailor-made solutions for Software Development
 
Framing the Problem
Framing the ProblemFraming the Problem
Framing the Problem
 
From Use to User Interface
From Use     to User InterfaceFrom Use     to User Interface
From Use to User Interface
 
Design Patterns - The Ultimate Blueprint for Software
Design Patterns - The Ultimate Blueprint for SoftwareDesign Patterns - The Ultimate Blueprint for Software
Design Patterns - The Ultimate Blueprint for Software
 
Grokking Techtalk: Problem solving for sw engineers
Grokking Techtalk: Problem solving for sw engineersGrokking Techtalk: Problem solving for sw engineers
Grokking Techtalk: Problem solving for sw engineers
 
The waterfall, a commonly misapprehended methodological concept
The waterfall, a commonly misapprehended methodological conceptThe waterfall, a commonly misapprehended methodological concept
The waterfall, a commonly misapprehended methodological concept
 
Managing Content Chaos
Managing Content ChaosManaging Content Chaos
Managing Content Chaos
 
Successfully Kickstarting Data Governance's Social Dynamics: Define, Collabor...
Successfully Kickstarting Data Governance's Social Dynamics: Define, Collabor...Successfully Kickstarting Data Governance's Social Dynamics: Define, Collabor...
Successfully Kickstarting Data Governance's Social Dynamics: Define, Collabor...
 
Changing the medium to challenge the message - A Conversational UI case study
Changing the medium to challenge the message - A Conversational UI case studyChanging the medium to challenge the message - A Conversational UI case study
Changing the medium to challenge the message - A Conversational UI case study
 
Seminar - Scalable Enterprise Application Development Using DDD and CQRS
Seminar - Scalable Enterprise Application Development Using DDD and CQRSSeminar - Scalable Enterprise Application Development Using DDD and CQRS
Seminar - Scalable Enterprise Application Development Using DDD and CQRS
 
Implementing Event Sourcing in .NET
Implementing Event Sourcing in .NETImplementing Event Sourcing in .NET
Implementing Event Sourcing in .NET
 
Domain Driven Design @ NewStore
Domain Driven Design @ NewStoreDomain Driven Design @ NewStore
Domain Driven Design @ NewStore
 
Using Stories to Test Requirements and Systems
Using Stories to Test Requirements and SystemsUsing Stories to Test Requirements and Systems
Using Stories to Test Requirements and Systems
 
Design Patterns : The Ultimate Blueprint for Software
Design Patterns : The Ultimate Blueprint for SoftwareDesign Patterns : The Ultimate Blueprint for Software
Design Patterns : The Ultimate Blueprint for Software
 
Design patterns 1july
Design patterns 1julyDesign patterns 1july
Design patterns 1july
 
2b other processes
2b other processes2b other processes
2b other processes
 
2b other processes
2b other processes2b other processes
2b other processes
 

Más de Francesco Garavaglia (7)

Introduction to DevOps
Introduction to DevOpsIntroduction to DevOps
Introduction to DevOps
 
Entering the matrix
Entering the matrixEntering the matrix
Entering the matrix
 
Workshop - cqrs brief introduction
Workshop - cqrs brief introductionWorkshop - cqrs brief introduction
Workshop - cqrs brief introduction
 
CQRS recepies
CQRS recepiesCQRS recepies
CQRS recepies
 
IOC in Unity
IOC in Unity  IOC in Unity
IOC in Unity
 
IOC in unity
IOC in unityIOC in unity
IOC in unity
 
Workshop unit test
Workshop   unit testWorkshop   unit test
Workshop unit test
 

Último

%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
masabamasaba
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
masabamasaba
 
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
masabamasaba
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
VictoriaMetrics
 

Último (20)

%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the Situation
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
 
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
tonesoftg
tonesoftgtonesoftg
tonesoftg
 
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open SourceWSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
 
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
WSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security ProgramWSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security Program
 
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 

Work shop eventstorming

  • 1. Event Storming PROCESS, STICKES & EVENTS Francesco Garavaglia 01/2016
  • 2. Agenda  The problem  The solution: Event storming  Summary
  • 3. 3 The Problem The Problem 0 0,2 0,4 0,6 0,8 1 1,2 1,00 2,00 3,00 4,00 5,00 6,00 7,00 8,00 9,00 10,00 Complexity Time elapsed Changing Cost Green Field illusion Maintainence I cannot do this Refactoring from scratch
  • 4. How to gather requirements from many different departments/speci alists? 4 Department C Department E Department A Department D Department B
  • 6. 6 Or design by committee? The Problem
  • 7. 7 Event Storming  Event Storming is a fun way of bringing developers and business experts together and drive your analysis from the outside and quickly explore complex business domains in hours instead of days/weeks. Event Storming (or Model storming) is a way of starting your analysis from the outside and quickly explore complex business domains. Invented by Alberto Brandolini See http://ziobrando.blogspot.dk/2013/11/introducing- event-storming.html The Problem
  • 8. Much requirements gathering still follow in the steps of structural or classic OO design WE WRITE USE CASES/STORIES AND AFTERWARDS LOOK FOR NOUNS AND VERBS 8
  • 9. 9 Usually we start with a simple model The Problem
  • 10. 10 And as time goes by… The Problem
  • 11. 11 It gets more complicated The Problem
  • 12. 12 And finally we drown The Problem
  • 13. We end up with One Domain Model to Rule them All CAN’T WE AVOID CEREMONIAL MODELING? SOMETHING EASIER, FASTER AND BETTER? 13
  • 14. 14 Event Storming  All togher into the same room  Unlimited modelling surface  Invite the right People  Those who bring the questions  Those who know the answers (not all of them)  Value is in the interaction between people: miss one and you’ll miss n-1 interactions  Refine the model step-by-step The Solution: ES
  • 15. 15 Hack the space  There is no perfect room for a event storming  Hacking the space is up to you  Unlimited modelling space: can’t tell a problem size before exploring it  Table creates the wrong phisical space  position are fixed, no emerging alliances  posture is far from optimal  too easy to switch on laptops or other distractions  No body language to observe The Solution: ES
  • 17. 17 How to run EventStorming session  Explore the domain starting from Domain/Business  Simple semantic and notation  Represent the state transitions  Gives us precision  Easy to grasp by everybody in the room  Place them along a timeline to visualize the process  An event might be the predecessor or the follower of another one The Solution: ES
  • 18. 18 An Event message is non-prescriptive of what should happen in other services. It leaves this open to the recipients, so that they themselves determine what to do based on occurrence of the event. Events always carry a name in its past-tense form: OrderWasAccepted, OrderHasShipped, CustomerWasReimbursed Other qualities  Immutable, i.e. content cannot be changed  Always carries the ID of the Business Object it relates to  An event can and will typically will be published to multiple consumers.  The publisher of the event does not know who the recipients are  And it doesn’t know what the recipients intend to do with the event “An Event describes something that HAS happened” What is an Event? The Solution: ES
  • 19. 19  User Action model it as a Command  External system  Time  Other Domain Events  Documents External Time Command Role Event Event Document What does it cause Domain Events? The Solution: ES
  • 20. 20 Define a language… A physical model provides a safe support for spotting critical areas in your business process It’s not like that The Solution: ES
  • 21. 21 ..Along the time line Enforce narratives: People like telling Stories, not just filling diagrams or template  Encourage experts to tell a story  Look for concrete examples  look for edge cases, they fit perfectly in a narrative and they should fit into your model too  Eventually turn them into tests The Solution: ES
  • 22. 22 Or reverse narrative  Use Time line in a reverse mode: What was the path that led us here? What needs to happen before, so that this event can happen too? The Solution: ES
  • 23. 23 A Command message is prescriptive of what should happen. This is a stronger form of coupling than Event and Document messages. A Command’s primary goal is to capture USER INTENT A Command supports a single usecase and targets a single Business Object Commands always carry a name in its imperative form: CreateOrder, ShipOrder, CancelOrder, ReimburseCustomer, etc. Other qualities  Immutable, i.e. content cannot be changed  Always carries the ID of the Business Object that it relates to  A command can only be handled by ONE service  The Operations that consume Commands don’t return values – but can throw exceptions  Commands mutate Business Object state which results in one or more Events being published “A command describes a Task that you want someone else to carry out for you and the recipient can reject the Command” Events are often the side effect of Commands The Solution: ES
  • 24. 24 Commands & Events Receives a Command Asynchronousl y Publishes multiple Events asynchronously The Solution: ES
  • 25. 25 Entering the process manager Process managers are the home of reactive behaviour in the systems «Whanaver» is the most common word here  Whenever we receive an invoice we schedule a payment  Whenever we receive a Bs.we try to reconcile it Suppler invoice receiver Bank Statement Received Schedule Payment Reconcile Operation The Solution: ES
  • 26. 26 Using Business Events to drive Business Processes Sales Service Shipping Billing Sales Customers MessageChannel Online Ordering System Web Shop (Composite UI) Billing Service Shipping Service Order Accepted Event AcceptOrde r Command The sales fulfillment processing can now begin… The Solution: ES
  • 27. 27 Not all the results are visible  The model on the paper roll is huge and tangible but more value is created along the way Event Storming More often than not, old problems find a solution during the workshop The Solution: ES
  • 28. 28 Not all the results are visible  Conflicts and potential overlappings are highlighted  Can finally see the Big Picture  Conversations can finally Happen  And ideas are popping out The Solution: ES
  • 29. 29  Explore Aggregates Outside In  An Aggregate receives Commands and decides to execute them or reject them  If the Aggregate executes a Command it will produce one or more Domain Events as a result Exploring….. The Solution: ES
  • 30. 30 Invoice InvoiceLine * Account * What: • Cluster coherent Entities and Value Objects, with complex associations into Aggregates with well defined boundaries. • Choose one entity to be root and control access to objects inside the boundary through the root. • External objects hold references to the root • Aggregates only refer to other aggregates by identity (their id) Motivation: Control invariants and consistency through the aggregate root. Enables: Loading schemes, coarse grained locking and… Ensuring consistency & transactional boundaries for Distributed scenarios Root ….Aggregates The Solution: ES
  • 31. 31  Explore Sub domains  Different areas of responsibility map pretty well to different subdomains or portions of the pork  Explore Bounded Contexts  During the discussion, some conflict areas with regards to different interpretations of terms might emerge  Draw boundaries between the multiple consistent models that will coexist in your domain 31 … And sub-domains The Solution: ES
  • 32. 32 Conceptual CQRS Users decide actions according to the real world experience (things they know which are not in the system) and read Model Humans decide according to different sets of info (ex: faces, pictures, surnames, ecc) The model of anything: CQRS The Solution: ES
  • 33. 33 Summary: Event Storming  Legend:  User Action modeled as a Command  External system  Time  Domain Events  Documents  IT Operations (Gateway)  Aggregate  Read Model External Time Comma nd Role Event Event Docume nt IT Ops Read Model Aggregate Summary
  • 34. 34 Event Storming is  Powerful  come up with a comprehensive model of a complete business flow in hours instead of weeks.  Engaging:  bring people with the questions and people who know the answer in the same room and to build a model together  Efficient  the resulting model is perfectly aligned with Event Sourcing and EDA, and allows for a quick determination of Bounded Context and Aggregate boundaries and thereby also Service boundaries  Easy  the notation is ultra-simple. No complex UML  Fun  Eventstorming workshops and fun, people are energized and deliver more than they expected. The right questions arise, and the atmosphere is the right one. Summary