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.

Building Evolutionary Architectures (CTO Roundtable @ N26 - June 2018)

654 vues

Publié le

Slides from the meetup hosted at N26, where I explored some of the ideas from our book, Building Evolutionary Architectures.

Publié dans : Logiciels
  • Soyez le premier à commenter

Building Evolutionary Architectures (CTO Roundtable @ N26 - June 2018)

  1. 1. @patkua 
 CTO Roundtable - June 2018 Building Evolutionary Architectures
  2. 2. SPAIN 3% ⬒ Full European banking license ⬒ First fully mobile bank account ⬒ One-touch access to all financial products Digital Solution to Banking
  3. 3. 64% 12% GERMANY ITALY FRANCE 3% SPAIN 3% AUSTRIA 9% 1M+ users in
 17 countries
  4. 4. I am building the technology group behind the modern bank designed for the digital age. We are looking for people to join us on that journey: https://n26.com/jobs/ (Berlin) #leader #coach #architect #developer #life-long-learner #speaker #author CTO of N26
  5. 5. CTO of N26 thekua.io/evolarch thekua.io/twtl thekua.io/retrobook
  6. 6. EVOLUTION
  7. 7. … is inevitable NGECHA
  8. 8. Technical Domain NGECHA
  9. 9. Technical Programming languages Libraries Frameworks Tools Operating environments Technical constraints
  10. 10. Technical Domain NGECHA
  11. 11. Domain Revenue models Base technology adoption Competitors Customer needs Markets Products
  12. 12. … is inevitable NGECHA
  13. 13. … is inevitable NGECHA then If
  14. 14. WHAT IF… we architected a system for change?
  15. 15. DEFINITION
  16. 16. DEFINITION An evolutionary architecture supports incremental, guided change as a first principle along multiple dimensionsmultiple dimensions incremental guided
  17. 17. GENERATIONS incremental Architectures are evolved through releases
  18. 18. GENERATIONS incremental releases representI
  19. 19. GENERATIONS 6 months 3 months 1 month daily?
  20. 20. GENERATIONS
  21. 21. GENERATIONS Time taken to get a simple change into production repeatably reliably = CYCLE TIME
  22. 22. GENERATIONS = CYCLE TIME
  23. 23. GENERATIONS = CYCLE TIME Continuous Integration Automate everything Keep everything in source control “Done” means released (into production) Shared release responsibility Improve continuously
  24. 24. Architect Develop Release BUILDING ARCHITECTURE
  25. 25. ARCHITECTUREWHAT IS ?
  26. 26. WHAT IS ARCHITECTURE? “Software architecture is the decisions which are both important and hard to change.” - Martin Fowler Source: https://www.youtube.com/watch?v=DngAZyWMGR0
  27. 27. WHAT IS ARCHITECTURE? “…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
  28. 28. WHAT IS ARCHITECTURE? “Architecture is the decisions
 that you wish you could get right early in a project” - Ralph Johnson Source: Who needs an Architect? (Fowler 2003)
  29. 29. Architect Develop Release How hard is that? Easy stuff here Make important decisions here
  30. 30. 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!
  31. 31. Architect Develop Release
  32. 32. Architect Develop Release Reflect
  33. 33. Architect Develop Release Reflect Cycle time = constraint
  34. 34. DEFINITION An evolutionary architecture supports incremental, guided change as a first principle along multiple dimensionsmultiple dimensions incremental guided
  35. 35. FITNESS FUNCTIONS guided Evolutionary architectures withare
  36. 36. FITNESS FUNCTIONS “An objective function that measures how close a given solution fits to a particular goal”
  37. 37. 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
  38. 38. 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
  39. 39. FITNESS FUNCTIONS Metrics, Tests and Process “An objective function that measures how close a given solution fits to a particular goal”
  40. 40. FITNESS FUNCTIONS Metrics, Tests and Process atomic continuousholistic
  41. 41. atomic FITNESS FUNCTIONS /** * 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
  42. 42. FITNESS FUNCTIONS 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/jdependatomic
  43. 43. FITNESS FUNCTIONS atomic continuousholistic
  44. 44. FITNESS FUNCTIONS Performance was particularly critical Build a CD pipeline of performance tests Sanity performance test Memory soak test Detected unusual behaviour in a test run Found that disk controller had been misconfigured holistic
  45. 45. FITNESS FUNCTIONS atomic continuousholistic
  46. 46. FITNESS FUNCTIONS continuous
  47. 47. FITNESS FUNCTIONS & CD “If it hurts, do it more often” - Continuous Delivery Metrics, Tests and Process
  48. 48. FITNESS FUNCTIONS & CD “If it hurts, do it more often” - Continuous Delivery Metrics, Tests and Process There are known knowns There are known unknowns - Donald Rumsfeld BUT There are also unknown unknowns
  49. 49. In house data centres Cloud computing Serverless computing ???
  50. 50. DEFINITION An evolutionary architecture supports incremental, guided change as a first principle along multiple dimensionsmultiple dimensions incremental guided
  51. 51. DIMENSIONS OF CHANGE
  52. 52. TECHNICAL CHANGES Library, Tool, Framework, Platform Introduce Upgrade Replace RemoveConfigure
  53. 53. DOMAIN CHANGES Business flow Features Conditions Interface changes New applications New domain New interfaces
  54. 54. ARCHITECTURAL APPROACHES
  55. 55. BIG BALL OF MUD LAYERED ARCHITECTURE MICRO KERNEL MICROSERVICES
  56. 56. classes coupling connections BIG BALL OF MUD
  57. 57. !57 PRESENTATION BUSINESS PERSISTENCE DATABASE SERVICE COMPONENT COMPONENT COMPONENT COMPONENT COMPONENT COMPONENT COMPONENT COMPONENT COMPONENT COMPONENT COMPONENT COMPONENT LAYERED ARCHITECTURES
  58. 58. !58 PRESENTATION BUSINESS PERSISTENCE DATABASE SERVICE COMPONENT COMPONENT COMPONENT COMPONENT COMPONENT COMPONENT COMPONENT COMPONENT COMPONENT COMPONENT COMPONENT COMPONENT request LAYERED ARCHITECTURES
  59. 59. LAYERED ARCHITECTURES
  60. 60. PLUGIN PLUGIN PLUGIN PLUGIN PLUGIN PLUGIN CORE SYSTEM MICROKERNEL
  61. 61. MICROKERNEL
  62. 62. 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
  63. 63. DEFINITION An evolutionary architecture supports incremental, guided change as a first principle along multiple dimensionsmultiple dimensions incremental guided
  64. 64. PRACTICES
  65. 65. Conway’s Law: Org Design-Architecture
  66. 66. User Interface Server-side DBAs
  67. 67. Catalog Orders Shipping
  68. 68. Catalog Orders ShippingInverse Conway Manoeuvre
  69. 69. PRINCIPLE-DRIVEN over
  70. 70. PRODUCTS over PROJECTS Projects: Products: ‘s “You build it, you run it”
  71. 71. LAST RESPONSIBLE MOMENT Internalcode
  72. 72. LAST RESPONSIBLE MOMENT Internalcode
  73. 73. LAST RESPONSIBLE MOMENT Internalcode ADAPTER
  74. 74. LAST RESPONSIBLE MOMENT Domain Adapters Ports and Adapters
  75. 75. SENSE AND PROBE over
  76. 76. BUT Not an excuse to abstract all the things
  77. 77. !77 Think like a town planner If a lot about architecture is about making decisions, help people make better decisions. Avoid making the decisions for them.
  78. 78. ARCHITECTURAL BRIEFINGS Design decision Tool Implementation …
  79. 79. ARCHITECTURAL BRIEFINGS Design decision Tool Implementation …?? ??
  80. 80. ARCHITECTURAL BRIEFINGS Design decision Tool Implementation
  81. 81. ARCHITECTURAL BRIEFINGS Design decision Tool Implementation …
  82. 82. ARCHITECTURAL BRIEFINGS
  83. 83. ARCHITECTURAL BRIEFINGS
  84. 84. ARCHITECTURAL BRIEFINGS
  85. 85. ARCHITECTURAL BRIEFINGS
  86. 86. ARCHITECTURAL BRIEFINGS Everyone becomes
 an architect
  87. 87. 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
  88. 88. ANTI-PATTERNS
  89. 89. ANTI-PATTERN The last 10% trap
  90. 90. ANTI-PATTERN Coding via Configuration
  91. 91. ANTI-PATTERN Product Customisation
  92. 92. ANTI-PATTERN Exuberant Coupling
  93. 93. CHOOSING STYLES
  94. 94. Build Buy
  95. 95. Build Buy
  96. 96. Build Buyand/or Libraries Frameworks COTS or Software Products Custom code Functionality
  97. 97. Build Buyand/or Libraries Frameworks COTS or Software Products Custom code Functionality Ability to Change
  98. 98. 98 Strategic Commodity Need for rapid change High Low Low HighValuegenerating Support Experimental
  99. 99. CONCLUSION
  100. 100. DEFINITION An evolutionary architecture supports incremental, guided change as a first principle along multiple dimensionsmultiple dimensions incremental guided
  101. 101. TO CONSIDER Architectural choices Decision making process + thinking Organisational and Cultural aspects
  102. 102. @patkua Patrick Kua, CTO of @n26 Thank you Psst. We’re hiring in Berlin https://n26.com/jobs

×