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

Microservices, Bounded Contexts, and Everything in Between

Microservices, Bounded Contexts, and Everything in Between

DDD eXchange 2018

Vladik Khononov

April 26, 2018
Tweet

More Decks by Vladik Khononov

Other Decks in Technology

Transcript

  1. Microservices
    Bounded Contexts
    And Everything in Between

    View full-size slide

  2. @vladikk
    vladikk.com

    View full-size 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 full-size slide

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

    View full-size slide

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

    View full-size slide

  6. ”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 full-size slide

  7. Decomposition Strategies
    Bounded Contexts, Business Domains, 

    Business En66es
    Design Heuristics
    Microservices
    Wrap-up
    Example Business Domain 1
    2
    3
    4
    5

    View full-size slide

  8. Your Product Marketing

    Strategy
    Creatives Campaigns Sales

    Agents
    Optimization
    Profits

    View full-size slide

  9. Decomposi9on Strategies
    Bounded Contexts
    Subdomains
    Business Entities and Processes

    View full-size slide

  10. Bounded Contexts

    View full-size slide

  11. Domain Expert
    Software Developer

    View full-size slide

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

    View full-size slide

  13. Campaigns Sales

    Agents
    Your Product Marketing

    Strategy
    Creatives
    Optimization
    Profits

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  17. Marke9ng
    Service
    Sales
    Service
    Decomposi9on Strategy #1: Bounded Contexts

    View full-size slide

  18. Marke9ng
    Sales
    Commissions
    Desks
    Sales

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

    View full-size slide

  19. Business Domain: Customer Acquisi6on
    Bounded Context: Marke6ng Bounded Context: Sales
    Subdomain: Crea6ve Catalog
    Subdomain: Campaigns Mngmt
    Subdomain: Ads Op6miza6on
    Subdomain: Contracts Mngmt
    Subdomain: CRM
    Subdomain: Sales Op6miza6on
    Subdomain: Commissions
    Subdomain: Desks Mngmt

    View full-size slide

  20. Decomposi9on Strategy #2: Subdomains
    Campaign
    Management
    Service
    Content
    Catalog
    Service
    Desks
    Management
    Service
    CRM
    Service
    Users
    Service
    Billing
    Service

    View full-size slide

  21. Business En99es and Processes

    View full-size slide

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

    View full-size slide

  23. Decomposi9on Strategy #3: En99es
    Website Asset Target Market
    Broker Distribu6on Customer

    View full-size slide

  24. Decomposi9on Strategies
    Bounded Contexts
    Subdomains
    Business Entities and Processes

    View full-size slide

  25. SHOW ME THE
    MICROSERVICES!

    View full-size slide

  26. Bounded Contexts == Microservices ?

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  34. Bounded Contexts == Microservices? No

    View full-size slide

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

    View full-size slide

  36. Microservices

    View full-size slide

  37. 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 full-size slide

  38. “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 full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  42. Service Interface

    View full-size slide

  43. Services ➜ Microservice

    View full-size slide

  44. A microservice is a service with a micro interface

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  47. 1 Method = Perfect Microservice !!??

    View full-size slide

  48. STAFF
    ONLY
    STAFF
    ONLY

    View full-size slide

  49. 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 full-size slide

  50. Monolith Microservices Distributed

    Monolith
    Cost
    of
    Change

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  53. ”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 full-size slide

  54. ”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 full-size slide

  55. 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 full-size slide

  56. Services + Good Engineering = Microservices

    View full-size slide

  57. 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 full-size slide

  58. 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 full-size slide

  59. 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 full-size slide

  60. 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 full-size slide

  61. Design Heuris9cs

    View full-size slide

  62. Heuris9c #1: Decompose to Bounded Contexts
    Do not implement conflicting models in the same
    service. Always decompose to Bounded Contexts.

    View full-size slide

  63. Heuris9c #2: Don’t
    ”First Law of Distributed Object Design: 

    “Don’t distribute your objects”
    Mar9n Fowler

    View full-size slide

  64. Heuris9c #2: Don’t
    Benefits
    Addi6onal

    Complexity

    View full-size slide

  65. Heuris9c #2: Don’t
    Benefits Addi6onal
    Complexity

    View full-size slide

  66. Core
    Supporting
    Generic

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  69. Heuris9c #3: Buy/Adopt Generic Subdomains
    Your
    System
    3rd party
    product

    View full-size slide

  70. Heuris9c #3: Buy/Adopt Generic Subdomains
    Your
    System
    3rd party
    product
    An6-Corrup6on Layer

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  77. Heuris9c #5: Suppor9ng Subdomains - Early
    Can be decomposed beyond the subdomain’s
    boundaries.

    View full-size slide

  78. Core
    Supporting
    Generic

    View full-size slide

  79. Heuris9c #6: Evaluate Consistency Requirements
    Method A Method B

    View full-size slide

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

    Service A

    View full-size slide

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

    Service A
    Method A

    Service B
    Method B
    Sync call

    View full-size slide

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

    Service A
    Method A

    Service B
    Method B
    Asynchronous
    Communication

    View full-size slide

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

    View full-size slide


  84. Service A
    Method A

    Service B
    Method B
    Asynchronous
    Communication

    View full-size slide

  85. Heuris9c #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 full-size slide

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

    View full-size slide

  87. Heuris9c #7: Public / Private Events
    Events?

    View full-size slide

  88. Heuris9c #7: Public / Private Events
    Events?
    Domain
    Events
    State Change

    Events

    View full-size slide

  89. Heuris9c #7: Public / Private Events
    Events?
    Domain
    Events
    State Change

    Events
    Private Public

    View full-size slide

  90. Heuris9c #8: Make Events Explicit
    Eliminate ambiguity

    View full-size slide

  91. Heuris9c #8: Make Events Explicit
    Service
    AgentAssignedToLead

    View full-size slide

  92. Heuris9c #8: Make Events Explicit
    Service
    AgentAssignedToLead
    AgentAssignedToLead
    AgentAssignedToLead

    View full-size slide

  93. Heuris9c #8: Make Events Explicit
    Service
    AgentAssignedToLead
    AgentUnassigned
    AgentAssignedToLead

    View full-size slide

  94. Heuris9c #9: Evaluate Reasons for Change
    Service A Service B

    View full-size slide

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

    View full-size slide

  96. Heuris9c #10: Evaluate Services’ “Doors”

    View full-size slide

  97. Heuris9c #10: Evaluate Services’ “Doors”
    STAFF
    ONLY
    STAFF
    ONLY

    View full-size slide

  98. 1. A service is a unit of func6onality exposed to the
    world through its public interface.
    2. A microservice is a service with micro interface
    3. The “micro-interface” is rela6ve to the use cases of
    the system that the service is a part of

    View full-size slide

  99. Heuris6c #1: Always decompose to Bounded Contexts
    Heuris6c #2: Don’t go further, unless you have to
    Heuris6c #3: Buy/adopt generic subdomains
    Heuris6c #4: Core Subdomains - don’t rush
    Heuris6c #5: Suppor6ng Subdomains can be
    decomposed early

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  102. 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. Implemen6ng Domain-Driven Design, Vaughn Vernon
    6. Enterprise Integra6on 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 Applica6on Architecture, Mar6n 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 full-size slide

  103. THANK YOU!
    @vladikk vladikk.com

    View full-size slide

  104. QUESTIONS?
    @vladikk vladikk.com

    View full-size slide

  105. THANK YOU!
    @vladikk vladikk.com

    View full-size slide