diff --git a/slides/images/eventstorming/digital/actorinteractionsticky.png b/slides/images/eventstorming/digital/actorinteractionsticky.png new file mode 100644 index 00000000..7c14010c Binary files /dev/null and b/slides/images/eventstorming/digital/actorinteractionsticky.png differ diff --git a/slides/images/eventstorming/digital/actorsticky.png b/slides/images/eventstorming/digital/actorsticky.png new file mode 100644 index 00000000..899963df Binary files /dev/null and b/slides/images/eventstorming/digital/actorsticky.png differ diff --git a/slides/images/eventstorming/digital/aggsticky.png b/slides/images/eventstorming/digital/aggsticky.png new file mode 100644 index 00000000..676803d3 Binary files /dev/null and b/slides/images/eventstorming/digital/aggsticky.png differ diff --git a/slides/images/eventstorming/digital/commandsticky.png b/slides/images/eventstorming/digital/commandsticky.png new file mode 100644 index 00000000..fe9c3da1 Binary files /dev/null and b/slides/images/eventstorming/digital/commandsticky.png differ diff --git a/slides/images/eventstorming/digital/eventsticky.png b/slides/images/eventstorming/digital/eventsticky.png new file mode 100644 index 00000000..63ce50d3 Binary files /dev/null and b/slides/images/eventstorming/digital/eventsticky.png differ diff --git a/slides/images/eventstorming/digital/policysticky.png b/slides/images/eventstorming/digital/policysticky.png new file mode 100644 index 00000000..b30b2060 Binary files /dev/null and b/slides/images/eventstorming/digital/policysticky.png differ diff --git a/slides/images/eventstorming/digital/questionsticky.png b/slides/images/eventstorming/digital/questionsticky.png new file mode 100644 index 00000000..8a5f517b Binary files /dev/null and b/slides/images/eventstorming/digital/questionsticky.png differ diff --git a/slides/images/eventstorming/digital/readmodelsticky.png b/slides/images/eventstorming/digital/readmodelsticky.png new file mode 100644 index 00000000..f45174c3 Binary files /dev/null and b/slides/images/eventstorming/digital/readmodelsticky.png differ diff --git a/slides/images/eventstorming/digital/systemstickies.png b/slides/images/eventstorming/digital/systemstickies.png new file mode 100644 index 00000000..a8b1b173 Binary files /dev/null and b/slides/images/eventstorming/digital/systemstickies.png differ diff --git a/slides/images/eventstorming/digital/systemsticky.png b/slides/images/eventstorming/digital/systemsticky.png new file mode 100644 index 00000000..1922a53b Binary files /dev/null and b/slides/images/eventstorming/digital/systemsticky.png differ diff --git a/slides/images/eventstorming/digital/viewsticky.png b/slides/images/eventstorming/digital/viewsticky.png new file mode 100644 index 00000000..371275f5 Binary files /dev/null and b/slides/images/eventstorming/digital/viewsticky.png differ diff --git a/slides/markdown/event_storming.md b/slides/markdown/event_storming.md index e8279291..21a4f656 100644 --- a/slides/markdown/event_storming.md +++ b/slides/markdown/event_storming.md @@ -7,17 +7,20 @@ DO500 ### Event Storming #### _What is It?_ -* Provides a repeatable, teachable technique for modeling: - * Event-driven systems - * Large microservice-based systems -* Requires a really, really large modeling surface -* Requires lots of stickies in a rainbow of colors with a legend to their usage +A rapid, interactive approach to business process discovery and design that yields high quality models ### Event Storming -#### _What is It?_ -* Who: key business stakeholders and techies +#### _What do I need?_ +* **Who**: Key business stakeholders and techies +* A really, really large modeling surface +* Lots of stickies in a rainbow of colors with a legend to their usage + + + +### Event Storming +#### _Are there rules?_ * There will be lots of talking, a fair bit of squabbling, and periodically some **very** heated debate * No chairs! @@ -44,6 +47,9 @@ Event Storming was developed by Alberto Brandolini * Builds a shared understanding * Fail fast to solve difficult problems * Deliver really useful design artifacts +* Provides a repeatable, teachable technique for modeling: + * Event-driven systems + * Large microservice-based systems @@ -75,44 +81,50 @@ event model ### Event Storming: Events -![Events](images/eventstorming/events.jpg) -Something that happened that people care about -* Subject --> Verb in past tense, e.g **Item Shipped** -* Could be timed, e.g. **Nightly Accounts Reconciled** -* A meaningful result of another thing, e.g. **Account Locked** +![Events](images/eventstorming/digital/eventsticky.png) +Something that happened in the business process that people care about +* "**Subject** --> **Verb** (in past tense)" +* A meaningful result of another thing +* Where do events come from? + * A system + * Passing of time + * Consequence of another event +* Examples: + * _"Item Shipped"_ + * _"Account Locked"_ -### Event Storming: Events -![Event](images/eventstorming/eventsticky.png) -Where do events come from? -* A system -* Passing of time -* Consequence of another event +### Event Storming: Commands +![Command](images/eventstorming/digital/commandsticky.png) +An action started by an actor or a previous event +* "**Verb** (in infinitive) --> **Subject**" +* It is usually the reverse of the **event** +* Examples: + * _"Buy Ticket" (Event -> Ticket bought)_ + * _"Cancel Reservation" (Event -> Reservation canceled)_ -### Event Storming: Commands -![Command](images/eventstorming/commandsticky.png) -* A **command** is an **action** started by an **actor** -* It represents the **decision** -* It is usually the reverse of the **event**, e.g: - * Buy Ticket - * Cancel Reservation +### Event Storming: Views +![Actor](images/eventstorming/digital/viewsticky.png) +An interface that actors interact with to carry out a task in the system +* Normally Forms (Examples: _"Login Page"_ or _"Sing up Form"_) ### Event Storming: Actors -![Actor](images/eventstorming/actorsticky.png) -An actor is the user of the system -* Keep it fuzzy, e.g. **Joe** +![Actor](images/eventstorming/digital/actorsticky.png) +An user of the system who executes a command through a view +* Keep it fuzzy (Examples: _"Joe"_) * The actor makes the decision ### Event Storming: Questions -![Question](images/eventstorming/questionsticky.png) -* Pain Points, e.g. **It takes a long time!** +![Question](images/eventstorming/digital/questionsticky.png) +Any doubt about the process +* Pain Points (Examples: _"It takes a long time!"_) * How / What / Why? * Hot Spots * Assumptions @@ -120,15 +132,18 @@ An actor is the user of the system ### Event Storming: External Systems -![System](images/eventstorming/systemsticky.png) -* Third party services -* Existing systems +![System](images/eventstorming/digital/systemsticky.png) +A third-party service provider which is affected by +commands +* Examples: + * _Payment gateway_ + * _Shipping company_ -### Event Storming: Read Model -![ReadModel](images/eventstorming/readmodelsticky.png) -The **information** needed in order to make a **decision** +### Event Storming: Read Models +![ReadModel](images/eventstorming/digital/readmodelsticky.png) +The information needed in order to make a decision * Represents an implementation * Stored Procedure * Query @@ -138,37 +153,37 @@ The **information** needed in order to make a **decision** ### Event Storming: Policies and Procedures -![PolicyProcedure](images/eventstorming/policysticky.png) -* Keywords to use are **always** and **immediately** +![PolicyProcedure](images/eventstorming/digital/policysticky.png) +An automated process, automated rule or aggredment wich is always applied inmediately after an event * Procedures include: - * Automatic process - * Process manager - * Listener - * "Don't forget to..." - * Agreement - * Rules - * Habit -* For example: - - Refund Requested > Refund Policy > Issue Receipt - - - -### Event Storming: Aggregate -![Aggregate](images/eventstorming/aggsticky.png) -Part of the system that **receives** the **command** and decides to **execute** -the **event** -* Usually a noun, e.g. **Item** + * Automatic process + * Process manager + * Listener + * "Don't forget to..." + * Agreement + * Rules + * Habit +* Examples: + * Refund Requested > Refund Policy > Issue Receipt + + + +### Event Storming: Aggregates +![Aggregate](images/eventstorming/digital/aggsticky.png) +Part of the system that receives the command and decides to execute +the event +* Usually a noun (Examples: _animals, cities, cars, plants..._) * The aggregate is the **state machine** * Serve as a place to logically group commands once all event sources are identified -![System](images/eventstorming/system.jpg) +![System](images/eventstorming/digital/systemstickies.png) -### Event Storming: Key Takeaways +### Event Storming +#### _Key Takeaways_ * Builds a shared understanding of a problem space * Models business processes * Aggregate modeling to find key microservices and event model @@ -177,17 +192,15 @@ the **event** -### Exercise -### Event Storm for To Do List Management +### Exercise - Event Storm for To Do List Management ![Key](images/eventstorming/key.png) -* In your teams, create example event storm for the Current state of the To Do List -Management application. Cover the following things: - 1. Add the new Events - * Add the new Commands, Users and Read Models - * Are there new Systems or Aggregates? -* Reflect on your Impact Map deliverables and enhance it with some new functionality e.g - 1. Sharing lists between users - 2. Integration with other vendors or providers +In your teams, create example event storm for the Current state of the To Do List +Management application + +1. Add the new Events +3. Add the new Commands, Users and Read Models +2. Are there new Systems or Aggregates? +4. Reflect on your Impact Map deliverables and enhance it with some new functionality (Examples: Sharing lists between users or Integration with other vendors or providers)