This document discusses how microservices and domain-driven design can work together. It provides three key rules: 1) Model useful abstractions, not reality. 2) Don't build models for everyone, build context-specific models. 3) Don't design monolithic architectures, design individual services. Microservices are high cohesion, loosely coupled services that represent business capabilities with their own models, persistence, technology stacks, deployability and scalability. They allow individual failure without bringing down the whole system.
5. Customer
type = shipping
Address
type = billing
Address
Order
Line Item
Line Item
Line Item
Product
Product
Product
type = billing
Address
Order
Invoice
Vendor
8. We don’t model reality,
we model useful abstractions
Rule # 1
9. - A language structured around the Domain Model -
- Used by all team members and throughout the code -
UBIQUITOUS LANGUAGE
10. Customer
type = shipping
Address
type = billing
Address
Order
Line Item
Line Item
Line Item
Product
Product
Product
type = billing
Address
Order
Invoice
Vendor
20. - An explicit boundary within which a Domain Model exists -
- Inside, all terms have a specific meaning -
- They are part of the Ubiquitous Language -
BOUNDED CONTEXT
38. KEY ATTRIBUTES OF A BOUNDED CONTEXT
High Cohesion
Loose Coupling
Represents Business Capability
Context-specific Model
39. KEY ATTRIBUTES OF A MICROSERVICE
High Cohesion
Loose Coupling
Represents Business Capability
Context-specific Model
40. KEY ATTRIBUTES OF A MICROSERVICE
High Cohesion
Loose Coupling
Represents Business Capability
Context-specific Model
41. KEY ATTRIBUTES OF A MICROSERVICE
High Cohesion
Loose Coupling
Represents Business Capability
Context-specific Model
+
42. KEY ATTRIBUTES OF A MICROSERVICE
High Cohesion
Loose Coupling
Represents Business Capability
Context-specific Model
+
Individual Persistence
43. KEY ATTRIBUTES OF A MICROSERVICE
High Cohesion
Loose Coupling
Represents Business Capability
Context-specific Model
+
Individual Persistence
Individual Tech Stacks
44. KEY ATTRIBUTES OF A MICROSERVICE
High Cohesion
Loose Coupling
Represents Business Capability
Context-specific Model
+
Individual Persistence
Individual Tech Stacks
Individual Deployability
45. KEY ATTRIBUTES OF A MICROSERVICE
High Cohesion
Loose Coupling
Represents Business Capability
Context-specific Model
+
Individual Persistence
Individual Tech Stacks
Individual Deployability
Individual Replaceability
46. KEY ATTRIBUTES OF A MICROSERVICE
High Cohesion
Loose Coupling
Represents Business Capability
Context-specific Model
+
Individual Persistence
Individual Tech Stacks
Individual Deployability
Individual Replaceability
Individual Scalability
47. KEY ATTRIBUTES OF A MICROSERVICE
High Cohesion
Loose Coupling
Represents Business Capability
Context-specific Model
+
Individual Persistence
Individual Tech Stacks
Individual Deployability
Individual Replaceability
Individual Scalability
Can Fail Individually
55. We don’t model reality,
we model useful abstractions
Rule # 1
We don’t build a model
that works for everyone
Rule # 2
We don’t design a
one-size-fits-all architecture
Rule # 3