The idea of cutting one’s application into minimal pieces – a.k.a. (micro-) sercives- which communicate with each other has some merit. Theoretically this sounds quite easy but it is actually a challenge.
The trick is to find the correct size for the single services. But how can we cut the services correctly? How can we manage not to pick the business logic to pieces and lose sight of the whole entity? And what does the communication between the sercives look like?
Based on an experience report, this session shows how Domain Driven Design can help answering these – and even some more - questions.
4. What’s your problem?
‣ Building features takes too long
‣ Architectural quality has degraded
‣ Technical debt is well-known and not addressed
‣ „-ility“ problems abound
‣ Deployment is way to complicated and slow
‣ Scalability has reached its limit
‣ Replacement would be way too expensive
#WISSENTEILENOFFENKUNDIGGUT
5. „For a monolithic to change
all must agree on each
change.
Each change has
unanticipated effects
requiring testing beforehand.“
What’s the problem?
#WISSENTEILENOFFENKUNDIGGUT
16. „In short, the microservice architectural style is an
approach to developing a single application
as a suite of small services, each running in its
own process and communicating with lightweight
mechanisms, often an HTTP resource API.”
Martin Fowler (thoughtworks)
17. „As well as the fact that services are
independently deployable and scalable, each
service also provides a firm module boundary,
even allowing for different services to be written in
different programming languages. They can
also be managed by different teams.”
Martin Fowler (thoughtworks)
20. Charakteristika
„Any organization that designs
a system (defined broadly) will
produce a design whose structure
is a copy of the organization's
communication structure.“
Conway’s Law (1967)
Microservice Design
#WISSENTEILENOFFENKUNDIGGUT
29. Surviving Service Design
Domain Model
‣ Derive Objects (names)
from shared language
‣ Evolve Model with the help
of all participants
‣ BTW: Changes in language
lead to changes in model
#WISSENTEILENOFFENKUNDIGGUT
40. Charakteristika
Surviving Service Design
Bounded Context, but how?
‣ clear borders
‣ business processes
‣ avoid inconsistencies
‣ e.g. check out
‣ e.g. present product
‣ e.g. „my“ recommendations
#WISSENTEILENOFFENKUNDIGGUT
46. „Be conservative in what you do,
be liberal in what you expect.“
Postel’s Law (a.k.a. robustness principle)
Surviving Service Design Versioning?
#WISSENTEILENOFFENKUNDIGGUT
47. Surviving Service Design Shared Kernel
Me, too!
And me, too!I need this!
#WISSENTEILENOFFENKUNDIGGUT
52. Surviving Service Design
Bounded
Context
Ubiquitous
Language
names
enter
Continous
Integration
keep model unified by
Context Map
assess/overview
relationships with
Shared
Kernel
Overlap allied contexts through
Customer
Supplier
Teamsrelate allied contexts as
Conformist
overlap unilaterally as
Open Host
Service
support multiple
clients through
Published
Language
formalize as
Separate
Ways
free teams to go
Anticorruption
Layer
translate and insulate
unilaterally with
#WISSENTEILENOFFENKUNDIGGUT
53. Surviving Service Design
Bounded
Context
Ubiquitous
Language
names
enter
Continous
Integration
keep model unified by
Context Map
assess/overview
relationships with
Shared
Kernel
Overlap allied contexts through
Customer
Supplier
Teamsrelate allied contexts as
Conformist
overlap unilaterally as
Open Host
Service
support multiple
clients through
Published
Language
formalize as
Separate
Ways
free teams to go
Anticorruption
Layer
translate and insulate
unilaterally with
#WISSENTEILENOFFENKUNDIGGUT
54. Surviving Service Design
Bounded
Context
Ubiquitous
Language
names
enter
Continous
Integration
keep model unified by
Context Map
assess/overview
relationships with
Shared
Kernel
Overlap allied contexts through
Customer
Supplier
Teamsrelate allied contexts as
Conformist
overlap unilaterally as
Open Host
Service
support multiple
clients through
Published
Language
formalize as
Separate
Ways
free teams to go
Anticorruption
Layer
translate and insulate
unilaterally with
#WISSENTEILENOFFENKUNDIGGUT
58. „Size does matter" by Lars Röwekamp (open knowledge GmbH)
Surviving Service Design
Shopping Cart
History
Shipping
User Management
Customer Self Care!
60. My point of view
‣ „Use a shared common Language“
‣ „Know your Domain Model“
‣ „Know your Bounded Contexts“
‣ „Know your Neighbors“
‣ „Think (also) in Processes not only in Objects“
‣ „Be a tolerant Reader and a strict Supplier“
‣ BTW: „Talking to each other is still allowed!“
#WISSENTEILENOFFENKUNDIGGUT