Benjamin Nothdurft
Software Craftsman, DevOps, @jenadevs @jugthde Founder/Speaker, Traveller & Cyclist – focusing on Continuous Delivery Pipelines, Automation, Docker, Selenium, Java
Benjamin Nothdurft
codecentric AG
JUG Thüringen meets LJUG Munich
2019-02-03 in Munich
@dataduke
@dataduke
@dataduke
Context
Basics
Iterations
Architecture
Take-Aways
@dataduke
issues/hot spots, chances
external systems, read models, policies
users/actors, timers, loops
@dataduke
Invite the right people (diversity in background/attitude, knowledge, curiosity)
room setup (space to move, plenty of sticky notes/markers/food, timer)
workshop structure (incremental notation, mostly stand-up, time-boxed warm-up e.g. Cinderella fairy tale story, explicit goal is to explore business process, uncomfortable/chaotic/awkward > take care of people, icebreaker)
product added to cart
domain event (past tense)
orange sticky note
relevant for domain experts
Make sure there’s enough space available
Choose a sorting strategy (Pivotal Events, Swimlanes, Temporal Milestones, Chapters Sorting, or Combination)
e.g. pivotal/Key Events: Article Added to Catalogue, Order Placed, Order Shipped, Payment Received and Order Delivered
looking for key impediments, problems and opportunities (10-15 minutes time-box to capture risks and ideas)
command (present tense)
blue sticky note
triggers a domain event
product add to cart
aggregate/entity
yellow sticky note
data that is interacted with
product
find borders where a domain model has a different meaning
domain events flow between different models
bounded context/sub-domain
red sticky note
core name that is relevant/valid
checkout
narrative/stories/user journey
line(s)
multiple storytellings
common language for everyone
event
command
external system
policy
user
user
command
add new colours/sticky notes: e.g. policies
challenging value (discover new opportunities, inconsistencies)
reveal pain points
enable cross-perspective conversation
@dataduke
provider-ui
storefront-ui
merchant-ui
Frontend
api proxy
tenant
auth
Core
business unit
site
shop
Shop Admin
Product
product
. . .
. . .
. . .
. . .
Exe / Jar / Zip
Objects
Classes
OOP
Design Patterns
Modules
Layers
Project
Service
Service
Service
Sub-Domain
Sub-Domain
Domain
Domain-Driven-Design
Exe / Jar / Zip
Objects
Classes
OOP
Design Patterns
Modules
Layers
Project
Call Flow
Model Flow
Model Flow
Upstream Patterns
Open Host Service
Event Publisher
Downstream Patterns
Customer / Supplier
Conformist
Anticorruption Layer
In-Between Patterns
Shared Kernel
Published Language
Seperate Ways
Upstream System
Down-stream System
provider-ui
storefront-ui
merchant-ui
Frontend
api proxy
tenant
auth
Core
business unit
site
shop
Shop Admin
Product
product
. . .
. . .
. . .
. . .
Building Blocks in DDD
@dataduke
Ubiquitous Language
Bounded Context
Domain Model
A domain model is to a bounded context
what classes are to objects
Context Map
@dataduke
Benjamin Nothdurft
codecentric AG
Developer Open Space
2019-10-11 in Leipzig
@dataduke
Text
Each sub-domain is implemented as vertical:
event
command
external system
policy
user
read model
user
command
add new colours/sticky notes: e.g. policies
challenging value (discover new opportunities, inconsistencies)
reveal pain points
enable cross-perspective conversation
Exe / Jar / Zip
Objects
Classes
OOP
Design Patterns
Modules
Layers
Project
Service
Exe / Jar / Zip
Objects
Classes
OOP
Design Patterns
Modules
Layers
Project
By Benjamin Nothdurft
2019-11-21 Event Storming at DOAG Nuremberg
Software Craftsman, DevOps, @jenadevs @jugthde Founder/Speaker, Traveller & Cyclist – focusing on Continuous Delivery Pipelines, Automation, Docker, Selenium, Java