Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Neal Ford and Rebecca Parsons- Building Evolutionary Architectures (Evolution)

149 views

Published on

An evolutionary architecture supports incremental, guided change across multiple dimensions.

For many years, software architecture was described as the “parts that are hard to change later”. But then microservices showed that if architects build evolvability into the architecture, change becomes easier. This talk, based on our recent book, investigates the family of software architectures that support evolutionary change, along with how to build evolvable systems. Understanding how to evolve architecture requires understanding how architectural dimensions interact; we describe how to achieve appropriate coupling between components and services. Incremental change is critical for the mechanics of evolution; we cover how to build engineering and DevOps practices to support continuous change. Uncontrolled evolution leads to undesirable side effects; we cover how fitness functions build protective, testable scaffolding around critical parts to guide the architecture as it evolves.

The software development ecosystem exists in a state of dynamic equilibrium, where any new tool, framework, or technique leads to disruption and the establishment of a new equilibrium. Predictability is impossible when the foundation architects plan against changes constantly in unexpected ways. Instead, prefer evolvability over predictability. This talk illustrates how to achieve evolutionary architectures and how to retrofit existing systems to support better evolution.

Published in: Technology
  • Be the first to comment

Neal Ford and Rebecca Parsons- Building Evolutionary Architectures (Evolution)

  1. 1. REBECCA PARSONS Chief Technology Officer @rebeccaparsons #EvolutionTW #ThoughtWorks NEAL FORD Director & Software Architect @neal4d
  2. 2. bUiLdiNG eVoLuTiONaRy ARcHitECtuREsSUPPORT CONSTANT CHANGE @neal4d nealford.com @patkua@rebeccaparsons
  3. 3. accessibility reliability repeatability accountability extensibility reproducibility accuracy failure transparency resilience adaptability fault-tolerance responsiveness administrability fidelity reusability affordability flexibility robustness agility inspectability safety auditability installability scalability autonomy integrity seamlessness availability interchangeability self-sustainability compatibility interoperability serviceability composability learnability supportability configurability maintainability securability correctness manageability simplicity credibility mobility stability customizability modifiability standards compliance debugability modularity survivability degradability operability sustainability determinability orthogonality tailorability demonstrability portability testability dependability precision timeliness deployability predictability traceability discoverability process capabilities transparency distributability producibility ubiquity durability provability understandability effectiveness recoverability upgradability efficiency relevance usability https://en.wikipedia.org/wiki/List_of_system_quality_attributes ility
  4. 4. evolvab ility accessibility reliability repeatability accountability extensibility reproducibility accuracy failure transparency resilience adaptability fault-tolerance responsiveness administrability fidelity reusability affordability flexibility robustness agility inspectability safety auditability installability scalability autonomy integrity seamlessness availability interchangeability self-sustainability compatibility interoperability serviceability composability learnability supportability configurability maintainability securability correctness manageability simplicity credibility mobility stability customizability modifiability standards compliance debugability modularity survivability degradability operability sustainability determinability orthogonality tailorability demonstrability portability testability dependability precision timeliness deployability predictability traceability discoverability process capabilities transparency distributability producibility ubiquity durability provability understandability effectiveness recoverability upgradability efficiency relevance usability evolvability
  5. 5. cHAnGe
  6. 6. technology driven business driven
  7. 7. technology driven business driven
  8. 8. technology driven business driven
  9. 9. dYNaMic eqUiLiBRiuM
  10. 10. ¯ dYNaMic eqUiLiBRiuM
  11. 11. everything changes all the time!
  12. 12. How is long term planning possible when things constantly change in unEXpECtEd ways?
  13. 13. EA Spreadsheet Penultima⬆︎e ✔️ definition ! verification
  14. 14. Once I’ve built an architecture, how can I prevent it from gradually degrading over time?
  15. 15. governance
  16. 16. Evolutionary Architecture An evolutionary architecture supports guided, incremental change across multiple dimensions.
  17. 17. Evolutionary Architecture An evolutionary architecture supports guided, incremental change across multiple dimensions. guided
  18. 18. guided evolutionary computing fitness function: a particular type of objective function that is used to summarize…how close a given design solution is to achieving the set aims.
  19. 19. guided
  20. 20. guided evolutionary computing fitness function: a particular type of objective function that is used to summarize…how close a given design solution is to achieving the set aims.
  21. 21. guided architectural fitness function: An architectural fitness function provides an objective integrity assessment of some architectural characteristic(s).
  22. 22. EA Spreadsheet Penultima⬆︎e ✔️ definition ! verification✔️ verification
  23. 23. Evolutionary Architecture An evolutionary architecture supports guided, incremental change across multiple dimensions. incremental guided
  24. 24. incremental
  25. 25. Penultima⬆︎e
  26. 26. Penultima⬆︎e
  27. 27. Penultima⬆︎e
  28. 28. Penultima⬆︎e
  29. 29. Penultima⬆︎e
  30. 30. Evolutionary Architecture An evolutionary architecture supports guided, incremental change across multiple dimensions. multiple dimensions incremental
  31. 31. multiple dimensions
  32. 32. Evolutionary Architecture An evolutionary architecture supports guided, incremental change across multiple dimensions. multiple dimensions
  33. 33. Agenda Definition Guided Change via Fitness Functions Incremental Change Governance
  34. 34. Evolutionary Architecture An evolutionary architecture supports guided, incremental change across multiple dimensions. guided
  35. 35. guided architectural fitness function: An architectural fitness function provides an objective integrity assessment of some architectural characteristic(s).
  36. 36. Fitness Functions
  37. 37. Fitness Function atomic holistic triggered continuous
  38. 38. Fitness Function atomic holistic triggered continuous
  39. 39. Cyclic Dependency Function clarkware.com/software/JDepend.html application
  40. 40. Coupling Fitness Function application
  41. 41. Consumer Driven Contracts martinfowler.com/articles/consumerDrivenContracts.html
  42. 42. Fitness Function atomic holistic triggered continuous
  43. 43. Fitness Function atomic holistic triggered continuous
  44. 44. Fitness Function atomic holistic triggered continuous
  45. 45. holistic triggered Holistic fitness functions must run in a specific (shared) context.
  46. 46. Fitness Function atomic holistic triggered continuous
  47. 47. Fitness Function atomic holistic triggered continuous
  48. 48. Fitness Function atomic holistic triggered continuous
  49. 49. atomic continuous monitoring logging
  50. 50. Synthetic Transactions Use synthetic transactions to test production systems.
  51. 51. Correlation IDs ID: 123 ID: 123 ID: 123 Use correlation IDs to track down nasty bugs
  52. 52. Fitness Function atomic holistic triggered continuous
  53. 53. Fitness Function atomic holistic triggered continuous
  54. 54. Fitness Function atomic holistictriggered continuous
  55. 55. Fitness Function atomic holistictriggered continuous
  56. 56. Fitness Function atomic holistic triggered continuous
  57. 57. Fitness Function Fit
  58. 58. System-wide Fitness Function
  59. 59. Agenda Definition Guided Change via Fitness Functions Incremental Change Governance
  60. 60. incremental
  61. 61. Deployment Pipelines
  62. 62. Deployment Pipeline
  63. 63. Deployment Pipeline + Fitness Functions
  64. 64. Agenda Definition Guided Change via Fitness Functions Incremental Change Governance
  65. 65. Implementing Fitness Functions Protecting architectural characteristics Automating governance
  66. 66. maintainable?
  67. 67. Testable tecture characteristics are evaluable
  68. 68. https://blog.jdriven.com/2017/10/implementing-architectural-fitness-functions-using-gradle-junit-code-assert/
  69. 69. ArchUnit https://www.archunit.org/
  70. 70. ArchUnit https://www.archunit.org/ coding rules
  71. 71. ArchUnit https://www.archunit.org/ interface rules
  72. 72. ArchUnit https://www.archunit.org/ layer dependency
  73. 73. ArchUnit https://www.archunit.org/ governance
  74. 74. Deployment Pipeline Penultima⬆︎e
  75. 75. Putting evolutionary architecture into Practice
  76. 76. Mechanics 1. Identify dimensions affect by evolution
  77. 77. 1. Identify dimensions affect by evolution
  78. 78. Mechanics 1. Identify dimensions affect by evolution 2. Define Fitness Function(s) for Each Dimension
  79. 79. 2. Define Fitness Function(s) for Each Dimension
  80. 80. Mechanics 1. Identify dimensions affect by evolution 2. Define Fitness Function(s) for Each Dimension 3. Use Deployment Pipelines to Automate Fitness Functions
  81. 81. 3. Use Deployment Pipelines to Automate Fitness Functio
  82. 82. Mechanics 1. Identify dimensions affect by evolution 2. Define Fitness Function(s) for Each Dimension 3. Use Deployment Pipelines to Automate Fitness Functions
  83. 83. Mechanics 1. Identify dimensions affect by evolution 2. Define Fitness Function(s) for Each Dimension 3. Use Deployment Pipelines to Automate Fitness Functions
  84. 84. Agenda Definition Guided Change via Fitness Functions Incremental Change Governance
  85. 85. Move Fast & Fix Thing s
  86. 86. https://github.com/github/scientist
  87. 87. ▫ It decides whether or not to run the try block, ▫ Randomizes the order in which use and try blocks are run, ▫ Measures the durations of all behaviors, ▫ Compares the result of try to the result of use, ▫ Swallows (but records) any exceptions raised in the try block ▫ Publishes all this information.
  88. 88. 4 days 24 hours/ no mismatches or slow cases > 10,000,000 comparisons > 10,000,000 comparisons
  89. 89. Evolutionary Architecture An evolutionary architecture supports guided, incremental change across multiple dimensions.
  90. 90. Building Evolutionary Architectures For more information: http://evolutionaryarchitecture.com

×