$30 off During Our Annual Pro Sale. View Details »

Towards Autonomous Aligned Teams with Domain-Driven Design @ progressive delivery conf 2021

Towards Autonomous Aligned Teams with Domain-Driven Design @ progressive delivery conf 2021

The companies I consult with are going through an agile DevOps transformation. Typically they focus on transitioning people into teams towards DevOps working, getting groups with max eight people into a team, and being able to work almost autonomously. This transformation almost always poses questions like; How do we divide the current software into the teams, which teams take ownership of what part of the current system, how do we functionally align the teams to the business strategy, and who goes in what team? We call this socio-technical architecture.

To deal with those questions companies request my help to design (micro)services using a Domain-Driven Design approach because it makes it easier to divide the software between teams. I believe enterprises who are going to or doing an Agile DevOps transformation need at least a Domain-Driven Design approach to create autonomous teams that are aligned with the business architecture. Aligning autonomous teams to the business strategy creates a set of unique challenges. In this war story talk, I will share my experience with moving towards autonomous aligned DevOps teams with a Domain-Driven Design approach.

Kenny Baas-Schwegler

March 19, 2021
Tweet

More Decks by Kenny Baas-Schwegler

Other Decks in Technology

Transcript

  1. @kenny_baas
    Towards Autonomous Aligned Teams
    with Domain-Driven Design
    Kenny Baas-Schwegler

    View Slide

  2. Photo by NASA on Unsplash
    @kenny_baas

    View Slide

  3. 3
    “If the architecture of the system
    and the architecture of the organization are at odds,
    the architecture of the organization wins”
    —Ruth Malan
    @kenny_baas

    View Slide

  4. 4
    @kenny_baas

    View Slide

  5. 5
    @kenny_baas

    View Slide

  6. 6
    Any organization that designs a system
    (defined more broadly here than just information systems)
    will inevitably produce a design whose structure
    is a copy of the organization's communication structure.
    — Mel Conway
    @kenny_baas

    View Slide

  7. 7
    @kenny_baas

    View Slide

  8. Label 1
    Website
    Label 2
    Website
    API
    GATEWAY
    Label 3
    Website
    Business 3
    Business 2
    Business 1 CRM
    Datawarehouse
    Data API
    @kenny_baas

    View Slide

  9. View Slide

  10. 10
    @kenny_baas

    View Slide

  11. [In our study at Thoughtworks we found] work
    takes an order of magnitude longer when it
    leaves a team.
    — James Lewis (@boicy)
    Credit: Nick tune
    @kenny_baas

    View Slide

  12. “A loosely coupled software architecture
    and org structure to match” is a key
    predictor of:
    1. Continuous Delivery Performance
    2. Ability to scale org and increase
    performance linearly
    @kenny_baas

    View Slide

  13. 13
    @kenny_baas
    Order Payment Packaging

    View Slide

  14. 14
    @kenny_baas
    https://www.martinfowler.com/articles/microservices.html

    View Slide

  15. 15
    the key to incremental architecture is to build on
    a framework that can accommodate change...
    that framework is the domain....
    By designing and modeling the domain, you can
    more easily handle changes to the domain
    — Allen Holub (@allenholub)
    @kenny_baas

    View Slide

  16. @kenny_baas

    View Slide

  17. 17
    To communicate effectively, the code must be based on the
    same language used to write the requirements
    - the same language that the developers speak
    with each other and with domain experts
    - Eric Evans
    @kenny_baas

    View Slide

  18. 18
    @kenny_baas https://www.thoughtco.com/ambiguity-language-1692388

    View Slide

  19. We all know or should know that language is fluid, liquid, subject to the
    whims of the people. Language evolves, as it should. Because language
    changes to accommodate new users, the older users resist and complain.
    http://tednellen.blogspot.com/2013/04/language-is-fluid.html
    @kenny_baas

    View Slide

  20. @kenny_baas
    Instead of one canonical language,
    create multiple bounded languages

    View Slide

  21. 21
    It is not the domain experts knowledge
    that goes to production, it is the
    assumption of the developers
    that goes to production
    - Alberto Brandolini
    @kenny_baas

    View Slide

  22. 22
    Business
    Architects
    Developers
    @kenny_baas

    View Slide

  23. @kenny_baas

    View Slide

  24. @kenny_baas

    View Slide

  25. 25
    @kenny_baas

    View Slide

  26. A straight line between 2 points
    corresponds to a compass direction in
    reality..
    @kenny_baas

    View Slide

  27. A straight line between 2 points corresponds to
    a compass direction in reality..
    • Except for points located in Greenland
    • Except for points located in Africa
    @kenny_baas

    View Slide

  28. 28
    A model is a simplified representation of a thing
    or phenomenon that intentionally emphasizes
    certain aspects while ignoring others.
    Abstraction with a specific use in mind.
    @kenny_baas
    — Rebecca Wirfs-Brock

    View Slide

  29. 29
    Business
    Architects
    Developers
    @kenny_baas @joaoasrosa

    View Slide

  30. @kenny_baas
    Stop communicating business change
    in system boundaries
    (unit of deployment like in microservices, monolith)
    Start communicating business change in
    contextual boundaries that form the bounded context
    (purpose, need, responsibility)

    View Slide

  31. 31
    @kenny_baas

    View Slide

  32. 32
    @kenny_baas

    View Slide

  33. 33
    @kenny_baas

    View Slide

  34. @kenny_baas

    View Slide

  35. @kenny_baas @joaoasrosa

    View Slide

  36. 36
    @kenny_baas
    https://www.eventstorming.com/

    View Slide

  37. 37
    @kenny_baas
    https://www.eventstorming.com/

    View Slide

  38. 38
    @kenny_baas
    Mortgage
    request
    received
    Mortgage
    application
    passed
    Tender
    signed
    Declaration
    rejected

    View Slide

  39. @kenny_baas

    View Slide

  40. 40
    @kenny_baas

    View Slide

  41. 41
    @kenny_baas
    https://www.eventstorming.com/

    View Slide

  42. 42
    @kenny_baas
    https://www.eventstorming.com/

    View Slide

  43. 43
    @kenny_baas

    View Slide

  44. 44
    @kenny_baas
    https://www.martinfowler.com/articles/microservices.html

    View Slide

  45. 45
    @kenny_baas

    View Slide

  46. @kenny_baas
    Domain-Driven Design enables teams to have agency
    Agency leads to observability
    a necessity for doing progressive delivery

    View Slide

  47. @kenny_baas
    #CatTax
    @kenny_baas
    Baasie.com
    xebia.com/blog/author/kbaas/
    https://speakerdeck.com/baasie
    @kenny_baas
    Agile Alliance report:
    https://www.agilealliance.org/resources/experience-reports/towards-auton
    omous-aligned-teams-with-domain-driven-design/
    https://virtualddd.com/

    View Slide

  48. @kenny_baas
    Domain-Driven Design (DDD) Foundation
    https://xebia.com/academy/en/training/domain-driven-design-ddd-foundation
    Strategic Domain-Driven Design (DDD):
    Design Loosely Coupled Architecture
    https://xebia.com/academy/en/training/strategic-domain-driven-design-ddd
    Professional Agile Architecture:
    Visual and Collaborative Modelling
    https://xebia.com/academy/en/training/professional-agile-architecture
    15% off training:
    kenny15

    View Slide