Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Domain-Driven Design: Hidden Lessons From the Big Blue Book

926 vues

Publié le

There are some hidden insights that a lot of us skipped over when we read the DDD book. 3 of these insights will fundamentally change how you approach building software systems.

Publié dans : Technologie

Domain-Driven Design: Hidden Lessons From the Big Blue Book

  1. 1. DOMAIN-DRIVEN DESIGN HIDDEN LESSONS FROM THE BIG BLUE BOOK Nick Tune - @ntcoding
  2. 2. ntcoding
  3. 3. ntcoding
  4. 4. ntcoding
  5. 5. ntcoding
  6. 6. ntcoding ~10 years later
  7. 7. ntcoding
  8. 8. ntcoding How can the DDD book be more relevant now than when it was published 15 years ago?
  9. 9. #1 KEY TECHNOLOGY TRENDS
  10. 10. ntcoding Serverless and cloud free-up developers to focus on higher-level activities.
  11. 11. ntcoding TOP SOURCES OF PRODUCT IDEAS DIRECT CUSTOMER FEEDBACK 58% TEAM BRAINSTORMING 57% COMPETITOR PRODUCTS 22% SALES TEAM 16% Source: Alpha UX Product Management Insights 2018
  12. 12. ntcoding CONTINUOUS DISCOVERY & DELIVERY Discovery Track Delivery TrackCross-functional Product Team
  13. 13. ntcoding HIGHLY RECOMMENDED READING
  14. 14. ntcoding Systems are growing more fragmented and disparate: Microservices, IoT, etc…
  15. 15. ntcoding 30 BILLION ‘THINGS’ BY 2020 0 20 40 60 80 2015 2018 2020 2025 Source: Statista Connecteddevices(billions)
  16. 16. ntcoding There are hidden insights in the DDD book that teach us how to thrive in these conditions.
  17. 17. #2 EXPLORATION
  18. 18. ntcoding SUSTAINABLE EVOLUTION Build systems that can continuously be evolved to deliver what the market wants… at a competitive pace.
  19. 19. “ ntcoding Our codebase is so rotten we can’t compete - we’re killing the product (even though we have a substantially bigger engineering workforce) — A True Enterprise Love Story
  20. 20. ntcoding HOW TO CREATE EVOLVABLE SYSTEMS • SOLID? • High-quality, high-coverage test suite? • Modular code?
  21. 21. ntcoding HOW TO CREATE EVOLVABLE SYSTEMS • SOLID? • High-quality, high-coverage test suite? • Modular code? Not Enough
  22. 22. ntcoding To minimise accidental complexity & create evolvable systems, we need to uncover essential domain complexity.
  23. 23. “ ntcoding initial models usually are naive and superficial, based on shallow knowledge. — Eric Evans (@ericevans0)
  24. 24. “ ntcoding The refactorings that have the greatest impact on the viability of the system are those motivated by new insights into the domain — Eric Evans (@ericevans0)
  25. 25. ntcoding Many developers skip the discovery element of DDD because there are no simple domain discovery recipes.
  26. 26. ntcoding He tried UML with domain experts!
  27. 27. ntcoding
  28. 28. ntcoding Alberto Brandolini — THE SAVIOUR OF DDD
  29. 29. EVENT STORMING
  30. 30. ntcoding MODEL DOMAIN AS TIMELINE CFP Opened Talk proposal submitted CFP Closed Talk Accepted
  31. 31. ntcoding ADD COMMANDS, USERS, POLICIES Submit Proposal Talk proposal submitted Proposal Limit Policy Talk Proposal Rejected Speaker
  32. 32. ntcoding EXTERNAL SYSTEMS, MONEY, UX Ticket sold Event booking service Tickets downloaded 💲 Speaker dropped out 😭
  33. 33. ntcoding After 10 years of DDD, Brandolini hit gold and made collaborative domain modelling accessible to all of us. No more excuses.
  34. 34. ntcoding Event Storming gives us the power to eliminate huge swathes of complexity and build evolvable systems.
  35. 35. ntcoding PERSONAL ES TRIUMPHS • Uniting my teams and ‘the business’ • Modelling entire domains • Engaging many domain experts for hours • Properly understanding domains like I never have before
  36. 36. ntcoding HIDDEN LESSONS • Domain discovery is fundamental to DDD? • Discovery enables us to build evolvable software systems? • We should all be doing event storming?
  37. 37. ntcoding HIDDEN LESSONS • Domain discovery is fundamental to DDD? • Discovery enables us to build evolvable software systems? • We should all be doing event storming?Not Hidden Lessons
  38. 38. “ ntcoding model-based communication is not limited to diagrams in UML. To make most effective use of a model, it needs to pervade every medium of communication — Eric Evans (@ericevans0)
  39. 39. ntcoding HIDDEN LESSON We all need to be passionate about discovery and finding better domain discovery techniques.
  40. 40. “ ntcoding EventStorming is my pizza. Add your own topping. — Alberto Brandolini (@ziobrando)
  41. 41. ntcoding leanpub.com/introducing_eventstorming eventstorming.com github.com/mariuszgil/awesome-eventstorming
  42. 42. ntcoding DOMAINSTORYTELLING.ORG
  43. 43. #3 DESIGN
  44. 44. ntcoding Shiny New Promos Legacy Promos ANTI-CORRUPTION LAYER A C L
  45. 45. ntcoding Shiny New Promos Legacy Promos ANTI-CORRUPTION LAYER A C L
  46. 46. ntcoding
  47. 47. ntcoding Not time for an ACL
  48. 48. ntcoding Sometimes it’s better to clean up the mess rather than throwing another layer of junk on top of it.
  49. 49. ntcoding Shiny Legacy LEGACY LASAGNE A C L Legacy A C L Legacy A C L
  50. 50. ntcoding LAVA LAYER ANTI-PATTERN http://mikehadlow.blogspot.co.uk/2014/12/the-lava-layer-anti-pattern.html
  51. 51. ntcoding How do expert software designers make good decisions and not become attached to certain principles?
  52. 52. “ ntcoding Effective domain modelers take a torrent of information searching for the simple view that makes sense of the mass. Many models are tried and rejected or transformed. — Eric Evans (@ericevans0)
  53. 53. ntcoding HIDDEN LESSON Expert software designers cultivate a toolbox of design heuristics. There is never a heuristic that is always correct.
  54. 54. “ ntcoding Look for heuristics that challenge your assumption or disprove your theory… that’s when you learn something — Mathias Verraes (@mathiasverraes)
  55. 55. ntcoding HEURISTICS FROM THE BOOK • Use language to identify boundaries • Look for same thing with different names (duplicate concepts) • Look for different things hidden under the same name (false cognates) • Make the implicit explicit (find missing concepts)
  56. 56. ntcoding MORE HEURISTICS • Money heuristic (isolate high ROI) • Marry-me heuristic (if two modules know a lot about each others internals they should get married) • T-1000 heuristic (find distributed cohesion) • Erlang heuristic (isolate from failure)
  57. 57. ntcoding GAME OF THRONES HEURISTIC
  58. 58. ntcoding HEURISTICS MASTERS Rebecca Wirfs-Brock (@rebeccawb) Cultivating Your Design Heuristics - https://www.youtube.com/watch?v=fWCt5KWfTuo Mathias Verraes (@mathiasverraes) Design Heuristics - https://bit.ly/2kpqMmh
  59. 59. “ ntcoding I’m not a genius consultant…. I just have better heuristics — Mathias Verraes (@mathiasverraes)
  60. 60. #4 ORGANISATION
  61. 61. ntcoding Sooooo many meeeetings!
  62. 62. ntcoding “ Generally speaking, there is a correspondence of one team per BOUNDED CONTEXT… [BCs] must guide design decisions to reduce the interdependence of parts… — Eric Evans (@ericevans0)
  63. 63. ntcoding “ 
 …these two groups had different models, but they did not realize it — Eric Evans (@ericevans0)
  64. 64. ntcoding MULTIPLE HIDDEN CONTEXTS PRODUCT
  65. 65. ntcoding MULTIPLE HIDDEN CONTEXTS PRODUCT Not bounded contexts
  66. 66. ntcoding MULTIPLE BOUNDED CONTEXTS PRODUCT PRODUCT PRODUCT
  67. 67. ntcoding How dare you question my beautiful data model!
  68. 68. ntcoding
  69. 69. ntcoding HIDDEN LESSONS Bounded contexts decouple PARTS. Parts are code and teams. Bounded contexts are about enabling team autonomy.
  70. 70. ntcoding “ teams have to make decisions about where to define BOUNDED CONTEXTS and what sort of relationships to have between them. Teams have to make these decisions — Eric Evans (@ericevans0)
  71. 71. ntcoding “ This definition has to be reconciled with the team organization. — Eric Evans (@ericevans0)
  72. 72. ntcoding “ the problem starts in the way teams are organized and the way people interact.
 — Eric Evans (@ericevans0)
  73. 73. ntcoding “ And the emergence of different models can be a result of team organization and development process. — Eric Evans (@ericevans0)
  74. 74. ntcoding HIDDEN LESSONS Software architecture is really sociotechnical architecture. We can’t ignore teams when shaping the software.
  75. 75. ntcoding HOW TO FIND BOUNDARIES 1.EventStorm 2.Context map 3.Apply design heuristics 4.Try lots of models 5.Repeat regularly
  76. 76. ntcoding Nick! What have you done! Credit: jaxenter.de
  77. 77. #5 THE HIDDEN SECRETS
  78. 78. ntcoding CONTINUOUS DISCOVERY & DELIVERY EventStorming brings development teams closer to the business, enabling teams to use customer insights to contribute to the product roadmap.
  79. 79. ntcoding DESIGNING COMPLEX SYSTEMS Cultivating a toolbox of design heuristics equips you to manage complexity in unique, changing and novel environments.
  80. 80. ntcoding EVOLVING SYSTEMS Aligning teams and software systems for high autonomy and motivation is fundamental to sustainably evolving systems.
  81. 81. ntcoding Developers of the future will be product-focused sociotechnical thinkers… What will you be?
  82. 82. ntcoding SPEAK TO YOU SOON? ntcoding.co.uk/workshops ntcoding.co.uk/blog ntcoding.co.uk/speaking @ntcoding /in/ntcoding

×