The journey to Microservices can be very challenging. Identifying proper boundaries, integrating services, and handling infrastructure and operational complexities that Microservices come with can be very overwhelming.
How not to loose sight and to cope with those challenges and still delivering user and business value? One approach could be to focus on that part of your business that gives most competitive advantage - your core domain - and outsource undifferentiating commodities to utility suppliers.
Domain Driven Design combined with Wardley Maps can help us to understand the problem domain and to focus on the core domain.
In this talk Susanne will show how Domain Driven Design and Wardley Maps can be used together to visualise how a value chain can evolve during a Microservices journey and keeping focus on your core domain.
29. Hardware
Data Store
API
API-Gateway Service Discovery Load-Balancer
Message Broker
Timeout-Handling Retries Idempotency Bulkheads Circuit Breaker
Config-Mngmt.
Monitoring Log Aggreation Metrics Distributed
Tracing
Health Checks
SCM
O/SVirtualization Container Runtime
Checkout TestBuild
CI/CD Pipeline
Deploy
µService
Backup Recovery
@suksr
Scaling
Maintenance
Integration
Security
30. Domain Driven Design (DDD) – Terminology
Strategic Design
Tactical Design
Bounded Context
Ubiquitous Language
Core Subdomain
Supporting Subdomain
Generic Subdomain
Problem Space
Solution Space
Context Maps
Anti-Corruption Layer
Shared Kernel
Open Host Service
Separate Ways
Partnership
Customer-Supplier
Conformist
Domain Model
Entity
Value Object
Aggregate
Repository
Factory
Application Service
Domain Service
Domain Event
@suksr
31. Hardware Data Store
API
API-Gateway Service Discovery Load-Balancer
Message Broker
Timeout-Handling Retries Idempotency Bulkheads Circuit Breaker
Config-Mngmt.
Monitoring Log Aggreation Metrics Distributed
Tracing
Health Checks
SCM
O/SVirtualization Container Runtime
Checkout TestBuild
CI/CD Pipeline
Deploy
µService
Backup Recovery
Scaling
Maintenance
Integration
Security
Strategic Design
Tactical Design
Problem Space
Solution Space
Bounded Context
Ubiquitous Language
Core Subdomain
Supporting
Subdomain
Generic Subdomain
Context Maps
Anti-Corruption Layer
Shared Kernel
Open Host Service
Separate Ways
Partnership
Customer-Supplier
Conformist
Domain Model
Entity
Value Object
Aggregate
Repository
Factory
Application Service
Domain Service
Domain Event
@suksr
33. Wardley Maps – VALUE CHAIN
Who are your users?
ValueChain
InvisibleVisible
@suksr
34. Wardley Maps – VALUE CHAIN
Who are your users?
What are your users’ needs?
ValueChain
InvisibleVisible
@suksr
35. Wardley Maps – VALUE CHAIN
Who are your users?
What are your users’ needs?
What are the components/activities to fulfill
your users’ needs incl. dependencies?
ValueChain
InvisibleVisible
Position
@suksr
36. Wardley Maps – LANDSCAPE
ValueChain
InvisibleVisible
Evolution
Components along
evolution axes
Genesis Custom-Built Product (+rental) Commodity (+utility)
Position
Movement
@suksr
37. ValueChain
InvisibleVisible
Genesis Custom-Built Product (+rental) Commodity (+utility)
Evolution
Everything evolves
Past Current Future
Supply CompetitionDemand Competition
Uncharted Industrialised
Wardley Maps – PATTERNS
Movement
@suksr
44. ValueChain
InvisibleVisible
Genesis Custom-Built Product (+rental) Commodity (+utility)
Evolution
Wardley Maps – PRINCIPLES
Use appropriate methods
per evolution stage
Build in-house
Use/buy off-the-shelf product
Outsource to utility suppliers
@suksr
45. ValueChain
InvisibleVisible
Genesis Custom-Built Product (+rental) Commodity (+utility)
Evolution
Use appropriate methods
per evolution stage
Wardley Maps – PRINCIPLES
Build in-house
Use/buy off-the-shelf product
Outsource to utility suppliers
@suksr
46. ValueChain
InvisibleVisible
Genesis Custom-Built Product (+rental) Commodity (+utility)
Evolution
Use appropriate methods
per evolution stage
Wardley Maps – PRINCIPLES
Build in-house
Use/buy off-the-shelf product
Outsource to utility suppliers
@suksr
47. ValueChain
InvisibleVisible
Genesis Custom-Built Product (+rental) Commodity (+utility)
Evolution
Know your users &
focus on user needs
Wardley Maps – PRINCIPLES
Build in-house / Agile
Use/buy off-the-shelf product / Lean
Outsource to utility suppliers / Six Sigma
@suksr
48. Domain Driven Design
Ubiquitous Language
Domain Knowledge
Understanding the problem domain first
before solving it
Problem Domain
Domain
Experts
Development
Teams
Collaboration
@suksr
50. ValueChain
InvisibleVisible
Genesis Custom-Built Product (+rental) Commodity (+utility)
Evolution
DDD & Wardley Maps Problem Domain
Strategic Design
DDD Patterns &
Practices
Tactical Design
Analysing the
business
domain
Discovering
Subdomains
Problem Space
@suksr
ProblemSpace
StrategicDesignTacticalDesign
Analyse&Discover
51. ValueChain
InvisibleVisible
Genesis Custom-Built Product (+rental) Commodity (+utility)
Evolution
DDD & Wardley Maps Problem Domain
Strategic Design
DDD Patterns &
Practices
Tactical Design
Analysing the
business
domain
Discovering
Subdomains
Problem Space
Decomposing
into modular
components
(Bounded
Contexts (BC))
Mapping
interaction
patterns
between BC
(Context Maps)
Solution Space
@suksr
ProblemSpaceSolutionSpace
StrategicDesignTacticalDesign
Analyse&DiscoverDecompose&
Map
High-Level
Design Decisions
52. ValueChain
InvisibleVisible
Genesis Custom-Built Product (+rental) Commodity (+utility)
Evolution
DDD & Wardley Maps Problem Domain
Strategic Design
DDD Patterns &
Practices
Tactical Design
Architecting a solution
fitting the problem
domain as closely as
possible
Provides
building blocks
to implement
domain model
Analysing the
business
domain
Discovering
Subdomains
Problem Space
Decomposing
into modular
components
(Bounded
Contexts (BC)
Mapping
interaction
patterns
between BC
(Context Maps)
Solution Space
@suksr
Solution Space
ProblemSpaceSolutionSpace
StrategicDesignTacticalDesign
Analyse&DiscoverArchitect&
Implement
High-Level
Design Decisions
Low-Level
Design Decisions
Decompose&
Map
53. Analyse&Discover
ValueChain
InvisibleVisible
Genesis Custom-Built Product (+rental) Commodity (+utility)
Evolution
Distilling the problem
domain & discovering the
core subdomain
DDD & Wardley Maps
Core
Subdomain
Problem Domain
STRATEGIC DESIGN (PROBLEM SPACE)
Supporting
Subdomain
Generic
Subdomain
@suksr
ProblemSpace
StrategicDesign
54. ValueChain
InvisibleVisible
Genesis Custom-Built Product (+rental) Commodity (+utility)
Evolution
Distilling the problem
domain & discovering the
core subdomain
DDD & Wardley Maps
Core
Subdomain
Problem Domain
Competitive advantage
Complex
Changes often
Build in-house
STRATEGIC DESIGN (PROBLEM SPACE)
Supporting
Subdomain
Generic
Subdomain
@suksr
Analyse&Discover
ProblemSpace
StrategicDesign
Build in-house
Use/buy off-the-shelf product
Outsource to utility suppliers
55. ValueChain
InvisibleVisible
Genesis Custom-Built Product (+rental) Commodity (+utility)
Evolution
Distilling the problem
domain & discovering the
core subdomain
DDD & Wardley Maps
Core
Subdomain
Problem Domain
Competitive advantage
Complex
Changes often
Build in-house
No competitive advantage
Quite simple
Does not change often
Prefer to buy/use off-the-shelf
STRATEGIC DESIGN (PROBLEM SPACE)
Supporting
Subdomain
Generic
Subdomain
@suksr
Analyse&Discover
ProblemSpace
StrategicDesign
Build in-house
Use/buy off-the-shelf product
Outsource to utility suppliers
56. ValueChain
InvisibleVisible
Genesis Custom-Built Product (+rental) Commodity (+utility)
Evolution
Distilling the problem
domain & discovering the
core subdomain
DDD & Wardley Maps
Core
Subdomain
Problem Domain
Competitive advantage
Complex
Changes often
Build in-house
No competitive advantage
Quite simple
Does not change often
Prefer to buy/use off-the-shelf
No competitive advantage
Generally complex
Does not change often
Buy/use off-the-shelf / outsource
STRATEGIC DESIGN (PROBLEM SPACE)
Supporting
Subdomain
Generic
Subdomain
@suksr
Analyse&Discover
ProblemSpace
StrategicDesign
Build in-house
Use/buy off-the-shelf product
Outsource to utility suppliers
57. Decompose&
Map
Analyse&Discover
ValueChain
InvisibleVisible
Genesis Custom-Built Product (+rental) Commodity (+utility)
Evolution
Model Driven Design
DDD & Wardley Maps
STRATEGIC DESIGN (SOLUTION SPACE)
Development
Teams
Domain
Experts
Ubiquitous
Language
Analysis
Model
Code
Model
Domain Model
Core
Subdomain
Supporting
Subdomain
Generic
Subdomain
Problem Domain
abstracted by
@suksr
ProblemSpaceSolutionSpace
StrategicDesign
110. ValueChain
InvisibleVisible
Genesis Custom-Built Product (+rental) Commodity (+utility)
Evolution
Summary
Supporting GenericCore
@suksr
Decompose
&Map
Analyse&Discov.
ProblemSpaceSolutionSp.
StrategicDesign
Know your users
& user needs
Understand the
problem first and
focus on core domain
111. ValueChain
InvisibleVisible
Genesis Custom-Built Product (+rental) Commodity (+utility)
Evolution
Summary
Supporting GenericCore
@suksr
Decompose
&Map
Analyse&Discov.
ProblemSpaceSolutionSpace
StrategicDesignTacticalDesign
Architect&
Implement
- or -
- or - - or -
Know your users
& user needs
Understand the
problem first and
focus on core domain
DDD suits well for your
core domain
112. ValueChain
InvisibleVisible
Genesis Custom-Built Product (+rental) Commodity (+utility)
Evolution
Summary
Supporting GenericCore
@suksr
Decompose
&Map
Analyse&Discov.
ProblemSpaceSolutionSpace
StrategicDesignTacticalDesign
Architect&
Implement
Infrastructure
Know your users
& user needs
Understand the
problem first and
focus on core domain
DDD suits well for your
core domain
Identify and outsource
commodities
113. ValueChain
InvisibleVisible
Genesis Custom-Built Product (+rental) Commodity (+utility)
Evolution
Summary
Supporting GenericCore
@suksr
Decompose
&Map
Analyse&Discov.
ProblemSpaceSolutionSpace
StrategicDesignTacticalDesign
Architect&
Implement
Infrastructure
Know your users
& user needs
Understand the
problem first and
focus on core domain
DDD suits well for your
core domain
Identify and outsource
commodities
Efficiency enables
innovation