16
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

Cutting Microservices with Domain-Driven Design€¦ · Cutting Microservices with Domain-Driven Design Dr. Carola Lilienthal, [email protected], @cairolali 463 tangled classes belonging

  • Upload
    others

  • View
    15

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Cutting Microservices with Domain-Driven Design€¦ · Cutting Microservices with Domain-Driven Design Dr. Carola Lilienthal, cl@wps.de, @cairolali 463 tangled classes belonging

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

Page 2: Cutting Microservices with Domain-Driven Design€¦ · Cutting Microservices with Domain-Driven Design Dr. Carola Lilienthal, cl@wps.de, @cairolali 463 tangled classes belonging

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

Page 3: Cutting Microservices with Domain-Driven Design€¦ · Cutting Microservices with Domain-Driven Design Dr. Carola Lilienthal, cl@wps.de, @cairolali 463 tangled classes belonging

09.10.2019

3

Team Head

Team Tail

Team Body

Team Leg

9

10

Page 4: Cutting Microservices with Domain-Driven Design€¦ · Cutting Microservices with Domain-Driven Design Dr. Carola Lilienthal, cl@wps.de, @cairolali 463 tangled classes belonging

09.10.2019

4

Team Head

Team Tail

Team Body

Team Leg

Team Head

Team Tail

Team Body

Team Leg

11

12

Page 5: Cutting Microservices with Domain-Driven Design€¦ · Cutting Microservices with Domain-Driven Design Dr. Carola Lilienthal, cl@wps.de, @cairolali 463 tangled classes belonging

09.10.2019

5

Team Head

Team Tail

Team Body

Team Leg

Team Emma

Team Berta

Team Erna

Team Lisl

13

14

Page 6: Cutting Microservices with Domain-Driven Design€¦ · Cutting Microservices with Domain-Driven Design Dr. Carola Lilienthal, cl@wps.de, @cairolali 463 tangled classes belonging

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

Page 7: Cutting Microservices with Domain-Driven Design€¦ · Cutting Microservices with Domain-Driven Design Dr. Carola Lilienthal, cl@wps.de, @cairolali 463 tangled classes belonging

09.10.2019

7

@cairolali

🤦‍♂️

17

18

Page 8: Cutting Microservices with Domain-Driven Design€¦ · Cutting Microservices with Domain-Driven Design Dr. Carola Lilienthal, cl@wps.de, @cairolali 463 tangled classes belonging

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

Page 9: Cutting Microservices with Domain-Driven Design€¦ · Cutting Microservices with Domain-Driven Design Dr. Carola Lilienthal, cl@wps.de, @cairolali 463 tangled classes belonging

09.10.2019

9

@cairolali

BOUNDED CONTEXT AND DEPLOYMENT

21

22

Page 10: Cutting Microservices with Domain-Driven Design€¦ · Cutting Microservices with Domain-Driven Design Dr. Carola Lilienthal, cl@wps.de, @cairolali 463 tangled classes belonging

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

Page 11: Cutting Microservices with Domain-Driven Design€¦ · Cutting Microservices with Domain-Driven Design Dr. Carola Lilienthal, cl@wps.de, @cairolali 463 tangled classes belonging

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

Page 12: Cutting Microservices with Domain-Driven Design€¦ · Cutting Microservices with Domain-Driven Design Dr. Carola Lilienthal, cl@wps.de, @cairolali 463 tangled classes belonging

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

Page 13: Cutting Microservices with Domain-Driven Design€¦ · Cutting Microservices with Domain-Driven Design Dr. Carola Lilienthal, cl@wps.de, @cairolali 463 tangled classes belonging

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

Page 14: Cutting Microservices with Domain-Driven Design€¦ · Cutting Microservices with Domain-Driven Design Dr. Carola Lilienthal, cl@wps.de, @cairolali 463 tangled classes belonging

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

Page 15: Cutting Microservices with Domain-Driven Design€¦ · Cutting Microservices with Domain-Driven Design Dr. Carola Lilienthal, cl@wps.de, @cairolali 463 tangled classes belonging

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

Page 16: Cutting Microservices with Domain-Driven Design€¦ · Cutting Microservices with Domain-Driven Design Dr. Carola Lilienthal, cl@wps.de, @cairolali 463 tangled classes belonging

09.10.2019

16

@cairolali

@cairolali

[email protected]

THANX!

Available in English since Summer 2019

www.sustainable-software-architecture.com

41