Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Bounded Contexts, Microservices, and Everything In Between

Bounded Contexts, Microservices, and Everything In Between

“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, 1978. This quote is 40 years old. Today, 4 decades later, nothing has changed except terminology. Time to fix this.

I want to talk about the various strategies of decomposing systems into modular components. We will learn what exactly Bounded Contexts and Microservices are. See how and why they differ. Analyze what happens between services - how data flows, and how this flow can be optimized. Ultimately, we will explore different decomposition strategies and heuristics for designing modular systems. Systems that aren’t driven by ever-changing fads, but by your business needs.

Vladik Khononov

October 18, 2018
Tweet

More Decks by Vladik Khononov

Other Decks in Programming

Transcript

  1. MICROSERVICES
    BOUNDED CONTEXTS
    AND EVERYTHING IN BETWEEN
    vladikk

    View Slide

  2. @vladikk
    vladikk.com

    View Slide

  3. ”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
    Composite / Structured Design, 1974

    View Slide

  4. “MICROSERVICES FTW!!!!!!!!1”
    Me @ Internovus

    View Slide

  5. “MICROSERVICES FTW!!!!!!!!1”
    Me @ Internovus

    View Slide

  6. View Slide

  7. ”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
    Composite / Structured Design, 1974

    View Slide

  8. View Slide

  9. View Slide

  10. Decomposi/on Strategies
    Microservices
    Design Heuris/cs

    View Slide

  11. vladikk
    NAXEX / INTERNOVUS
    01
    BUSINESS DOMAIN

    View Slide

  12. Your Product Marketing

    Strategy
    Creatives Campaigns Sales

    Agents
    Optimization
    Profits

    View Slide

  13. vladikk
    DECOMPOSITION
    02
    STRATEGIES

    View Slide

  14. Bounded Contexts

    View Slide

  15. View Slide

  16. Business Domain Expert
    Software Developer
    ???
    !!!
    Ubiquitous Language

    View Slide

  17. Campaigns Sales

    Agents
    Your Product Marketing

    Strategy
    Creatives
    Optimization
    Profits

    View Slide

  18. Campaigns Sales

    Agents
    Your Product Marketing

    Strategy
    Creatives
    Optimization
    Profits

    View Slide

  19. Sales Agent
    Campaign Manager
    ???
    !!!
    LEAD?

    View Slide

  20. Conflicting models
    Different contexts
    Dividing the language/model
    Bounded Context

    View Slide

  21. MarkeCng
    Sales
    Lead Lead
    Funnel
    Campaign
    Placement
    Landing Page
    Agency Insertion Order
    Message
    Campaign
    Proposition
    Desk
    Conversion
    Contact
    CDR
    Bounded Contexts

    View Slide

  22. MarkeCng
    Service
    Sales
    Service
    DecomposiCon Strategy #1: Bounded Contexts

    View Slide

  23. MarkeCng

    View Slide

  24. MarkeCng
    Creative
    Catalog
    Contracts
    Billing
    Campaign
    Management
    Identity & Access
    Ads Optimization

    View Slide

  25. MarkeCng
    Sales
    Creative
    Catalog
    Contracts
    Billing
    Campaign
    Management
    Identity & Access
    Ads Optimization

    View Slide

  26. MarkeCng
    Sales
    Commissions
    Desks
    Sales

    Optimization
    CRM
    Telephony
    Creative
    Catalog
    Contracts
    Billing
    Campaign
    Management
    Identity & Access
    Ads Optimization
    Identity & Access

    View Slide

  27. Business (Sub)Domains

    View Slide

  28. Business Domain: Customer Acquisi/on
    Bounded 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

    View Slide

  29. DecomposiCon Strategy #2: Subomains
    Campaign
    Management
    Service
    Content
    Catalog
    Service
    Desks
    Management
    Service
    CRM
    Service
    Users
    Service
    Billing
    Service

    View Slide

  30. Business EnCCes and Processes

    View Slide

  31. MarkeCng
    Creative
    Catalog
    Contracts
    Billing
    Campaign
    Management
    Identity & Access
    Optimization

    View Slide

  32. MarkeCng
    Creative
    Catalog
    Contracts
    Billing
    Campaign
    Management
    Identity & Access
    Optimization
    Campaign
    Management
    Campaign Placement
    Funnel
    Banner
    Landing Page
    Website
    Zone
    Asset
    Publisher
    Target Market

    View Slide

  33. DecomposiCon Strategy #3: EnCCes
    Website Asset Target Market
    Broker Distribu/on Customer

    View Slide

  34. DecomposiCon Strategies
    Bounded Contexts
    Subdomains
    Business Entities and Processes

    View Slide

  35. SHOW ME THE
    MICROSERVICES!

    View Slide

  36. Bounded Contexts == Microservices ?

    View Slide

  37. Sales Agent
    Campaign Manager
    ???
    !!!
    LEAD?

    View Slide

  38. MarkeCng
    Sales
    Lead Lead
    Funnel
    Campaign
    Placement
    Landing Page
    Agency Insertion Order
    Message
    Campaign
    Proposition
    Desk
    Conversion
    Contact
    CDR

    View Slide

  39. MarkeCng
    Sales
    Lead Lead
    Funnel
    Campaign
    Placement
    Landing Page
    Agency Insertion Order
    Message
    Campaign
    Proposition
    Desk
    Conversion
    Contact
    CDR

    View Slide

  40. MarkeCng
    Sales
    Lead Lead
    Funnel
    Campaign
    Placement
    Landing Page
    Agency Insertion Order
    Message
    Campaign
    Proposition
    Desk
    Conversion
    Contact
    CDR

    View Slide

  41. MarkeCng
    Sales
    Commissions
    Desks
    Optimization
    CRM
    Telephony
    Creative
    Catalog
    Contracts
    Billing
    Campaign
    Management
    Identity & Access
    Optimization
    Identity & Access
    Lead
    Lead

    View Slide

  42. MarkeCng
    Sales
    Commissions
    Desks Optimization
    CRM
    Telephony
    Creative
    Catalog
    Contracts
    Billing
    Campaign
    Management
    Identity & Access
    Optimization
    Identity & Access
    Lead
    Lead

    View Slide

  43. MarkeCng
    Creative
    Catalog
    Campaign
    Management
    Optimization
    Lead
    Sales
    Commissions
    Optimization
    CRM Lead
    Desks
    Telephony
    Support
    Contracts
    Billing
    Identity & Access

    View Slide

  44. Bounded Contexts
    Decomposi/on #1
    Bounded Contexts
    Decomposi/on #2
    Bounded Contexts
    Decomposi/on #3

    View Slide

  45. Bounded Context
    Consistency boundary of the language / model
    Define the biggest valid monoliths
    Required decomposition boundary

    View Slide

  46. Bounded Contexts == Microservices? No

    View Slide

  47. Campaign
    Management
    Campaign Placement
    Funnel
    Banner
    Landing Page
    Website
    Zone
    Asset
    Publisher
    Target Market
    Campaign
    Website
    Placement
    Funnel
    MarkeCng
    Creative
    Catalog
    Contracts
    Billing
    Campaign
    Management
    Identity & Access
    Optimization
    Bounded Contexts? No Subdomains? EnCCes?

    View Slide

  48. Campaign
    Management
    Campaign Placement
    Funnel
    Banner
    Landing Page
    Website
    Zone
    Asset
    Publisher
    Target Market
    Campaign
    Website
    Placement
    Funnel
    MarkeCng
    Creative
    Catalog
    Contracts
    Billing
    Campaign
    Management
    Identity & Access
    Optimization
    Bounded Contexts? No Subdomains? EnCCes?

    View Slide

  49. vladikk
    MICROSERVICES
    03

    View Slide

  50. Service
    “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

    View Slide

  51. “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

    View Slide

  52. Service Interface
    “Any mechanism for getting data in or out of the service”
    - Randy Shoup

    View Slide

  53. Service Interface
    Synchronous:
    • Request / Réponse
    • Bulk ETL

    View Slide

  54. Service Interface
    Asynchronous:
    • Producing events
    • Consuming events
    Synchronous:
    • Request / Réponse
    • Bulk ETL

    View Slide

  55. Service Interface
    “Any mechanism for getting data in or out of the service”
    - Randy Shoup

    View Slide

  56. Service Interface

    View Slide

  57. Services ➜ Microservice

    View Slide

  58. A microservice is a service with a micro interface

    View Slide

  59. A microservice is a service with a micro interface

    View Slide

  60. Microservice = Microinterface
    Reducing coupling between services
    Limits reasons for change
    Easier to understand
    Better fault isolation
    More autonomy between services

    View Slide

  61. Microservice & Databases
    Microservices should own its database
    No external access
    Access through Microservice’s API only
    Database = infinite interface!

    View Slide

  62. But!

    View Slide

  63. 1 Method = Perfect Microservice !!??

    View Slide

  64. View Slide

  65. View Slide

  66. View Slide

  67. View Slide

  68. View Slide

  69. View Slide

  70. STAFF
    ONLY
    STAFF
    ONLY

    View Slide

  71. 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.

    View Slide

  72. Monolith Microservices
    Cost
    of
    Change

    View Slide

  73. Monolith Microservices Distributed

    Monolith
    Cost
    of
    Change

    View Slide

  74. Big Ball Of Mud Bounded
    Contexts
    Microservices Distributed
    Big Ball Of Mud
    Avg.
    Service
    Size

    View Slide

  75. Campaign
    Management
    Campaign Placement
    Funnel
    Banner
    Landing Page
    Website
    Zone
    Asset
    Publisher
    Target Market
    Campaign
    Website
    Placement
    Funnel
    Subdomains? EnCCes?

    View Slide

  76. View Slide

  77. View Slide

  78. ”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, 1974

    View Slide

  79. ”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, 1974

    View Slide

  80. ”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, 1974

    View Slide

  81. 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-Lee
    Principles of design, 1998

    View Slide

  82. Services + Good Engineering = Microservices

    View Slide

  83. 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-Lee
    Principles of design, 1998

    View Slide

  84. 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 Liskov
    A design methodology for reliable soIware systems, 1972

    View Slide

  85. 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.

    View Slide

  86. 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?

    View Slide

  87. vladikk
    DESIGN
    04
    HEURISTICS

    View Slide

  88. HeurisCc #1: Decompose to Bounded Contexts
    Do not implement conflicting models in the same service. 

    Always decompose to Bounded Contexts.

    View Slide

  89. HeurisCc #2: Don’t
    ”First Law of Distributed Object Design: 

    “Don’t distribute your objects”
    MarCn Fowler

    View Slide

  90. HeurisCc #2: Don’t
    Benefits
    Addi/onal

    Complexity

    View Slide

  91. Monolith:
    System design that undermines delivery of
    functional or non-functional requirements

    View Slide

  92. HeurisCc #2: Don’t
    Benefits
    Addi/onal

    Complexity

    View Slide

  93. HeurisCc #2: Don’t
    Benefits Addi/onal
    Complexity

    View Slide

  94. Core
    Supporting
    Generic

    View Slide

  95. Generic Subdomains
    No competitive advantage
    Everybody is implementing in the same way
    Complex business logic

    View Slide

  96. MarkeCng
    Sales
    Commissions
    Desks
    Optimization
    CRM
    Telephony
    Creative
    Catalog
    Contracts
    Billing
    Campaign
    Management
    Identity & Access
    Optimization
    Identity & Access
    Generic

    View Slide

  97. MarkeCng
    Sales
    Commissions
    Desks
    Optimization
    CRM
    Telephony
    Creative
    Catalog
    Contracts
    Billing
    Campaign
    Management
    Identity & Access
    Optimization Identity & Access
    Generic

    View Slide

  98. MarkeCng
    Sales
    Commissions
    Desks
    Optimization
    CRM
    Telephony
    Creative
    Catalog
    Contracts
    Billing
    Campaign
    Management
    Identity & Access
    Optimization Identity & Access
    Generic

    View Slide

  99. MarkeCng
    Sales
    Commissions
    Desks
    Optimization
    CRM
    Telephony
    Creative
    Catalog
    Contracts
    Billing
    Campaign
    Management
    Identity & Access
    Optimization
    Identity & Access
    Generic

    View Slide

  100. MarkeCng
    Sales
    Commissions
    Desks
    Optimization
    CRM
    Telephony
    Creative
    Catalog
    Contracts
    Billing
    Campaign
    Management
    Identity & Access
    Optimization
    Identity & Access
    Generic

    View Slide

  101. MarkeCng
    Sales
    Commissions
    Desks
    Optimization
    CRM
    Telephony
    Creative
    Catalog
    Contracts
    Billing
    Campaign
    Management
    Identity & Access
    Optimization
    Identity & Access
    Generic

    View Slide

  102. MarkeCng
    Sales
    Commissions
    Desks
    Optimization
    CRM
    Telephony
    Creative
    Catalog
    Contracts
    Billing
    Campaign
    Management
    Identity & Access
    Optimization
    Identity & Access
    Generic

    View Slide

  103. MarkeCng
    Sales
    Commissions
    Desks
    Optimization
    CRM
    Telephony
    Creative
    Catalog
    Contracts
    Billing
    Campaign
    Management
    Identity & Access
    Optimization
    Identity & Access
    Generic

    View Slide

  104. HeurisCc #3: Buy/Adopt Generic Subdomains
    Your
    System
    3rd party
    product

    View Slide

  105. HeurisCc #3: Buy/Adopt Generic Subdomains
    Your
    System
    3rd party
    product
    An/-Corrup/on Layer

    View Slide

  106. Core Subdomains
    Inventing something new
    Optimizing existing paractices
    Competitive advantage
    Complex business logic
    Change often

    View Slide

  107. MarkeCng
    Sales
    Commissions
    Desks
    Sales

    Optimization
    CRM
    Telephony
    Creative
    Catalog
    Contracts
    Billing
    Campaign
    Management
    Identity & Access
    Ad Optimization
    Identity & Access
    Generic Core

    View Slide

  108. MarkeCng
    Sales
    Commissions
    Desks
    Sales

    Optimization
    CRM
    Telephony
    Creative
    Catalog
    Contracts
    Billing
    Campaign
    Management
    Identity & Access
    Ad Optimization
    Identity & Access
    Generic Core

    View Slide

  109. MarkeCng
    Sales
    Commissions
    Desks
    Sales
    Optimization
    CRM
    Telephony
    Creative
    Catalog
    Contracts
    Billing
    Campaign
    Management
    Identity & Access
    Ad Optimization
    Identity & Access
    Generic Core

    View Slide

  110. MarkeCng
    Sales
    Commissions
    Desks
    Sales
    Optimization
    CRM
    Telephony
    Creative
    Catalog
    Contracts
    Billing
    Campaign
    Management
    Identity & Access
    Ad Optimization
    Identity & Access
    Generic Core

    View Slide

  111. MarkeCng
    Sales
    Commissions
    Desks
    Sales
    Optimization
    CRM
    Telephony
    Creative
    Catalog
    Contracts
    Billing
    Campaign
    Management
    Identity & Access
    Ad Optimization
    Identity & Access
    Generic Core

    View Slide

  112. MarkeCng
    Sales
    Commissions
    Desks
    Sales
    Optimization
    CRM
    Telephony
    Creative
    Catalog
    Contracts
    Billing
    Campaign
    Management
    Identity & Access
    Ad Optimization
    Identity & Access
    Generic Core

    View Slide

  113. Core Subdomains
    Inventing something new
    Optimizing existing paractices
    Competitive advantage
    Complex business logic
    Change often

    View Slide

  114. HeurisCc #4: Core Subdomains - Don’t Rush
    Adhere to subdomain’s boundaries.
    Decompose further only when you acquire
    domain knowledge.

    View Slide

  115. SupporCng Subdomains
    No competitive advantage
    Support the Core Subdomains
    Can’t be bought / adopted
    Simple business logic

    View Slide

  116. MarkeCng
    Sales
    Commissions
    Desks
    Sales
    Optimization
    CRM
    Telephony
    Creative
    Catalog
    Contracts
    Billing
    Campaign
    Management
    Identity & Access
    Ad Optimization
    Identity & Access
    Generic Core Supporting

    View Slide

  117. MarkeCng
    Sales
    Commissions
    Desks
    Sales
    Optimization
    CRM
    Telephony
    Creative
    Catalog
    Contracts
    Billing
    Campaign
    Management
    Identity & Access
    Ad Optimization
    Identity & Access
    Generic Core Supporting

    View Slide

  118. MarkeCng
    Sales
    Commissions
    Desks
    Sales
    Optimization
    CRM
    Telephony
    Creative
    Catalog
    Contracts
    Billing
    Campaign
    Management
    Identity & Access
    Ad Optimization
    Identity & Access
    Generic Core Supporting

    View Slide

  119. MarkeCng
    Sales
    Commissions
    Desks
    Sales
    Optimization
    CRM
    Telephony
    Creative
    Catalog
    Contracts
    Billing
    Campaign
    Management
    Identity & Access
    Ad Optimization
    Identity & Access
    Generic Core Supporting

    View Slide

  120. MarkeCng
    Sales
    Commissions
    Desks
    Sales
    Optimization
    CRM
    Telephony
    Creative
    Catalog
    Contracts
    Billing
    Campaign
    Management
    Identity & Access
    Ad Optimization
    Identity & Access
    Generic Core Supporting

    View Slide

  121. MarkeCng
    Sales
    Commissions
    Desks
    Sales
    Optimization
    CRM
    Telephony
    Creative
    Catalog
    Contracts
    Billing
    Campaign
    Management
    Identity & Access
    Ad Optimization
    Identity & Access
    Generic Core Supporting

    View Slide

  122. SupporCng Subdomains
    No competitive advantage
    Support the Core Subdomains
    Can’t be bought / adopted
    Simple business logic

    View Slide

  123. HeurisCc #5: SupporCng Subdomains - Safe
    Safe to decompose beyond the subdomain’s
    boundaries.

    View Slide

  124. Core
    Supporting
    Generic

    View Slide

  125. HeurisCc #6: Evaluate Consistency Requirements
    Method A Method B

    View Slide

  126. HeurisCc #6: Evaluate Consistency Requirements
    Concurrency control? - Same service
    Method A Method B

    Service A

    View Slide

  127. HeurisCc #6: Evaluate Consistency Requirements
    Read last write? - Two services, synchronous communication

    Service A
    Method A

    Service B
    Method B
    Sync call

    View Slide

  128. HeurisCc #6: Evaluate Consistency Requirements
    Eventual consistency? - Two services, asynchronous communication

    Service A
    Method A

    Service B
    Method B
    Asynchronous
    Communication

    View Slide

  129. HeurisCc #6: Evaluate Consistency Requirements
    Concurrency control? - Same service
    Read last write? - Two services, sync communication
    Eventual consistency? - Two services, async communication

    View Slide


  130. Service A
    Method A

    Service B
    Method B
    Asynchronous
    Communication

    View Slide

  131. 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

    View Slide

  132. 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)
    }

    View Slide

  133. 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)
    }

    View Slide

  134. Service
    HeurisCc #7: Public / Private Events

    View Slide

  135. Service
    EmailChanged
    PhoneNumberChanged
    AddressChanged
    HeurisCc #7: Public / Private Events

    View Slide

  136. Service
    EmailChanged
    PhoneNumberChanged
    AddressChanged
    HeurisCc #7: Public / Private Events

    View Slide

  137. Service
    EmailChanged
    PhoneNumberChanged
    AddressChanged
    ContactDetailsChanged
    HeurisCc #7: Public / Private Events

    View Slide

  138. Service
    EmailChanged
    PhoneNumberChanged
    AddressChanged
    ContactDetailsChanged
    Private event types
    (Implementation details)
    } Public event type
    (Public interface)
    }
    HeurisCc #7: Public / Private Events

    View Slide

  139. HeurisCc #7: Public / Private Events
    Events?

    View Slide

  140. HeurisCc #7: Public / Private Events
    Events?
    Domain
    Events

    View Slide

  141. HeurisCc #7: Public / Private Events
    Events?
    Domain
    Events
    State Change

    Events

    View Slide

  142. HeurisCc #7: Public / Private Events
    Events?
    Domain
    Events
    State Change

    Events
    Private Public

    View Slide

  143. HeurisCc #8: Make Events Explicit
    Eliminate ambiguity

    View Slide

  144. HeurisCc #8: Make Events Explicit
    Service
    AgentAssignedToLead

    View Slide

  145. HeurisCc #8: Make Events Explicit
    Service
    AgentAssignedToLead
    AgentAssignedToLead
    AgentAssignedToLead

    View Slide

  146. HeurisCc #8: Make Events Explicit
    Service
    AgentAssignedToLead
    AgentUnassignedToLead
    AgentAssignedToLead

    View Slide

  147. HeurisCc #8: Make Events Explicit
    Service
    AgentAssignedToLead
    AgentUnassignedToLead
    AgentAssignedToLead

    View Slide

  148. HeurisCc #9: Evaluate Reasons for Change
    Service A Service B

    View Slide

  149. Same reasons for change?
    Same rate of change?
    Can be decoupled?
    Should be the same service?
    HeurisCc #9: Evaluate Reasons for Change

    View Slide

  150. View Slide

  151. HeurisCc #10: Evaluate Services’ “Doors”

    View Slide

  152. HeurisCc #10: Evaluate Services’ “Doors”
    STAFF
    ONLY
    STAFF
    ONLY

    View Slide

  153. HeurisCc #10: Evaluate Services’ “Doors”
    STAFF
    ONLY
    STAFF
    ONLY

    View Slide

  154. vladikk
    WRAP UP
    05

    View Slide

  155. 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

    View Slide

  156. 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

    View Slide

  157. 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”

    View Slide

  158. Big Ball Of Mud Bounded
    Contexts
    Microservices Distributed
    Big Ball Of Mud
    Avg.
    Service
    Size

    View Slide

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

    View Slide

  160. QUESTIONS?
    @vladikk vladikk.com

    View Slide

  161. THANK YOU!
    @vladikk vladikk.com

    View Slide