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

Bounded Contexts for Team Organization

Bounded Contexts for Team Organization

Since Conway's Law was discovered in the sixties, we know that the organisation structure and the system design it produces are closely linked. Bounded Contexts can help us create better team autonomy, resulting in more effective software designs.

Let's explore how the coordination cost doesn't scale, introduce the concept of work bandwidth and how it informs the clustering, and contrast that to the traditional ideas of component team vs. feature teams.

Cyrille Martraire

February 05, 2020
Tweet

More Decks by Cyrille Martraire

Other Decks in Programming

Transcript

  1. discussing & agreeing on: goals solutions words & their meaning

    ways to collaborate better where to go out for lunch…
  2. @cyriux “There is a high cost associated with work that

    leaves your team” — James Lewis, Thoughtworks
  3. ok.

  4. @cyriux “There is a high cost associated with work that

    leaves your team” — James Lewis, Thoughtworks
  5. @cyriux e-commerce • SEO, Traffic Acquisition • Marketing & Targeting

    • PIM (Product Identification Management) • Catalogue • Categorization • Search • Recommendation • Pricing, Promotions • Basket • Discount, Loyalties • Shipping Cost Estimation • Payment • (Fraud Detection) • Order Management • Billing • Stock / Overbooking • Shipping • Return • CRM
  6. Mapping the Potential Bounded Contexts Sub-Domain A sub-sub domain A1

    sub-sub domain B1 sub-sub domain C1 Domain Sub-Domain B Sub-Domain C sub-sub domain A2 sub-sub domain C2 Customers Experience X1 Customers Experience X2 Customers Experience X3 Generic enabler Audience Experiences Business (Sub)- Domains Domain- agnostic Enablers Collaborators Experience X4 Very specific Generic Specific audience Domain- Specific Domain- Agnostic Volatile Stable
  7. Mapping the Potential Bounded Contexts Sub-Domain A sub-sub domain A1

    sub-sub domain B1 sub-sub domain C1 Domain Sub-Domain B Sub-Domain C sub-sub domain A2 sub-sub domain C2 Customers Experience X1 Customers Experience X2 Customers Experience X3 Generic enabler Audience Experiences Business (Sub)- Domains Domain- agnostic Enablers Collaborators Experience X4 Very specific Generic Specific audience Domain- Specific Domain- Agnostic Volatile Stable by audience
  8. Mapping the Potential Bounded Contexts Sub-Domain A sub-sub domain A1

    sub-sub domain B1 sub-sub domain C1 Domain Sub-Domain B Sub-Domain C sub-sub domain A2 sub-sub domain C2 Customers Experience X1 Customers Experience X2 Customers Experience X3 Generic enabler Audience Experiences Business (Sub)- Domains Domain- agnostic Enablers Collaborators Experience X4 Very specific Generic Specific audience Domain- Specific Domain- Agnostic Volatile Stable by sub-domains
  9. Mapping the Potential Bounded Contexts Sub-Domain A sub-sub domain A1

    sub-sub domain B1 sub-sub domain C1 Domain Sub-Domain B Sub-Domain C sub-sub domain A2 sub-sub domain C2 Customers Experience X1 Customers Experience X2 Customers Experience X3 Generic enabler Audience Experiences Business (Sub)- Domains Domain- agnostic Enablers Collaborators Experience X4 Very specific Generic Specific audience Domain- Specific Domain- Agnostic Volatile Stable generic sub-domains
  10. Mapping the Potential Bounded Contexts Sub-Domain A sub-sub domain A1

    sub-sub domain B1 sub-sub domain C1 Domain Sub-Domain B Sub-Domain C sub-sub domain A2 sub-sub domain C2 Customers Experience X1 Customers Experience X2 Customers Experience X3 Generic enabler Audience Experiences Business (Sub)- Domains Domain- agnostic Enablers Collaborators Experience X4 Very specific Generic Specific audience Domain- Specific Domain- Agnostic Volatile Stable can delegate / SaaS / offshore
  11. Mapping the Potential Bounded Contexts Sub-Domain A sub-sub domain A1

    sub-sub domain B1 sub-sub domain C1 Domain Sub-Domain B Sub-Domain C sub-sub domain A2 sub-sub domain C2 Customers Experience X1 Customers Experience X2 Customers Experience X3 Generic enabler Audience Experiences Business (Sub)- Domains Domain- agnostic Enablers Collaborators Experience X4 Very specific Generic Specific audience Domain- Specific Domain- Agnostic Volatile Stable you never quite achieve that perfection
  12. Mapping the Target Architecture Sub-Domain A sub-sub domain A1 sub-sub

    domain B1 sub-sub domain C1 Domain Sub-Domain B Sub-Domain C sub-sub domain A2 sub-sub domain C2 Customers Experience X1 Customers Experience X2 Customers Experience X3 Generic enabler Audience Experiences Business (Sub)- Domains Domain- agnostic Enablers Collaborators Experience X4 Very specific Generic Specific audience Domain- Specific Domain- Agnostic Volatile Stable SpringBoot Postgres / Elastic Search RabbitMQ Microservice
  13. Mapping the Target Architecture Sub-Domain A sub-sub domain A1 sub-sub

    domain B1 sub-sub domain C1 Domain Sub-Domain B Sub-Domain C sub-sub domain A2 sub-sub domain C2 Customers Experience X1 Customers Experience X2 Customers Experience X3 Generic enabler Audience Experiences Business (Sub)- Domains Domain- agnostic Enablers Collaborators Experience X4 Very specific Generic Specific audience Domain- Specific Domain- Agnostic Volatile Stable Modular Monolith
  14. Mapping the Potential Bounded Contexts Sub-Domain A sub-sub domain A1

    sub-sub domain B1 sub-sub domain C1 Domain Sub-Domain B Sub-Domain C sub-sub domain A2 sub-sub domain C2 Customers Experience X1 Customers Experience X2 Customers Experience X3 Generic enabler Audience Experiences Business (Sub)- Domains Domain- agnostic Enablers Collaborators Experience X4 Very specific Generic Specific audience Domain- Specific Domain- Agnostic Volatile Stable legacy components not aligned (at all)
  15. Mapping the Potential Bounded Contexts Sub-Domain A sub-sub domain A1

    sub-sub domain B1 sub-sub domain C1 Domain Sub-Domain B Sub-Domain C sub-sub domain A2 sub-sub domain C2 Customers Experience X1 Customers Experience X2 Customers Experience X3 Generic enabler Audience Experiences Business (Sub)- Domains Domain- agnostic Enablers Collaborators Experience X4 Very specific Generic Specific audience Domain- Specific Domain- Agnostic Volatile Stable you never quite achieve that perfection c’est la vie!
  16. @cyriux Component Component Component Feature Feature Feature Component teams X

    X X Cross-Component coordination to deliver a feature :(
  17. @cyriux Component Component Component Feature Feature Feature Feature team X

    X X System owners to protect integrity of components :(
  18. Any organization that designs a system (…) will inevitably produce

    a design whose structure is a copy of the organization's communication structure ~ Mel Conway
  19. Smarter Components Boundaries Sub-Domain A sub-sub domain A1 sub-sub domain

    B1 sub-sub domain C1 Domain Sub-Domain B Sub-Domain C sub-sub domain A2 sub-sub domain C2 Customers Experience X2 Customers Experience X3 Generic enabler Audience Experiences Business (Sub)- Domains Domain- agnostic Enablers Collaborators Experience X4
  20. @cyriux Component Component Component Feature Feature Feature you will still

    have some cross-component/team coordination X X X X
  21. @cyriux • Depend on a third-party contract • Tunnelling a

    payload
 Generic (e.g. key-value) • Expose your published language other can call • Micro-frontends • GraphQL