Upload
others
View
15
Download
0
Embed Size (px)
Citation preview
09.10.2019
1
WPS - Workplace Solutions GmbH //// Hans-Henny-Jahnn-Weg 29 //// 22085 HAMBURG
Cutting Microservices with Domain-Driven Design
Dr. Carola Lilienthal, [email protected], @cairolali
www.wps.de
463 tangled classes belonging to
10 different components
1
6
09.10.2019
2
@cairolali
▪Use design patterns
▪Do test driven development
▪Write modular classes with one single
responsibility
▪Aim for high cohesion and low coupling
MOB ARCHITECTING WITH THE TEAMStructure101
SotoArc
Lattix
@cairolali
TECHNICAL ARCHITECTURE
User Interface
Domain
Application
Tech
nic
al
layeri
ng
7
8
09.10.2019
3
Team Head
Team Tail
Team Body
Team Leg
9
10
09.10.2019
4
Team Head
Team Tail
Team Body
Team Leg
Team Head
Team Tail
Team Body
Team Leg
11
12
09.10.2019
5
Team Head
Team Tail
Team Body
Team Leg
Team Emma
Team Berta
Team Erna
Team Lisl
13
14
09.10.2019
6
@cairolali
DOMAIN-DRIVEN ARCHITECTURE
Domain
Module B
Domain
Module A
Loose coupling = as little coupling as possible!
Technic
al
layeri
ng
Domain
Module C
User Interface User InterfaceUser Interface
Domain
Application
Domain
Application
Domain
Application
@cairolali
EACH BOUNDED CONTEXT HAS ITS OWN MODEL
▪ Each team can work freely on their own domain model
▪ Know the limits
▪ Stay inside the borders
15
16
09.10.2019
7
@cairolali
🤦♂️
17
18
09.10.2019
8
@cairolali
DOMAIN MODEL IN LEGACY CODE
▪ Large domain classes (entities/aggregates)
▪ Unmanageable complexity
▪ Several models mixed and squeezed together
▪ Strong dependencies between teams
Foto: CMS Higgs-even/Wikipedia/CC-BY-SA-3.0
19
20
09.10.2019
9
@cairolali
BOUNDED CONTEXT AND DEPLOYMENT
21
22
09.10.2019
10
@cairolali
HOW DO I CUT TO FIT THE DOMAIN?
▪ By departments in the organization or groups of domain experts
▪ According to differences in the use/definition of key concepts of the ubiquitous language
▪ According to boundaries in the business process described by the domain experts
▪ Information runs in one direction
▪ Processes are executed in different rhythms
▪ Processes are triggered by different triggers
@cairolali
TICKET AGENT
MOVIEGOER
WEEKLY SCHEDULE<< in Arbeit >>
REQUESTED NUMBEROF SEATS
AUDITORIUM PLAN
LIST OF AUDITORIUM PLANS
SOLD SEATS
TICKETS
FILM SHOW
FOUNDSEATS
AUDITORIUM PLAN
WEEKLY SCHEDULE<< finalized >>
FILM DISTRIBUTOR
CINEMAMANAGER
AD AGENCY ADVERTISMENT
BOOKING PLAN
PLAN FORFILM SHOWS
COUNTRYWIDENUMBER OF VISITORS
AVAILABILITYOF FILMS
1
6
210
5
3
8
4
7
9
11
12
13
14
AUDITORIUM PLAN
15
STARTSWORKING ON
CHECKS THE
NEGOTIATES
WITH
FINALIZESTHE
AND CREATES FOR THE UPCOMMING WEEK
MONEY TICKETS
TICKETS
ASKS FOR
FOR A
OPENS A
CLOSES THE
FROM THE
OFFERS
TO GIVES
TO
SEARCHES
ON THE
ONTHE
MARKS
PRINTS
GIVES THE
TO THE
24
25
09.10.2019
11
@cairolali
TICKET AGENT
MOVIEGOER
WEEKLY SCHEDULE<< in Arbeit >>
REQUESTED NUMBEROF SEATS
AUDITORIUM PLAN
LIST OF AUDITORIUM PLANS
SOLD SEATS
TICKETS
FILM SHOW
FOUNDSEATS
AUDITORIUM PLAN
WEEKLY SCHEDULE<< finalized >>
FILM DISTRIBUTOR
CINEMAMANAGER
AD AGENCY ADVERTISMENT
BOOKING PLAN
PLAN FORFILM SHOWS
COUNTRYWIDENUMBER OF VISITORS
AVAILABILITYOF FILMS
1
6
210
5
3
8
4
7
9
11
12
13
14
AUDITORIUM PLAN
15
STARTSWORKING ON
CHECKS THE
NEGOTIATES
WITH
FINALIZESTHE
AND CREATES FOR THE UPCOMMING WEEK
MONEY TICKETS
TICKETS
ASKS FOR
FOR A
OPENS A
CLOSES THE
FROM THE
OFFERS
TO GIVES
TO
SEARCHES
ON THE
ONTHE
MARKS
PRINTS
GIVES THE
TO THE
TriggerTrigger
@cairolali
TICKET AGENT
MOVIEGOER
WEEKLY SCHEDULE<< in Arbeit >>
REQUESTED NUMBEROF SEATS
AUDITORIUM PLAN
LIST OF AUDITORIUM PLANS
SOLD SEATS
TICKETS
FILM SHOW
FOUNDSEATS
AUDITORIUM PLAN
WEEKLY SCHEDULE<< finalized >>
FILM DISTRIBUTOR
CINEMAMANAGER
AD AGENCY ADVERTISMENT
BOOKING PLAN
PLAN FORFILM SHOWS
COUNTRYWIDENUMBER OF VISITORS
AVAILABILITYOF FILMS
1
6
210
5
3
8
4
7
9
11
12
13
14
AUDITORIUM PLAN
15
STARTSWORKING ON
CHECKS THE
NEGOTIATES
WITH
FINALIZESTHE
AND CREATES FOR THE UPCOMMING WEEK
MONEY TICKETS
TICKETS
ASKS FOR
FOR A
OPENS A
CLOSES THE
FROM THE
OFFERS
TO GIVES
TO
SEARCHES
ON THE
ONTHE
MARKS
PRINTS
GIVES THE
TO THE
TriggerTriggeronce a week
26
27
09.10.2019
12
@cairolali
TICKET AGENT
MOVIEGOER
WEEKLY SCHEDULE<< in Arbeit >>
REQUESTED NUMBEROF SEATS
AUDITORIUM PLAN
LIST OF AUDITORIUM PLANS
SOLD SEATS
TICKETS
FILM SHOW
FOUNDSEATS
AUDITORIUM PLAN
WEEKLY SCHEDULE<< finalized >>
FILM DISTRIBUTOR
CINEMAMANAGER
AD AGENCY ADVERTISMENT
BOOKING PLAN
PLAN FORFILM SHOWS
COUNTRYWIDENUMBER OF VISITORS
AVAILABILITYOF FILMS
1
6
210
5
3
8
4
7
9
11
12
13
14
AUDITORIUM PLAN
15
STARTSWORKING ON
CHECKS THE
NEGOTIATES
WITH
FINALIZESTHE
AND CREATES FOR THE UPCOMMING WEEK
MONEY TICKETS
TICKETS
ASKS FOR
FOR A
OPENS A
CLOSES THE
FROM THE
OFFERS
TO GIVES
TO
SEARCHES
ON THE
ONTHE
MARKS
PRINTS
GIVES THE
TO THE
TriggerTriggeronce a week
each time a
customer asks
for a ticket
@cairolali
TICKET AGENT
MOVIEGOER
WEEKLY SCHEDULE<< in Arbeit >>
REQUESTED NUMBEROF SEATS
AUDITORIUM PLAN
LIST OF AUDITORIUM PLANS
SOLD SEATS
TICKETS
FILM SHOW
FOUNDSEATS
AUDITORIUM PLAN
WEEKLY SCHEDULE<< finalized >>
FILM DISTRIBUTOR
CINEMAMANAGER
AD AGENCY ADVERTISMENT
BOOKING PLAN
PLAN FORFILM SHOWS
COUNTRYWIDENUMBER OF VISITORS
AVAILABILITYOF FILMS
1
6
210
5
3
8
4
7
9
11
12
13
14
AUDITORIUM PLAN
15
STARTSWORKING ON
CHECKS THE
NEGOTIATES
WITH
FINALIZESTHE
AND CREATES FOR THE UPCOMMING WEEK
MONEY TICKETS
TICKETS
ASKS FOR
FOR A
OPENS A
CLOSES THE
FROM THE
OFFERS
TO GIVES
TO
SEARCHES
ON THE
ONTHE
MARKS
PRINTS
GIVES THE
TO THE
TriggerTriggeronce a week
each time a
customer asks
for a ticket
Cinema management
Ticket sales
28
29
09.10.2019
13
@cairolali
TICKET AGENT
MOVIEGOER
WEEKLY SCHEDULE<< in Arbeit >>
REQUESTED NUMBEROF SEATS
AUDITORIUM PLAN
LIST OF AUDITORIUM PLANS
SOLD SEATS
TICKETS
FILM SHOW
FOUNDSEATS
AUDITORIUM PLAN
WEEKLY SCHEDULE<< finalized >>
FILM DISTRIBUTOR
CINEMAMANAGER
AD AGENCY ADVERTISMENT
BOOKING PLAN
PLAN FORFILM SHOWS
COUNTRYWIDENUMBER OF VISITORS
AVAILABILITYOF FILMS
1
6
210
5
3
8
4
7
9
11
12
13
14
AUDITORIUM PLAN
15
STARTSWORKING ON
CHECKS THE
NEGOTIATES
WITH
FINALIZESTHE
AND CREATES FOR THE UPCOMMING WEEK
MONEY TICKETS
TICKETS
ASKS FOR
FOR A
OPENS A
CLOSES THE
FROM THE
OFFERS
TO GIVES
TO
SEARCHES
ON THE
ONTHE
MARKS
PRINTS
GIVES THE
TO THE
TriggerTriggeronce a week
each time a
customer asks
for a ticket
Cinema management
Ticket sales
information flow
@cairolali
TICKET AGENT
MOVIEGOER
WEEKLY SCHEDULE<< in Arbeit >>
REQUESTED NUMBEROF SEATS
AUDITORIUM PLAN
LIST OF AUDITORIUM PLANS
SOLD SEATS
TICKETS
FILM SHOW
FOUNDSEATS
AUDITORIUM PLAN
WEEKLY SCHEDULE<< finalized >>
FILM DISTRIBUTOR
CINEMAMANAGER
AD AGENCY ADVERTISMENT
BOOKING PLAN
PLAN FORFILM SHOWS
COUNTRYWIDENUMBER OF VISITORS
AVAILABILITYOF FILMS
1
6
210
5
3
8
4
7
9
11
12
13
14
AUDITORIUM PLAN
15
STARTSWORKING ON
CHECKS THE
NEGOTIATES
WITH
FINALIZESTHE
AND CREATES FOR THE UPCOMMING WEEK
MONEY TICKETS
TICKETS
ASKS FOR
FOR A
OPENS A
CLOSES THE
FROM THE
OFFERS
TO GIVES
TO
SEARCHES
ON THE
ONTHE
MARKS
PRINTS
GIVES THE
TO THE
TriggerTriggeronce a week
each time a
customer asks
for a ticket
Cinema management
Ticket sales
information flow
WEEKLY SCHEDULE<< printed >>
30
31
09.10.2019
14
@cairolali
MODULARIZATION BY DOMAIN: HOW DO WE PROCEED?
Refactorings
Analyze +
Discussion
Define
measures
ArchitectureRekonstruction
Source-
Code
Domain
Modules
Bounded
Contexts
Alternatives
• Prioritization of measures
• Planning into the development cycle
Violations
• Identified with the domain experts
• Discuss ubiquitous language + processes
• Find bounded contexts (first ideas)
@cairolali
TAKTICAL AND STRATEGIC DESIGN
Strategic design (on a large scale)
▪ Split the domain into separate bounded contexts
▪ Each BC has its own ubiquitous language and its own domain model
Tactical design (on a small scale)
▪ Within a Bounded Context
▪ Ubiquitous Language as a basis
▪ Building Blocks: Entity, Value Object,
Aggregates, Service, Repository, Factory
32
33
09.10.2019
15
@cairolali
APPLYING BUILDING BLOCKS TO LEGACY CODE
User Interface
Domain
Application
Layeri
ng
by
patt
ern
s
Bounded Context
Repository
Factory
Model
View
Controller
ValueObject
Service
Entity/Aggregate
@cairolali
MODULARITY MATURITY INDEX (MMI)
612.869 LOC
14.756.435 LOC
252.062 LOC
804.093 LOC
543.388 LOC
1.035.668 LOC
486.358 LOC
175.258 LOC
42.311 LOC
193.383 LOC
643.466 LOC
245.754 LOC
2.890.204 LOC
141.696 LOC
512.086 LOC
9.988.363 LOC
200.591 LOC
922.949 LOC
22.658 LOC
663.862 LOC
3.270.188 LOC
1.521.357 LOC
0
2
4
6
8
10
34
39
09.10.2019
16
@cairolali
@cairolali
THANX!
Available in English since Summer 2019
www.sustainable-software-architecture.com
41