A review of “Building Evolutionary Architectures” by Neal Ford, Rebecca Parsons and Patrick Kua. One section per chapter: the problem it solves, the key ideas, and a diagram.

Evolutionary Architecture: designing systems ready for constant, unpredictable change

Each chapter below carries two visuals: a diagram of the idea, and the original slide from the source deck (the deck is in Russian).

Core thesis: three pillars

An evolutionary architecture supports guided incremental change across multiple dimensions. The operative word is guided: the system does not drift, it changes under the control of automated checks.

The three pillars overlap, and they only work together:

PillarWhat it gives you
Incremental changeiterative build and deployment
Fitness functionsprotection of architectural characteristics
Appropriate couplingarchitectural quanta and boundaries
Incrementalchangeiterative buildand deployFitnessfunctionsprotect architecturalcharacteristicsAppropriate couplingarchitectural quantaand boundaries

Three pillars of evolutionary architecture

Chapter 1. Guarding against decay through multiple dimensions

The problem. Traditional long-term planning does not work. Systems decay (bit rot) because the ecosystem around them keeps shifting: frameworks, business requirements, scale.

Key ideas:

  • evolvability is the new primary architectural characteristic;
  • it is a meta-characteristic: a shell that protects every other property of the system;
  • architecture must treat time as a first-class element.
Evolvability (fitness functions)time →AuditabilityPerformanceSecurityRequirementsDataLegalityScalability

Multidimensional architecture: dimensions travelling through time inside evolvability

Chapter 2. Fitness functions as an immune system

The problem. How do you objectively measure and protect critical characteristics — speed, security, resilience — when hundreds of developers change the code every day?

Key ideas:

  • an objective assessment of system integrity; the term comes from evolutionary computing;
  • categorised along two axes: atomic vs holistic, triggered vs continuous;
  • identify the metric for every -ility up front, not after the fact.
SystemwideFitnessFunctionProcess metricsUnit testsMonitoringContract testsIntegrationtests

Systemwide fitness function assembled from tests, monitoring and process metrics

Chapter 3. Engineering incremental change

The problem. Large changes are expensive and carry fatal risk. The result is a business that fears deployment, and release paralysis.

Key ideas:

  1. Small increments shrink the blast radius of a mistake.
  2. Hypothesis-driven development.
  3. Full automation of the routine through Continuous Delivery.
CommitBuild✓gateIntegration✓gateDeploy✕gateProductionfaulty build stops hereevery stage transition is guarded by a fitness function gate

Deployment pipeline with fitness function gates between stages

Chapter 4. Anatomy of the architectural quantum

The problem. Accidental coupling — a change in one place breaks the whole system through hidden dependencies.

Key ideas:

  • an architectural quantum is the smallest independently deployable unit with high functional cohesion inside;
  • a quantum always includes its database: transactional boundaries are the strongest form of coupling.

If the database is shared, it is no longer a quantum.

Architectural quantumCode(module)ExternallibraryDatabase(data)transactional boundary = strongest couplingShared database → no longer a quantum

Anatomy of the architectural quantum

Chapter 4. Diagnostic matrix of styles

The problem. Picking the wrong architectural template — one that resists change and does not match the pace of the business (Big Ball of Mud, for example).

Key idea. Different styles carry a different built-in quantum size. The smaller the quantum, the faster and cheaper the change — but the higher the cost of running the infrastructure.

CharacteristicMonolithSOAMicroservicesServerless
Quantum sizeLargeMediumSmallMicro
Coupling levelHighHighLowLow
Incremental changeHardHardEasyEasy
Fitness functionsHardMediumEasyEasy

Diagnostic matrix of architectural styles

Chapter 5. Evolving data on a live system

The problem. The illusion that “database schemas live forever”. The database becomes a bottleneck and a point of rigid integration that blocks refactoring of the code.

Key ideas:

  • data must evolve in lockstep with code;
  • abandon Shared Database Integration;
  • use the Expand/Contract pattern to migrate without downtime.
1Expandadd the new shape2Triggerstwo-way sync3Migratemove readers/writers4Contractdrop the old shape

Expand/Contract migration pattern in four steps

Chapter 6. The mechanics of building evolution

The problem. There is no clear, repeatable algorithm for designing a new system or refactoring a huge legacy codebase.

Key ideas:

  • a strict three-step algorithm turns evolutionary architecture from an abstraction into a practice: identify the dimensions → define the fitness functions → automate them in the pipeline;
  • isolating the old code is critical to the survival of the new — an anticorruption layer sits between legacy and the new services.
Legacy systemAnticorruption layerNew microservices

Three-step algorithm and the anticorruption layer between legacy and new services

Chapter 6. Guiding principles and routing

The problem. Making “irreversible” architectural decisions that turn into technical debt and block further development.

Key ideas:

  • make decisions reversible;
  • evolvability > predictability;
  • build sacrificial architectures you will not regret throwing away.
User trafficProxy /Discovery80% trafficV1current service20% trafficV2sacrificial service

Dynamic routing: 80% of traffic to V1, 20% to the sacrificial V2

Chapter 7. Threat board: antipatterns and traps

The problem. Hidden systemic dysfunctions kill flexibility at the root, even when the team sits on modern frameworks.

Key idea. Recognise and destroy toxic patterns before they take root in the engineering culture.

AntipatternWhat it is
Vendor Kingtotal dependency on a proprietary vendor. Fix: introduce an abstraction layer
Leaky Abstractionsinfrastructure implementation details seep into business logic
Resume-Driven Developmenthype technology adopted for the architect’s CV, needlessly complicating the quantum

Threat board: Vendor King, Leaky Abstractions, Resume-Driven Development

Chapter 8. The Inverse Conway Maneuver

The problem. Coordination hell. The company structure conflicts with the target architecture, so every release needs sign-off across departments.

Key ideas:

  • Conway’s Law: architecture inevitably mirrors the communication structure of the organisation;
  • Inverse Conway Maneuver: shape the teams exactly the way you want the target architecture to look.
SilosUI teamBackend teamDBA teamCross-functionalProduct AUIBackendDBAProduct BUIBackendDBAProduct CUIBackendDBA

Silo versus cross-functional team structure

Chapter 8. The economics of evolution: talking to the business

The problem. How do you justify to management — to the CFO — the money spent on engineering practices, refactoring and fitness functions?

Key ideas:

  • a radical reduction in release risk;
  • dramatically faster time-to-market;
  • an unblocked culture of experimentation (kaizen).
# of quantacost / benefitcost / quantumbenefitSweet spotoptimal investment

Sweet spot between cost per quantum and benefit

Migration strategies: where to start

The problem. Analysis paralysis when facing a huge, historically tangled legacy monolith.

Key idea. Choosing the right starting point is critical: it must either cut risk quickly or demonstrate maximum value to the business.

StrategyWhat it is
Low-Hanging Fruitquick wins: easy to extract, low value
Highest-Valuemaximum business benefit: harder, but proves ROI
Infrastructure-firstautomate the pipelines before anything else
Testing-firstcover the legacy with fitness functions before refactoring

Migration strategy selection matrix

Final synthesis

The problem. Letting go of the “we will build this once, and build it to last” mindset.

Key idea. Evolutionary architecture is not a destination — it is a built-in survival mechanism. Three loops are braided into one: teams (Conway’s Law), architecture (fitness functions and quanta), pipelines (incremental change).

TeamsConway's LawArchitecturefitness functions & quantaPipelinesincremental change

Final synthesis: teams, architecture and pipelines in one loop

Stop building to last. Start building for change.