Successfully reported this slideshow.

Building Evolutionary Architectures (W-Jax Munich Nov 2019) Nov 2019 Keynote

0

Share

Loading in …3
×
1 of 82
1 of 82

Building Evolutionary Architectures (W-Jax Munich Nov 2019) Nov 2019 Keynote

0

Share

Download to read offline

In our industry, one of the only guarantees is change. Many of today’s tools, technologies, and business models will soon cease to exist, only to be replaced by newer ones. Architects face the challenge of planning for today’s systems knowing that the problems of tomorrow will be completely different from the problems of today. Evolutionary architecture is an architectural approach that prioritises change as a first principle but balances this need with delivering value early.

In our industry, one of the only guarantees is change. Many of today’s tools, technologies, and business models will soon cease to exist, only to be replaced by newer ones. Architects face the challenge of planning for today’s systems knowing that the problems of tomorrow will be completely different from the problems of today. Evolutionary architecture is an architectural approach that prioritises change as a first principle but balances this need with delivering value early.

More Related Content

Related Books

Free with a 14 day trial from Scribd

See all

Related Audiobooks

Free with a 14 day trial from Scribd

See all

Building Evolutionary Architectures (W-Jax Munich Nov 2019) Nov 2019 Keynote

  1. 1. Nov 19 Building Evolutionary Architectures @patkua
  2. 2. 2 The first bank you’ll love @patkua
  3. 3. Banking, this beautiful @patkua
  4. 4. #leader #coach #architect #developer #life-long-learner #author #cto We’re hiring in Berlin, Barcelona, Vienna & NYC! https://n26.com/jobs/ Chief Scientist @ N26 @patkua
  5. 5. thekua.io/evolarch thekua.io/twtl thekua.io/retrobook Chief Scientist, former CTO @patkua
  6. 6. Course: Tech Lead Skills for Developers http://thekua.io/tech-lead-course @patkua
  7. 7. Level Up A curated newsletter for leaders in tech http://levelup.thekua.com @patkua
  8. 8. EVOLUTION @patkua
  9. 9. … is inevitable NGECHA @patkua
  10. 10. Technical Domain NGECHA @patkua
  11. 11. Technical Programming languages Libraries Frameworks Tools Operating environments Technical constraints @patkua
  12. 12. Domain NGECHA Technical @patkua
  13. 13. Domain Revenue models Base technology adoption Competitors Customer needs Markets Products @patkua
  14. 14. … is inevitable NGECHA @patkua
  15. 15. … is inevitable then If NGECHA @patkua
  16. 16. WHAT IF… we architected a system for change? @patkua
  17. 17. DEFINITION@patkua
  18. 18. DEFINITION An evolutionary architecture supports incremental, guided change as a first principle along multiple dimensionsmultiple dimensions incremental guided @patkua
  19. 19. GENERATIONS incremental Architectures are evolved through releases @patkua
  20. 20. GENERATIONS incremental releases representI @patkua
  21. 21. GENERATIONS 6 months 3 months 1 month daily? @patkua
  22. 22. GENERATIONS @patkua
  23. 23. GENERATIONS Time taken to get a simple change into production repeatably reliably = CYCLE TIME @patkua
  24. 24. GENERATIONS = CYCLE TIME @patkua
  25. 25. Continuous Integration Automate everything Keep everything in source control “Done” means released (into production) Shared release responsibility Improve continuously GENERATIONS = CYCLE TIME @patkua
  26. 26. Architect Develop Release BUILDING ARCHITECTURE @patkua
  27. 27. ARCHITECTUREWHAT IS ? @patkua
  28. 28. “Software architecture is the decisions which are both important and hard to change.” - Martin Fowler Source: https://www.youtube.com/watch?v=DngAZyWMGR0 ARCHITECTUREWHAT IS ? @patkua
  29. 29. “…architecture is about understanding what you need to build, creating a vision for building it and making the appropriate design decisions” - Simon Brown Source: Architecture for Software Developers ARCHITECTUREWHAT IS ? @patkua
  30. 30. “Architecture is the decisions that you wish you could get right early in a project” - Ralph Johnson Source: Who needs an Architect? (Fowler 2003) ARCHITECTUREWHAT IS ? @patkua
  31. 31. Architect Develop Release How hard is that? Easy stuff here Make important decisions here @patkua
  32. 32. Architect Develop Release How hard is that? Easy stuff here Make important decisions here What appears important here may not be important We learn a lot more about the problem space and false assumptions Much harder than we thought! @patkua
  33. 33. Architect Develop Release @patkua
  34. 34. Architect Develop Release Reflect @patkua
  35. 35. Architect Develop Release Reflect Cycle time = constraint @patkua
  36. 36. DEFINITION An evolutionary architecture supports incremental, guided change as a first principle along multiple dimensionsmultiple dimensions incremental guided @patkua
  37. 37. FITNESS FUNCTIONS guided Evolutionary architectures withare @patkua
  38. 38. FITNESS FUNCTIONS “An objective function that measures how close a given solution fits to a particular goal” @patkua
  39. 39. IMPORTANT UNIMPORTANT NFRs CFRs Quality Attributes Low response time Large # of users Strong audit trail Availability Heavy legal compliance Internationalisation & Localisation Monitoring Mobile responsive FITNESS FUNCTIONS @patkua
  40. 40. IMPORTANT UNIMPORTANT Low response time Large # of users Strong audit trail Availability Heavy legal compliance Internationalisation & Localisation Monitoring Mobile responsive FITNESS FUNCTIONS NFRs CFRs Quality Attributes @patkua
  41. 41. Metrics, Tests and Process “An objective function that measures how close a given solution fits to a particular goal” FITNESS FUNCTIONS NFRs CFRs Quality Attributes @patkua
  42. 42. Metrics, Tests and Process atomic FITNESS FUNCTIONS continuous @patkua
  43. 43. /** * Ensure codebase does not contain cyclic dependencies */ public void testAllPackages() { Collection packages = jDepend.analyze(); assertFalse(“Cycles exist”, jDepend.containsCycles(); } Source: https://github.com/clarkware/jdepend FITNESS FUNCTIONS atomic @patkua
  44. 44. public void testAllPackages() throws Exception { JDepend jDepend = buildNewJDepend(); DependencyConstraint constraint = new DependencyConstraint(); JavaPackage web = constraint.addPackage(“com.thekua.web”); JavaPackage util = constraint.addPackage(“com.thekua.util”); JavaPackage repository = constraint.addPackage(“com.thekua.dao”); web.dependsOn(util); repository.dependsOn(util); web.dependsOn(repository); jDepend.analyze(); assertTrue(“Dependency mismatch”, jDepend.dependencyMatch(constraint)); } Source: https://github.com/clarkware/jdepend FITNESS FUNCTIONS atomic @patkua
  45. 45. FITNESS FUNCTIONS atomic continuous @patkua
  46. 46. FITNESS FUNCTIONS continuous @patkua
  47. 47. & CD “If it hurts, do it more often” - Continuous Delivery Metrics, Tests and Process FITNESS FUNCTIONS @patkua
  48. 48. DEFINITION An evolutionary architecture supports incremental, guided change as a first principle along multiple dimensionsmultiple dimensions incremental guided @patkua
  49. 49. DIMENSIONS OF CHANGE @patkua
  50. 50. Library, Tool, Framework, Platform TECHNICAL CHANGES Configure RemoveUpgradeIntroduce @patkua
  51. 51. DOMAIN CHANGES Business flow Features Conditions Interface changes New applications New domain New interfaces @patkua
  52. 52. ARCHITECTURAL APPROACHES @patkua
  53. 53. BIG BALL OF MUD LAYERED ARCHITECTURE MICRO KERNEL MICROSERVICES @patkua
  54. 54. classes coupling connections BIG BALL OF MUD @patkua
  55. 55. LAYERED ARCHITECTURES @patkua
  56. 56. PRESENTATION BUSINESS PERSISTENCE DATABASE SERVICE COMPONENT COMPONENT COMPONENT COMPONENT COMPONENT COMPONENT COMPONENT COMPONENT COMPONENT COMPONENT COMPONENT COMPONENT LAYERED ARCHITECTURES @patkua
  57. 57. PRESENTATION BUSINESS PERSISTENCE DATABASE SERVICE COMPONENT COMPONENT COMPONENT COMPONENT COMPONENT COMPONENT COMPONENT COMPONENT COMPONENT COMPONENT COMPONENT COMPONENT request LAYERED ARCHITECTURES @patkua
  58. 58. MICROKERNEL @patkua
  59. 59. PLUGIN PLUGIN PLUGIN PLUGIN PLUGIN PLUGIN CORE SYSTEM MICROKERNEL @patkua
  60. 60. API CUSTOMER MODULE MODULE MODULE USER/ROLE MODULE MODULE MODULE ACCOUNT MODULE MODULE MODULE PRODUCT MODULE MODULE MODULE INVENTORY MODULE MODULE MODULE FULFILLMENT MODULE MODULE MODULE CLIENT REQUESTS CLIENT REQUESTS CLIENT REQUESTS MICROSERVICES @patkua
  61. 61. DEFINITION An evolutionary architecture supports incremental, guided change as a first principle along multiple dimensionsmultiple dimensions incremental guided @patkua
  62. 62. 3 SPECIFIC PRACTICES @patkua
  63. 63. Conway’s Law: Org Design-Architecture @patkua
  64. 64. User Interface Server-side DBAs @patkua
  65. 65. Catalog Orders Shipping @patkua
  66. 66. Catalog Orders ShippingInverse Conway Manoeuvre @patkua
  67. 67. PRINCIPLE-DRIVEN over @patkua
  68. 68. LAST RESPONSIBLE MOMENT Internalcode @patkua
  69. 69. LAST RESPONSIBLE MOMENT Internalcode @patkua
  70. 70. LAST RESPONSIBLE MOMENT Internalcode ADAPTER @patkua
  71. 71. LAST RESPONSIBLE MOMENT Domain Adapters Ports and Adapters @patkua
  72. 72. Technical Domain Continuous Delivery Support fast feedback Appropriate coupling Ports and Adapters Automated fitness functions Matches business capabilities Products over projects Cross functional team Enables experimentation Decentralised governance @patkua
  73. 73. CHOOSING STYLES @patkua
  74. 74. Build Buy @patkua
  75. 75. Build Buy @patkua
  76. 76. Build Buyand/or Libraries Frameworks COTS or Software Products Custom code Functionality @patkua
  77. 77. Build Buyand/or Libraries Frameworks COTS or Software Products Custom code Functionality Ability to Change @patkua
  78. 78. Strategic Commodity Need for rapid change High Low Low HighValuegenerating Support Experimental @patkua
  79. 79. CONCLUSION @patkua
  80. 80. DEFINITION An evolutionary architecture supports incremental, guided change as a first principle along multiple dimensionsmultiple dimensions incremental guided @patkua@patkua
  81. 81. TO CONSIDER Architectural choices Decision making process + thinking Organisational and Cultural aspects @patkua
  82. 82. Questions? We’re hiring in Berlin, Barcelona, Vienna & NYC! https://n26.com/jobs/ @patkua DM or tweet me

×