microservices bounded contexts and everything in … · 2020. 7. 13. · microservices bounded...

125
vladikk doit-intl.com #OReillySACon MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN

Upload: others

Post on 15-Oct-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN

Page 2: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

”95% of the words are spent extolling the benefits of “modularity” and that little, if anything, is said

about how to achieve it”Glenford J. Myers

Page 3: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Page 4: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

“MICROSERVICES FTW!!!!!!!!1”

Me @ Internovus

Page 5: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

“MICROSERVICES FTW!!!!!!!!1”

Me @ Internovus💩

Page 6: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

”95% of the words are spent extolling the benefits of “modularity” and that little, if anything, is said

about how to achieve it”Glenford J. Myers

Page 7: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Page 8: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Page 9: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Decomposi)on Strategies

Microservices

Design Heuris)cs

Page 10: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

INTERNOVUS

01

BUSINESS DOMAIN

Page 11: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Your Product Marketing Strategy

Creatives Campaigns Sales Agents

OptimizationProfits

Page 12: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

DECOMPOSITION

02

STRATEGIES

Page 13: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Bounded Contexts

Page 14: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Page 15: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Domain ExpertSoftware Developer

Page 16: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Business Domain ExpertSoftware Developer

??? !!!

Ubiquitous Language

Page 17: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Campaigns Sales Agents

Your Product Marketing Strategy

Creatives

OptimizationProfits

Page 18: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Sales AgentCampaign Manager

??? !!!

LEAD?

Page 19: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Conflicting models

Different contexts

Dividing the language/model

Bounded Context

Page 20: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

MarkeCngSales

Lead Lead

FunnelCampaign

Placement Landing PageAgency Insertion Order Message

Campaign

PropositionDesk

Conversion

ContactCDR

Bounded Contexts

Page 21: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

MarkeCng Service

Sales Service

DecomposiCon Strategy #1: Bounded Contexts

Page 22: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

MarkeCngSales

CommissionsDesks

Sales Optimization

CRMTelephony

Creative Catalog

Contracts

Billing

Campaign Management

Identity & Access

Ads OptimizationIdentity & Access

Page 23: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Business (Sub)Domains

Page 24: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Business Domain: Customer Acquisi)onBounded Context: Marke)ng Bounded Context: Sales

Subdomain: Crea)ve Catalog

Subdomain: Campaigns Mngmt

Subdomain: Ads Op)miza)on

Subdomain: Contracts Mngmt

Subdomain: CRM

Subdomain: Sales Op)miza)on

Subdomain: Commissions

Subdomain: Desks Mngmt

Page 25: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

DecomposiCon Strategy #2: Subomains

Campaign Management

Service

Content Catalog Service

Desks Management

Service

CRM Service

Users Service

Billing Service

Page 26: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Business EnCCes and Processes

Page 27: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

MarkeCngCreative Catalog

Contracts

Billing

Campaign Management

Identity & Access

Optimization

Campaign Management

Campaign Placement

FunnelBanner

Landing Page

WebsiteZone

Asset

Publisher

Target Market

Page 28: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

DecomposiCon Strategy #3: EnCCes

Website Asset Target Market

Broker Distribu)on Customer

Page 29: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

DecomposiCon Strategies

Bounded Contexts

Subdomains

Business Entities and Processes

Page 30: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

SHOW ME THE MICROSERVICES!

Page 31: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

MarkeCngCreative Catalog

Contracts

Billing

Campaign Management

Identity & Access

Optimization

Campaign Management

Campaign Placement

FunnelBanner

Landing Page

WebsiteZone

Asset

Publisher

Target Market

Campaign

Website

Placement

Funnel

Bounded Contexts? Subdomains? EnCCes?

Page 32: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Bounded Contexts == Microservices ?

Page 33: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Sales AgentCampaign Manager

??? !!!

LEAD?

Page 34: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

MarkeCngSales

Lead Lead

FunnelCampaign

Placement Landing PageAgency Insertion Order Message

Campaign

PropositionDesk

Conversion

ContactCDR

Page 35: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

MarkeCngSales

Lead Lead

FunnelCampaign

Placement Landing PageAgency Insertion Order Message

Campaign

PropositionDesk

Conversion

ContactCDR

Page 36: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

MarkeCngSales

CommissionsDesks

Optimization

CRMTelephony

Creative Catalog

Contracts

BillingCampaign

Management

Identity & Access

OptimizationIdentity & Access

Lead

Lead

Page 37: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

MarkeCngCreative Catalog

Campaign Management

OptimizationLead

Sales

Commissions

Optimization

CRM Lead

Desks

Telephony

SupportContracts

Billing

Identity & Access

Page 38: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Bounded Contexts Decomposi)on #1

Bounded Contexts Decomposi)on #2

Bounded Contexts Decomposi)on #3

Page 39: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Bounded Context

Consistency boundary of the language / model

Define the biggest valid monoliths

Required decomposition boundary

Page 40: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Bounded Contexts == Microservices? No

Page 41: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Campaign Management

Campaign Placement

FunnelBanner

Landing Page

WebsiteZone

Asset

Publisher

Target Market

Campaign

Website

Placement

Funnel

MarkeCngCreative Catalog

Contracts

Billing

Campaign Management

Identity & Access

Optimization

Bounded Contexts? No Subdomains? EnCCes?

Page 42: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

MICROSERVICES

03

Page 43: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

“A service is a unit of functionality exposed to the world” - Juval Lowy

“A mechanism to enable access to one or more capabilities, where the access is provided using a prescribed interface” - OASIS

Service

Page 44: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Service Interface

“Any mechanism for getting data in or out of the service”

- Randy Shoup

Page 45: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Service Interface

Asynchronous:

• Producing events

• Consuming events

Synchronous:

• Request / Response

• Bulk ETL

Page 46: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Service Interface

“Any mechanism for getting data in or out of the service”

- Randy Shoup

Page 47: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Service Interface

Page 48: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Services ➜ Microservice

Page 49: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

A microservice is a service with a micro interface

Page 50: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Microservice = Microinterface

Reducing coupling between services

Limits reasons for change

Easier to understand

Better fault isolation

More autonomy between services

Page 51: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Microservice & Databases

Microservices should own its database

No external access

Access through Microservice’s API only

Database = infinite interface!

Page 52: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

1 Method = Perfect Microservice !!??

Page 53: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Page 54: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Page 55: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Page 56: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Page 57: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

STAFF ONLY

STAFF ONLY

Page 58: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

The threshold upon which a system can be decomposed

into microservices is defined by the use cases of the

system that the microservices are a part of.

Page 59: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Monolith Microservices Distributed Monolith

Cost of

Change

Page 60: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Big Ball Of Mud Bounded Contexts

Microservices Distributed Big Ball Of Mud

Avg. Service

Size

Page 61: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Campaign Management

Campaign Placement

FunnelBanner

Landing Page

WebsiteZone

Asset

Publisher

Target Market

Campaign

Website

Placement

Funnel

Subdomains? EnCCes?

Page 62: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Page 63: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

”Global complexity … the complexity of the

overall structure of a program or system. I.e., the

degree of association or interdependence

among the major pieces of a program”Glenford J. Myers

Page 64: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

”Global complexity … the complexity of the

overall structure of a program or system. I.e., the

degree of association or interdependence

among the major pieces of a program”Glenford J. Myers

Composite / Structured Design, 1978

Page 65: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

When you design a system…, then if the features can be broken into … loosely bound groups of

rela>vely closely bound features, then that division is a good thing to be made a part of the

design. This is just good engineering.

Tim Berners-LeePrinciples of design, 1998

Page 66: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Services + Good Engineering = Microservices

Page 67: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Its is not only necessary to make sure your own system is designed to be made of modular parts.

It is also necessary to realize that your own system … should always be designed to be a part

of another larger system.

Tim Berners-LeePrinciples of design, 1998

Page 68: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

A major part of this paper will be concerned with the ques>on of how good modularity can be

achieved, that is, how modules can be chosen so as to minimize the connec5ons between them.

Barbara LiskovA design methodology for reliable soIware systems, 1972

Page 69: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

A microservice is a service with a micro interface.

The threshold upon which a system can be decomposed

into microservices is defined by the use cases of the

system that the microservices are a part of.

Page 70: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

A microservice is a service with a micro interface.

The threshold upon which the system can be decomposed

is defined by the use cases of the system that the

microservices are a part of.

…how to evaluate?

Page 71: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

DESIGN

04

HEURISTICS

Page 72: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

HeurisCc #1: Decompose to Bounded Contexts

Do not implement conflicting models in the same service. Always decompose to Bounded Contexts.

Page 73: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

HeurisCc #2: Don’t

First Law of Distributed Object Design: “Don’t distribute your objects”

MarCn Fowler

Page 74: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

HeurisCc #2: Don’t

Benefits Addi)onal Complexity

Page 75: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

MONOLITHSYSTEM DESIGN THAT UNDERMINES DELIVERY OF FUNCTIONAL OR NON-FUNCTIONAL REQUIREMENTS

Page 76: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

HeurisCc #2: Don’t

Benefits Addi)onal Complexity

Page 77: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

HeurisCc #2: Don’t

Benefits Addi)onal Complexity

Page 78: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Core

Supporting

Generic

Page 79: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Generic Subdomains

No competitive advantage

Everybody is implementing in the same way

Complex business logic

Page 80: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

MarkeCngSales

CommissionsDesks

Optimization

CRMTelephony

Creative Catalog

Contracts

Billing

Campaign Management

Identity & Access

OptimizationIdentity & Access

Generic

Page 81: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

MarkeCngSales

CommissionsDesks

Optimization

CRMTelephony

Creative Catalog

Contracts

Billing

Campaign Management

Identity & AccessOptimization Identity & Access

Generic

Page 82: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

MarkeCngSales

CommissionsDesks

Optimization

CRMTelephony

Creative Catalog

Contracts

Billing

Campaign Management

Identity & Access

OptimizationIdentity & Access

Generic

Page 83: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

MarkeCngSales

CommissionsDesks

Optimization

CRMTelephony

Creative Catalog

Contracts

BillingCampaign

Management

Identity & Access

OptimizationIdentity & Access

Generic

Page 84: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

MarkeCngSales

CommissionsDesks

Optimization

CRMTelephony

Creative Catalog

Contracts

Billing

Campaign Management

Identity & Access

OptimizationIdentity & Access

Generic

Page 85: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

HeurisCc #3: Buy/Adopt Generic Subdomains

Your System

3rd party product

Page 86: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

HeurisCc #3: Buy/Adopt Generic Subdomains

Your System

3rd party product

An)-

Corr

up)o

n La

yer

Page 87: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Core SubdomainsInventing something new

Optimizing existing paractices

Competitive advantage

Complex business logic

Change often

Page 88: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

MarkeCngSales

CommissionsDesks

Sales Optimization

CRMTelephony

Creative Catalog

Contracts

Billing

Campaign Management

Identity & Access

Ad OptimizationIdentity & Access

Generic Core

Page 89: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Core SubdomainsInventing something new

Optimizing existing paractices

Competitive advantage

Complex business logic

Change often

Page 90: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

HeurisCc #4: Core Subdomains - Don’t Rush

Adhere to subdomain’s boundaries. Decompose further only when you acquire domain knowledge.

Page 91: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

SupporCng Subdomains

No competitive advantage

Support the Core Subdomains

Can’t be bought / adopted

Simple business logic

Page 92: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

MarkeCngSales

CommissionsDesks

Sales Optimization

CRMTelephony

Creative Catalog

Contracts

Billing

Campaign Management

Identity & Access

Ad OptimizationIdentity & Access

Generic Core Supporting

Page 93: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

SupporCng Subdomains

No competitive advantage

Support the Core Subdomains

Can’t be bought / adopted

Simple business logic

Page 94: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

HeurisCc #5: SupporCng Subdomains - Safe

Safe to decompose beyond the subdomain’s boundaries.

Page 95: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Core

Supporting

Generic

Page 96: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

HeurisCc #6: Evaluate Consistency Requirements

Method A Method B

Page 97: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

HeurisCc #6: Evaluate Consistency Requirements

Concurrency control? - Same service

Method A Method B

Service A

Page 98: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

HeurisCc #6: Evaluate Consistency Requirements

Read last write? - Two services, synchronous communication

Service A

Method A

Service B

Method B

Sync call

Page 99: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

HeurisCc #6: Evaluate Consistency Requirements

Eventual consistency? - Two services, asynchronous communication

Service A

Method A

Service B

Method B

Asynchronous Communication

Page 100: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

HeurisCc #6: Evaluate Consistency Requirements

Concurrency control? - Same service

Read last write? - Two services, sync communication

Eventual consistency? - Two services, async communication

Page 101: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Service A

Method A

Service B

Method B

Asynchronous Communication

Page 102: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

HeurisCc #7: Public / Private Events

Service

Event Type 1

Event Type 2

Event Type 3

Event Type 4

Event Type 5

Event Type 6

Event Type 1000

Page 103: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

HeurisCc #7: Public / Private Events

Service

Event Type 1

Event Type 2

Event Type 3

Event Type 4

Event Type 5

Event Type 6Private event types (Implementation details)}Event Type 1000

Page 104: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

HeurisCc #7: Public / Private Events

Service

Event Type 1

Event Type 2

Event Type 3

Event Type 4

Event Type 5

Event Type 6

Event Type 1000

Private event types (Implementation details)}Public event types (Public interface)}

Page 105: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Service

EmailChanged

PhoneNumberChanged

AddressChanged

HeurisCc #7: Public / Private Events

Page 106: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Service

EmailChanged

PhoneNumberChanged

AddressChanged

ContactDetailsChanged

HeurisCc #7: Public / Private Events

Page 107: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Service

EmailChanged

PhoneNumberChanged

AddressChanged

ContactDetailsChanged

Private event types (Implementation details)

} Public event type (Public interface)

}HeurisCc #7: Public / Private Events

Page 108: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

HeurisCc #7: Public / Private Events

Events?Domain Events

State Change Events

Private Public

Page 109: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

HeurisCc #8: Make Events Explicit

Eliminate ambiguity

Page 110: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

HeurisCc #8: Make Events Explicit

Service

AgentAssignedToLead

Page 111: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

HeurisCc #8: Make Events Explicit

Service

AgentAssignedToLead

AgentAssignedToLead

AgentAssignedToLead

Page 112: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

HeurisCc #8: Make Events Explicit

Service

AgentAssignedToLead

AgentUnassignedToLead

AgentAssignedToLead

Page 113: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

HeurisCc #9: Evaluate Reasons for Change

Service A Service B

Page 114: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Same reasons for change?

Same rate of change?

Can be decoupled?

Should be the same service?

HeurisCc #9: Evaluate Reasons for Change

Page 115: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Page 116: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

HeurisCc #10: Evaluate Services’ “Doors”

Page 117: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

HeurisCc #10: Evaluate Services’ “Doors”

STAFF ONLY

STAFF ONLY

Page 118: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

WRAP UP

05

Page 119: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

1. A service is a unit of func)onality exposed to the world through its public interface.

2. A microservice is a service with micro interface 3. The “micro-interface” is rela)ve to the use cases of

the system that the service is a part of

Page 120: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Heuris)c #1: Always decompose to Bounded Contexts Heuris)c #2: Don’t go further, unless you have to Heuris)c #3: Buy/adopt generic subdomains Heuris)c #4: Core subdomains - don’t rush Heuris)c #5: Suppor)ng subdomains can be decomposed early

Page 121: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Heuris)c #6: Evaluate Consistency Requirements Heuris)c #7: Private / Public Events Heuris)c #8: Explicitly Define Events Heuris)c #9: Evaluate Reasons for Change Heuris)c #10: Evaluate Services’ “Doors”

Page 122: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Big Ball Of Mud Bounded Contexts

Microservices Distributed Big Ball Of Mud

Avg. Service

Size

Page 123: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon

Bibliography1. A Design Methodology for Reliable Soeware Systems, Barbara Liskov 2. Designing Autonomous Teams and Services, Nick Tune & Scoh Millet 3. Composite/Structured Design, Glenford Myers 4. Domain-Driven Design: Tackling Complexity in the Heart of Soeware, Eric Evans 5. Emerging Boundaries, Mathias Veraes 6. Implemen)ng Domain-Driven Design, Vaughn Vernon 7. Enterprise Integra)on Paherns, Gregory Hohpe, at al 8. Long Sad Story of Microservices, Greg Young 9. Managing Data in Microservices, Randy Shoup 10. Microservices, At Last Some Boundaries, Eric Evans 11. On the Criteria to be Used in Decomposing Systems Into Modules, David Parnas 12. Paherns of Enterprise Applica)on Architecture, Mar)n Fowler, at al 13. Principles of Design, Tim Berners-Lee 14. Programming WCF Services, Juval Lowy 15. What Every Programmer Should Know About Object Oriented Design, Melir Page-Jones

Page 124: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

https://bit.ly/2ptJ5fS

THANK [email protected]

https://bit.ly/31nSD9c

http://careers.doit-intl.com

http://explore-ddd.com

Page 125: MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN … · 2020. 7. 13. · MICROSERVICES BOUNDED CONTEXTS AND EVERYTHING IN BETWEEN. vladikk #OReillySACon doit-intl.com ”95% of the

vladikk doit-intl.com#OReillySACon