Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Event Storming to Solution Space

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest. →
Avatar for RinatS RinatS
November 22, 2019

Event Storming to Solution Space

Avatar for RinatS

RinatS

November 22, 2019

Other Decks in Technology

Transcript

  1. Better By Design – Excel By Build • Software Engineer/Architect

    • M.S., MBA CU Boulder • www.linkedin.com/in/rshagisultanov • [email protected] • @RinatSh • DDD, system architecture, devops, agile, team orgs, startup • Principal Credits: Nick Tune, Paul Rayner, Alberto Brandolini
  2. Agenda l Quick overview of Domain-Driven Design l Event Storming

    l Domain Storytelling l User Story Mapping
  3. Why Complex business rules and processes Knowledge silos Numerous diverse

    and complex interactions with human users and systems
  4. How Do We Learn Fast together? Use Cases ERD Sequence

    Diagrams Activity Diagram User Story Mapping Customer Journey Service Blueprint ...
  5. What we need? Shared and collaborative learning Learn not the

    entities, but about the behavior (add time scale) Visual map of flow of events
  6. What is Strategic DDD? Shared model of understanding Discovering the

    most important parts of the problem space Transform the problem space into a useful solution space
  7. Classifying Sub-domains ü Core ü Supporting ü Generic Moving Optimization

    Trucking ERP Truck Location Order Dispatch Terminal Routing
  8. Bounded Context Trucking ERP Truck Location Order Moving Optimization Dispatch

    Use Business Capability or Sub-domain as starting point Routing
  9. Relationship Types ü Shared Kernel ü Domain logic - not

    cross-cutting concerns ü Customer - Supplier ü Conformist ü Open Host Service ü Separate Ways ü Anti-Corruption Layer
  10. Questions/Clarifications Needed (Pink Stickies) • Question • Risks/Warnings • Assumptions

    • Consideration Points • !!! Postpone the answer • !!! Discuss only what is visible
  11. DEVELOPMENT TEAM MEMBERS AND BUSINESS PEOPLE GATHER IN A ROOM

    AND TOGETHER WE CREATE A VISUAL MAP OF THE FLOW OF EVENTS
  12. Sample Execution Create visual annotations Storm domain events and place

    them on the time order Note and place the issues and questions in purple Group the events/issues together and vote for the hotspots Identify the business processes in lilac note and draw arrow from event to process Note commands which cause events on light blue sticky Identify aggregates/entities changed by command on a yellow sticky Place a role/user on the small yellow sticky with the stick figure Place the policies when the flow requires decision making. Use purple sticky Draw bounded contexts and domains (clusters) Identify the views/read models required for commands to run. Use green stickies
  13. How-To: Event Storming (I) NO CHAIRS MODELING SPACE (WALL) IS

    24 FT OR MORE HAVE ENOUGH STICKIES, MARKERS AND MASKING TAPE POST FIRST – DISCUSS LATER ESTABLISH A TIMEBOX FOR THE SESSION: 2-3 HOURS + FOLLOW- UPS HAVE ENOUGH FOOD AND DRINKS MITIGATE ADMINISTRATIVE HIERARCHY
  14. How-To: Event Storming (II) Focus On Learning and Understanding Focus

    On Use clarifying questions: •What circumstances would cause this to happen? •What is the path to get here? •What is a good example? •What is the term meaning? •What might we need to do or to achieve? •What else might happen? Use Start with CONCRETE business example Start Clarify fuzzy concepts (NO to CRUD, use real verbs) Clarify
  15. How-To: Event Storming (III) When NOT to use ES: ▪

    Simple CRUD ▪ Distributed Team ▪ Large group/hierarchical group
  16. Why Event Storming? • Cultivate mutual shared understanding • Uncover

    misunderstandings & missing concepts • Avoid rework Collaborative learning • Visual, tactile representation of system behaviour & outcomes • Smoother transition to a rich domain model, design and coding Model & explore complex domains Business Model to Code Fast
  17. Additional Modeling Techniques • Business Model Canvas • Domain Storytelling

    (Stefan Hofer and Henning Schwentner) • User Story Mapping (Jeff Patton) • Temporal/Event Modeling (Adam Dymitruk)
  18. Business Model Canvas ▪ Identify the core sub-domains ▪ Focus

    on important aspects of business and software system
  19. Domain Storytelling • Actors: a person, a customer, or a

    more technical thing like a car or a ship • Work objects: a document or a message, or more abstract things such as a route for a transport. • Arrows for activities • Numbered and story based https://domainstorytelling.org/
  20. User Story Mapping • Focus on: Users. Flow, Backbone, Tasks

    • Narratives and story telling • Look at system as a whole • Project into releases as cohesive end to end stories • Ref: Jeff Patton
  21. CQRS & Event Sourcing l Command l Request (e.g. CreateUser)

    l Domain Event l Verb in past tense (e.g. UserCreated) l Event Store l Projections, Snapshotting & Versioning l Replay of events & Log for free l CQRS + ES or CQRS alone
  22. Libraries and Reference Architectures • https://axoniq.io/ (Allard Buijze) • https://kalele.io/platform/

    (vlingo, Vaughn Vernon) • https://aspnetboilerplate.com/ • Surprise: Reference architecture from Microsoft eShopOnContainers
  23. Summary ü Strategic DDD ü Focus on Core sub-domains ü

    Decomposition into Bounded Contexts ü Ubiquitous Language ü Modelling Techniques ü Event Storming ü Domain Storytelling ü User Story Mapping
  24. Resources • Virtual DDD Meetup (1-2 times/month via Zoom) •

    Find DDD Meetup locally (DDD Denver) • ExploreDDD/DDDEurope on YouTube • https://medium.com/nick-tune-tech-strategy- blog