OUR THOUGHTSTechnology

An introduction to evolutionary architecture

Posted by Paul (PJ) Jacobs, Gareth Evans . Feb 10.25

With businesses having to adapt and respond to an ever-accelerating rate of change, the need to learn quickly and adjust is becoming a major source of differentiation and, in many contexts, a necessity.

To support the growing demand for business agility and the inevitability of change, software and the way it is managed has had to change and evolve too. There has been a strong shift from viewing software development as a project with a start and end to it being the evolution of a product.

More and more traditional software development functions such as analysis, development, testing and operations are being planned in small, less risky iterations with feedback loops being relied on to enable reality to guide direction and focus.

The concept of evolutionary architecture further enhances business agility by moving away from expensive upfront plans based on previous experience or assumptions about what might be required in the future.

With the right feedback in place, such as layered test automation, CI/CD, system observability and automated benchmarks and metrics, the opportunity exists to allow reality to guide small incremental changes to architecture by running small inexpensive experiments. Technologies like containerisation and cloud-native computing also make experimentation faster and far less expensive.

As the capability to evolve architecture in small, focused incremental steps grows, so does the ability of delivery teams to drive architectural evolution as they need it to deliver value to end users.

An evolving architecture has a type of ‘archaeology’, where evidence of previous technical practices and architecture are left behind as artefacts. Just as archaeologists study layers of history, teams can examine these architectural artefacts to understand how their systems have evolved and where they need to change to meet current and emerging objectives.

To support evolution and experimentation, architectures must be allowed to diverge. As an antidote to this ambiguity, there needs to be a strong sense of direction so everyone knows where they are currently taking their architecture and where they definitely don’t want to take it. There also must be a process to collectively adjust and refine this direction.

Evolutionary architecture can be applied to most systems. Modern technical practices promote clean code, simplicity, separation of concerns, encapsulation, layering and safety, which provide building blocks to support the evolution of architectural patterns in code.

Some more modern architectural styles, such as event-driven architecture and Data Mesh, are also more suited to supporting change from a human and technical perspective. For example, organising systems into bounded contexts makes it easier for the broader organisation to understand and support experimentation without affecting parts of the system outside that context.

Benefits of evolutionary architecture

Focus on customer and business value: By evolving architecture when it is required to deliver value to end users and empowering delivery teams to change what is slowing them down

Lean, just-in-time: By delaying architectural change until reality tells us it is needed

Minimise sunk costs: By favouring experimentation and evolution over upfront architectural design for what might happen

Better planning: By making architectural changes business as usual for software delivery teams and having those costs included in estimates for planned work

Reduced risk: By running small experiments, breaking architectural change into baby steps, delaying architectural work until it is needed, maximising buy-in from developers and reducing delivery team dependencies and possible bottlenecks

Technology staff retention: By maximising learning opportunities, increasing empowerment to make significant change and reducing dissatisfaction around centralised architectural decisions

Encourage creativity: By reducing the cost and risk of experimentation, increasing the speed and accuracy of feedback and accepting a level of inconsistency to allow for faster evolution and more creativity

Core principles of evolutionary architecture

Fitness functions

One of the key concepts in Building Evolutionary Architectures is the idea of fitness functions. Much like in evolutionary computation, architectural fitness functions specify what the target architecture should look like, helping guide evolution.

These functions help teams evaluate whether architectural changes are moving in the right direction. Some systems prioritise high uptime, while others focus on throughput or security. Having clear fitness functions provides guidance for decision-making and helps teams assess whether evolutionary changes are beneficial.

Ideally, fitness functions can be automatically monitored in build pipelines and should describe the intent of the ‘-ility’ it addresses in terms of an objective metric that is meaningful to product teams or stakeholders. Fitness functions should be aligned to the stage of the product lifecycle of the system, for example, a system early in development may prioritise frequent releases to improve feedback cycles, whereas a product at the end of the product lifecycle may prioritise stability and mean time to recover.

Monitoring critical qualities as fitness functions can help product teams avoid architectural drift and objectively measure and maintain technical debt based on the context of the system.

The last responsible moment

Traditional architecture often requires making major decisions early in the project lifecycle. Evolutionary architecture, however, embraces the principle of delaying decisions until the ‘last responsible moment’. This approach allows teams to gather more information before making crucial choices about structure, technology stack, tools or communication patterns.

While delaying decisions can potentially lead to some rework, the cost is usually outweighed by the benefit of having better information. For instance, choosing a messaging tool too early might saddle the product with unnecessary complexity if a simpler solution would suffice.

The key is finding the right balance – decisions that significantly influence other architectural choices or impact critical success factors should be made earlier, while less impactful decisions can wait.

Practical implementation strategies

Understanding business objectives

A clear understanding of business objectives is fundamental to evolutionary architecture because it guides the prioritisation of architectural qualities and ensures changes align with business value. This understanding emerges through gathering input from diverse stakeholders across business, compliance, operations, security, infrastructure and application development teams to identify the most critical architectural attributes.

The resulting clarity helps teams create meaningful, quantifiable fitness functions that can measure architectural success in terms that matter to technical and business stakeholders. By understanding business objectives, teams can better balance competing architectural goals, such as choosing between stability and agility or determining whether to prioritise rapid recovery over preventing failures.

This business-aligned approach ensures that as the architecture evolves through guided, incremental changes, it continues to support and enhance business value rather than drifting away from core organisational needs.

Layered test automation

Layered test automation supports evolutionary architecture by providing feedback mechanisms that enable confident, incremental change across different architectural layers.

This approach establishes fast-running micro tests at the foundation, integration tests for component interactions and end-to-end tests for overall system functionality, with each layer offering distinct types of feedback. This multi-layered testing strategy gives product engineering teams the confidence to make architectural changes and refactor code without fear of breaking existing functionality, while the rapid feedback loops allow for quick detection of issues when introducing changes.

The layered testing approach helps prevent architectural drift by continuously validating that changes align with desired architectural qualities, enabling the architecture to evolve safely and systematically while maintaining system integrity.

Decentralising decision-making

Decentralising decision-making through an architectural advice process supports evolutionary architecture by empowering teams to make architectural decisions, while ensuring those decisions are well-informed and aligned with broader organisational goals.

An advice process encourages a broader group to make architectural decisions in consultation with two key groups – those affected by the decision and those with relevant expertise. This approach leads to better, faster and more accountable decisions because they are made by those closest to the need and who will implement them.

The process naturally encourages right-sized decisions, as decision-makers must consider the effort of consulting stakeholders against the scope of the change. When combined with supporting elements like Architecture Decision Records (ADRs), Advisory Forums and team-sourced principles, this decentralised approach enables architecture to evolve incrementally and safely while maintaining system coherence.

Decentralising decisions supported by an advice process allows architecture to respond more quickly to changing needs, while building collective architectural knowledge across the organisation.

Pathway to production

The pathway to production supports evolutionary architecture by providing an automated, repeatable process that enables safe and frequent architectural changes, while maintaining system quality. It incorporates layered testing, security checks and compliance validations at various stages, ensuring that architectural changes meet quality standards before reaching production.

The pathway’s ability to decouple deployment from release through feature toggles allows teams to gradually evolve the architecture by testing changes with specific user groups or regions.

Modern architectures designed for flow enable the deployment of smaller, independent components which aligns with evolutionary architecture’s principle of incremental change. Additionally, the containerised workflows support architectural evolution by providing fast feedback cycles and allowing teams to safely experiment with new architectural patterns and technologies in isolated environments before implementing them more broadly.

An automated pathway enables teams to continuously learn from small architectural changes, while maintaining system stability and reliability.

Cultural considerations

An environment of psychological safety is required where teams feel empowered to make decisions and learn from failures. Leaders must actively create spaces where experimentation is encouraged and mistakes are viewed as learning opportunities, not setbacks.

This foundation enables teams to embrace a technical vision that goes beyond immediate delivery concerns to examine architectural evolution, evaluate tooling effectiveness, plan future explorations and tackle technical debt strategically. While some architectural divergence is natural and even beneficial in an evolving system, success depends on maintaining the balance between autonomy and alignment.

Teams need a clear sense of architectural direction and well-defined boundaries for experimentation, with these guardrails enabling rather than restricting innovation. Transparency around strategic architectural goals helps maintain this balance, while collective ownership of architectural decisions ensures that teams remain invested in both local and system-wide outcomes.

The key is creating a culture where technical excellence and learning are valued and where teams feel confident in their ability to shape the architecture’s evolution while remaining aligned with broader organisational objectives.

Evolutionary architecture represents a fundamental shift in how organisations approach architectural change, moving away from rigid, upfront planning towards a more adaptive, experiment-driven approach.

By embracing principles like fitness functions, last-responsible-moment decision-making and decentralised decision-making, organisations can create architectures that evolve more naturally in response to changing business needs.

The success of this approach relies on strong technical practices including layered test automation, automated pathways to production and clear fitness functions, combined with cultural elements that foster psychological safety and collective ownership.

While this approach requires a change in thinking and investment in supporting practices, the benefits are compelling – reduced risk through incremental change, better alignment with business value and increased ability to respond to change.

The key is striking the right balance between enabling innovation and maintaining coherence, between autonomy and alignment, creating an environment where architecture can evolve purposefully while supporting broader organisational goals.

Paul (PJ) Jacobs

Paul (PJ) Jacobs

PJ promotes pragmatic business and technical practices for HYPR's clients to maximise their competitive advantage through the sustainable evolution of valuable software product.

More Ideas

our thoughts

Leading like a fire chief: the art of empowering teams

Posted by Ajay Blackshah . Feb 11.25

Organisations often fail to modernise their delivery engines at the first hurdle. They focus on team-level improvements rather than changing their leadership style to enable a more adaptive, learning organisation for today’s fast-paced, AI-led world.

> Read

our thoughts

Navigating complexity with psychological safety

Posted by Gareth Evans . Jan 23.25

Traditional leadership approaches often treat organisational change as a complicated problem solved through detailed planning and linear execution. This mindset fails to recognise organisations as socio-technical systems where change emerges through countless interactions, relationships and feedback loops. By combining insights from complexity science with an understanding of psychological safety, leaders can evolve a more effective path forward.

> Read

our thoughts

Value-driven technology funding: aligning investment mechanisms with software excellence

Posted by Daniel Walters . Jan 02.25

In my earlier post, ‘CEOs, software funding and budget mechanisms could damage your investments’, I detailed how the nature of software development deserves a tailored approach to funding and managing it to enable better performance. Here are the options for doing this...

> Read

our thoughts

How to build an AI code copilot that responds with your own code

Posted by Tony Luisi . Dec 16.24

AI coding assistants and copilots continue to evolve and become more useful, reshaping the industry and changing the skills developers need to be productive. While these tools can be helpful, they also currently come with a significant drawback – they’re trained on a vast number of repositories of average code. The code they suggest reflects the quality of all the code they’ve been trained on, including excellent and problematic patterns.

> Read

our thoughts

CEOs, software funding and budget mechanisms could damage your investments

Posted by Daniel Walters . Dec 12.24

I’ve worked with many executives who have great intentions and aspirations for their companies. They’re frustrated that their energy and investment in software development are not meeting those aspirations. Some find a path to success, but many fail to produce software that meets the expectations to compete.

> Read