evolutionary architecture
play

EVOLUTIONARY ARCHITECTURE @patkua 1 Who is @thoughtworks Who is - PowerPoint PPT Presentation

EVOLUTIONARY ARCHITECTURE @patkua 1 Who is @thoughtworks Who is @patkua #architect #author #developer #facilitator #leader #lifelong-learner tiny.cc/twtl tiny.cc/retros #coach #speaker Evolutionary Architecture Neal Ford Rebecca


  1. EVOLUTIONARY ARCHITECTURE @patkua 1

  2. Who is @thoughtworks

  3. Who is @patkua #architect #author #developer #facilitator #leader #lifelong-learner tiny.cc/twtl tiny.cc/retros #coach #speaker

  4. Evolutionary Architecture Neal Ford Rebecca Parsons (Meme Wrangler) (ThoughtWorks CTO) Patrick Kua (Technical Principal) Photos by Martin Fowler: http://martinfowler.com/albums/ThoughtWorkers/

  5. Introductions If you haven’t done so, please introduce yourself the people around you - you will be working in pairs • Name • Role/Title • Company/Institution • Background

  6. STICKY-SESSION What is one thing you want to get out of this talk? COLLECT THESE ON FLIPCHARTS

  7. EVOLUTION

  8. CHA NGE … is inevitable

  9. CHA NGE Technical Domain

  10. Technical Programming languages Libraries Frameworks Tools Operating environments Technical constraints

  11. CHA NGE Technical Domain

  12. Domain Revenue models Base technology adoption Competitors Customer needs Markets Products

  13. CHA NGE … is inevitable

  14. CHA NGE If then … is inevitable

  15. ?

  16. CASE STUDY 18

  17. Customer case study

  18. Customer case study

  19. WHAT IF… We architected a system speci fi cally for change?

  20. DEFINITION Our current working version

  21. DEFINITION An evolutionary architecture supports continual and incremental change as a fi rst principle along multiple dimensions

  22. But our architecture already supports change!

  23. or does it?

  24. Example Architectural Patterns Big Ball of Mud Layered Architecture Microkernel Microservices

  25. How do each of these architectures support change (Technical + Domain) Big Ball of Mud Layered Architecture Microkernel Microservices

  26. Big ball of mud classes DIMENSIONS: 0 coupling connections

  27. Layered architecture PRESENTATION COMPONENT COMPONENT COMPONENT BUSINESS COMPONENT COMPONENT COMPONENT PERSISTENCE COMPONENT COMPONENT COMPONENT DATABASE DIMENSIONS: 1

  28. Layered architecture request PRESENTATION COMPONENT COMPONENT COMPONENT BUSINESS COMPONENT COMPONENT COMPONENT PERSISTENCE COMPONENT COMPONENT COMPONENT DATABASE DIMENSIONS: 1

  29. Layered architecture request PRESENTATION COMPONENT COMPONENT COMPONENT BUSINESS COMPONENT COMPONENT COMPONENT SERVICE COMPONENT COMPONENT COMPONENT PERSISTENCE COMPONENT COMPONENT COMPONENT DATABASE DIMENSIONS: 1

  30. Layered architecture MVC

  31. Microkernel PLUGIN PLUGIN CORE PLUGIN PLUGIN SYSTEM PLUGIN PLUGIN DIMENSIONS: 1

  32. Microkernel

  33. DOMAIN SHIFT 35

  34. Layered architecture PRESENTATION COMPONENT COMPONENT COMPONENT BUSINESS COMPONENT COMPONENT COMPONENT PERSISTENCE COMPONENT COMPONENT COMPONENT DATABASE DOMAIN DIMENSIONS: 0

  35. Microservices CLIENT REQUESTS CLIENT REQUESTS CLIENT REQUESTS API CUSTOMER USER/ROLE ACCOUNT PRODUCT INVENTORY FULFILLMENT MODULE MODULE MODULE MODULE MODULE MODULE MODULE MODULE MODULE MODULE MODULE MODULE MODULE MODULE MODULE MODULE MODULE MODULE DIMENSIONS: N

  36. DEFINITION An evolutionary architecture supports continual and incremental change as a fi rst principle along multiple dimensions

  37. PRINCIPLES

  38. Technical Domain Does not dictate schedule Matches business capabilities Supports fast feedback Enables experimentation Appropriate coupling Decentralised governance Iterative Fitness function

  39. Fitness function

  40. NFRs Fitness function CFRs Quality Attributes IMPORTANT UNIMPORTANT Strong audit trail Large # of users Low response time Heavy legal compliance Availability Mobile responsive Internationalisation & Localisation Monitoring

  41. NFRs Fitness function CFRs Quality Attributes IMPORTANT UNIMPORTANT Strong audit trail Large # of users Low response time Internationalisation & Localisation Availability Heavy legal compliance Mobile responsive Monitoring

  42. NFRs Fitness function CFRs Quality Attributes Metrics Tests

  43. NFRs Fitness function CFRs Quality Attributes Metrics Tests There are known knowns

  44. There are known knowns There are known unknowns But there are also unknown unknowns - Donald Rumsfeld

  45. Generations 6 months 3 months 1 month daily?

  46. Generations = Cycle time Time taken to get a single change into production repeatably reliably

  47. Generations = Cycle time

  48. Conway’s Law organisations which design systems ... are constrained to produce designs which are copies of the communication structures of these organisations - Melvin Conway, 1968 en.wikipedia.org/wiki/Conway%27s_law

  49. Conway’s Law Side Effect UI Specialists Middleware Specialists DBAs

  50. Monolith’s vs Microservices

  51. user interface server-side DBA

  52. Orders Shipping Catalog

  53. Inverse conway manoeuvre Orders Shipping Catalog

  54. Inverse conway manoeuvre …organised around business capabilities cross-functional teams… Because Conway’ s Law!

  55. DDD’s “bounded context” …physically realised

  56. Products, not projects projects: products: ‘s “You build it, you run it”

  57. Last responsible moment complexity time

  58. Last responsible moment

  59. Last responsible moment

  60. Last responsible moment Ports and Adapters Domain Adapters

  61. Last responsible moment

  62. Last responsible moment this is not an excuse to abstract all the things!

  63. Sense and probe over

  64. Last responsible moment Architectural Spikes

  65. Bring the pain forward

  66. Bring the pain forward deployment pipelines continuous integration database migrations/ refactoring automation

  67. Principle driven architecture over

  68. PUTTING IT INTO PRACTICE

  69. Architecture is abstract until operationalised view React React v0.14 v0.14 view view controller CustomerInfo CustomerInfo controller controller 4.3.1 4.3.1 model Customer Customer model model 1.3.5 1.3.5 ORM Hibernate Hibernate Hibernate 4.3.11 5.1.0 ORM ORM DB PostgreSQL 9.4 PostgreSQL 9.4 nealford.com/memeagora/2015/03/30/architecture_is_abstract_until_operationalized.html

  70. Evolving your architecture Architect Develop Release

  71. Evolving your architecture Architect Develop Release

  72. Evolving your architecture Architect Re fl ect Develop Release

  73. Evolving your architecture Architect Re fl ect Develop Release Cycle time = constraint

  74. ENABLING CHANGE Foster architectural thinking

  75. ENABLING CHANGE Foster architectural thinking with ARCHITECTURAL BRIEFINGS

  76. ARCHITECTURAL BRIEFINGS ARCHITECTURAL BRIEFINGS

  77. ARCHITECTURAL BRIEFINGS Design decision Tool … Implementation

  78. ARCHITECTURAL BRIEFINGS ? … ?

  79. ARCHITECTURAL BRIEFINGS …

  80. ARCHITECTURAL BRIEFINGS

  81. ARCHITECTURAL BRIEFINGS …

  82. ARCHITECTURAL BRIEFINGS

  83. ARCHITECTURAL BRIEFINGS

  84. ARCHITECTURAL BRIEFINGS

  85. ARCHITECTURAL BRIEFINGS

  86. ARCHITECTURAL BRIEFINGS Everyone becomes an Architect

  87. Think like a town planner

  88. Development practices that help Continuous Delivery Cross Functional Teams Early identi fi cation of fi tness functions Architectural brie fi ngs Spikes Review fi tness functions Tracer bullet deployments Feature Toggles Branch by abstraction

  89. CHOOSING STYLES

  90. Build Buy

  91. Build Buy

  92. Build Buy and/or

  93. Build Buy and/or Custom COTS or Libraries Frameworks code Software Products Functionality

  94. Build Buy and/or Functionality Custom COTS or Libraries Frameworks code Software Products Ability to change

  95. High Best fi t Experimental Strategic Value generating Commodity Support Low Low Need for rapid change High

  96. Things that prevent change Coupling Cohesion Slow feedback cycles

  97. Cohesion Functional Sequential Informational Procedural Temporal Logical Coincidental

  98. TRAPS

Recommend


More recommend