Evolutionary architecture: Agile meets software design

A presentation at WebExpo 2024 in May 2024 in Prague, Czechia by Robin Pokorny

Slide 1

Slide 1

Robin Pokorny Evolutionary architecture WEBEXPO PRAGUE Agile meets software design 2024-05-30

Slide 2

Slide 2

agile architecture (adjective) (noun) ‘responding to change over following a plan’ ‘stuff that’s hard to change’

Slide 3

Slide 3

Infrastructure Cloud services, tools, networking Architecture Intents, patterns, and boundaries Gregor Hohpe: enterpriseintegrationpatterns.com

Slide 4

Slide 4

Best architecture Got it right the first time Provides extensibility Used everywhere Docker Complexity Insufficient You can’t predict technological shifts I’ll-need-it-later accumulates There is no one universal architecture

Slide 5

Slide 5

Potom lituje, když už pozdě je bycha honiti. In the end, he feels really sorry but what’s done cannot be undone again. Potom běduje, když už se nedá čeho měniti. Then he starts lamenting when it’s much too late to change anything. ~ Kecal, dohazovač Prodaná nevěsta ~ Kecal, a marriage broker The Bartered Bride 1866-05-30

Slide 6

Slide 6

An evolutionary architecture supports guided, incremental change as a first principle across multiple dimensions

Slide 7

Slide 7

Fitness Function an objective function used to summarize how close a prospective design solution is to achieving the set aims

Slide 8

Slide 8

You might use some already! 1. test coverage above 80% 2. p99 response time is below 500 ms 3. below 1% of 500 responses in 5 min windows 4. bundle size is below 500 KiB 5. passes correlation IDs upstream 6. no SSPL tools or libraries A Fitness function is an objective function used to summarize how close a prospective design solution is to achieving the set aims

Slide 9

Slide 9

Perverse incentive (Cobra Effect)

Slide 10

Slide 10

4 m m m 40 0.4 mm

Slide 11

Slide 11

All models are wrong, some are useful George Box

Slide 12

Slide 12

Socio-technical Systems

Slide 13

Slide 13

Managing complexity (and chaos) in times of crisis A field guide for decision makers inspired by the Cynefin framework https://data.europa.eu/doi/10.2760/353

Slide 14

Slide 14

01 Guided Incremental Multiple dimensions 2017-0 9-18

Slide 15

Slide 15

Architecture Characteristics Worksheet performance adaptability The amount of time it takes for the system to process a business request The ease in which a system can adapt to changes in environment and functionality responsiveness concurrency The amount of time it takes to get a response to the user The ability of the system to process simultaneous requests, in most cases in the same order in which they were received; implied when scalability and elasticity are supported availability The amount of uptime of a system; usually measured in 9’s (e.g., 99.9%) fault tolerance When fatal errors occur, other parts of the system continue to function interoperability The ability of the system to interface and interact with other systems to complete a business request extensibility scalability The ease in which a system can be extended with additional features and functionality A function of system capacity and growth over time; as the number of users or requests increase in the system, responsiveness, performance, and error rates remain constant deployability elasticity The system is able to expend and respond quickly to unexpected or anticipated extreme loads (e.g., going from 20 to 250,000 users instantly) The amount of ceremony involved with releasing the software, the frequency in which releases occur, and the overall risk of deployment testability The ease of and completeness of testing data integrity abstraction The data across the system is correct and there is no data loss in the system The level at which parts of the system are isolated from other parts of the system (both internal and external system interactions) data consistency workflow The data across the system is in sync and consistent across databases and tables The ability of the system to manage complex workflows that require multiple parts (services) of the system to complete a business request Last updated March 2024 Created by Mark Richards, DeveloperToArchitect.com

Slide 16

Slide 16

Architecture Styles Worksheet System/Project: Architect/Team: Date: Selected Architecture(s): Created by Mark Richards, DeveloperToArchitect.com

Slide 17

Slide 17

Slide 18

Slide 18

02 Guided Incremental Multiple dimensions 2017-0 9-18

Slide 19

Slide 19

Image by Irma Harlann: https://neonrocket.medium.com/devops-is-a-culture-not-a-role-be1bed149b0

Slide 20

Slide 20

Reinforcement learning on Pokemon Red github.com/PWhiddy/PokemonRedExperiments

Slide 21

Slide 21

03 Guided Incremental Multiple dimensions 2017-0 9-18

Slide 22

Slide 22

Multiple dimensions Tech Data Security Ops languages frameworks libraries DB schemata optimization policies guidelines servers cloud resources

Slide 23

Slide 23

Fitness Function Cyclomatic Complexity Coupling and Cohesion Performance Limit the number of linearly independent paths Low dependencies between cohesive modules Response time, throughput, or memory usage against thresholds Chaos Monkey Directionality of imports Compliance Randomly terminate instances in production Ensures correct flow among modules, no oriented circles Adherence to legal and regulatory requirements

Slide 24

Slide 24

Slide 25

Slide 25

Slide 26

Slide 26

An evolutionary architecture supports guided, incremental change as a first principle across multiple dimensions

Slide 27

Slide 27

Move from solutions and implementations to outcomes Outcomes Fitness functions Define what characteristics are important for you Write a test to validate those outcomes Forget Use your brain power for something else

Slide 28

Slide 28

Outcomes Fitness functions robinpokorny.com me@robinpokorny.com @robinpokorny Illustrations are licensed from Freepik Forget

Slide 29

Slide 29

Slide 30

Slide 30

Fitness Functions monitors unit tests fitness functions … chaos engineering metrics Automating Architectural Governance by Neal Ford (@neal4d)