Leer en español · Lire en français · Auf Deutsch lesen
Section 1.8 of 1.8 · Intermediate · 19 min read
Architecture across the lifecycle: up-front, emergent and continuous architecture
Video lesson
4 min · narrated, with captionsListen only (audio)
Read the transcript
Does architecture happen once at the start, or all the time? This final lesson of Chapter one shows how much architecture to do, and how it fits into modern delivery.
When you plan a long trip, you book the flights and the first night's hotel well in advance, because they're expensive to change and might sell out. You don't plan every meal before you leave. You decide those as you go, once you know how you feel and what's nearby. And you check and adjust the plan throughout the journey. Good software architecture works the same way.
There's an old argument between two extremes. Big design up front means a full design before construction. It suits stable requirements and very costly change, such as flight software. But it risks designing for imagined needs, and feedback arrives late. At the other end is purely emergent design: build the simplest thing and refactor as you go. That works inside a module, and for small systems, but at scale, big decisions get made by accident by whoever writes the first code. Most successful teams sit in between. They decide the one-way doors early, grow the rest with the system, and keep evaluating.
One principle behind the Agile Manifesto reads: the best architectures, requirements and designs emerge from self-organising teams. It's often quoted as if agile teams don't need architecture. It doesn't say that. It's a claim about who designs, the people who build the system, and how: through the work, not handed down complete. The same document calls for continuous attention to technical excellence and good design.
So how much is enough? George Fairbanks's risk-driven model says effort should match the risk of failure. First, identify and prioritise risks as concrete scenarios, such as the booking page timing out when five thousand patients log in at eight in the morning. Then apply techniques that reduce those risks: a model, a prototype, a load test or a design pattern. Finally, evaluate how far the risk has dropped, and stop when what's left is acceptable. A simple internal tool may need only a whiteboard sketch. A regulated payment platform deserves careful modelling and review.
Two simple techniques tie architecture to delivery from the first week. A walking skeleton is a tiny version of the system that does one small thing end to end, through all the main components and the real delivery pipeline. It proves the pieces connect. A spike is a short, time-boxed experiment to answer one question, such as whether an interface can handle fifty requests a second. It's usually thrown away; its output is knowledge. And the Scaled Agile Framework talks about an architectural runway: the code and infrastructure that near-term features will need, built before they need it.
In an iterative process, architecture work recurs in every cycle. It begins with clarifying requirements: the stakeholders, their concerns, the quality goals and the risks. Then designing the structures, and communicating and agreeing the decisions with the people who build, run and pay for the system. Next, accompanying the implementation, and adjusting the design when reality pushes back. Then evaluating against the quality goals, and evolving: repaying debt and adapting to change, which brings you back to the start. At the centre is the running system. Production metrics, traces and incident reviews show where the architecture is weak far more reliably than diagrams do.
Continuous delivery makes architecture more important, not less. If you want to release many times a day, deployability, testability and operability become key quality attributes. The research summarised in the book Accelerate found that a loosely coupled architecture, one that lets teams test and deploy their parts independently, was among the strongest predictors of delivery performance. So steer between two failure modes: architecture astronautics, months of diagrams for needs that never arrive, and accidental architecture, where nobody considers the structure until it's large and hard to change.
That completes Chapter one. The full section has more on continuous architecture, and a checklist for keeping architecture work in proportion. When you're ready, try the optional chapter test, then move on to Chapter two, where we make quality attributes precise and measurable.
What you need to know
- Big design up front suits stable requirements and very costly change; purely emergent design suits small systems of two-way doors; most teams need something in between.
- The Agile Manifesto principle that the best architectures emerge from self-organising teams is about who designs and how, not a claim that architecture is unnecessary.
- Fairbanks' risk-driven model sets architecture effort in proportion to the risk of failure: identify and prioritise risks, apply techniques, evaluate the reduction, and stop when the remaining risk is acceptable.
- SAFe's architectural runway and Erder and Pureur's continuous architecture both treat architecture as ongoing work that must stay ahead of the features that depend on it.
- A walking skeleton proves the architecture end to end early; spikes turn uncertain decisions into evidence-based ones.
- In continuous delivery and DevOps, deployability and operability become key quality attributes, loosely coupled architecture enables delivery performance, and the running system becomes the main source of architectural feedback.
The old argument: up front or emergent?
For most of software's history, architecture was something you did at the start. In a sequential ("waterfall") process, requirements were gathered, then an architecture and detailed design were produced and approved, then the system was built to that design. This is big design up front (BDUF). Its logic is sound in some settings: when requirements are stable and well understood, when changes after delivery are extremely expensive (flight software, medical devices, hardware-bound systems), or when many contractors must build parts that fit together, a thorough design before construction reduces risk.
Its weaknesses are equally well known. Requirements change, and an elaborate design made early encodes assumptions that later prove wrong. Feedback from real use arrives only at the end, when change is most expensive. Teams design for imagined needs ("we might need to support five currencies") and pay for flexibility nobody uses. And documents that took months to approve tend to be followed after they have stopped being true.
Agile methods reacted against this. Extreme Programming in particular argued for emergent design: build the simplest thing that works for the features in hand, keep the code clean with continuous refactoring and automated tests, and let the design grow as the system does. Kent Beck's rules of simple design and the principle "you aren't gonna need it" (YAGNI) express the same idea. Emergent design works well inside a module, and for small systems where every decision is a two-way door. Its weakness appears at scale: some decisions (the data model of a system of record, the boundaries between teams, the security model, the choice between synchronous and asynchronous integration) are expensive to reverse and shape everything built on top. Leaving them to emerge often means they are made by accident by whoever writes the first code.
What the Agile Manifesto does and does not say
One of the twelve principles behind the Agile Manifesto (2001) reads: The best architectures, requirements, and designs emerge from self-organizing teams.
It is frequently quoted as if it meant that agile teams do not need architecture or architects. It does not say that.
Read carefully, the principle makes a claim about who produces the best architectures (the people who build the system, organised by themselves rather than directed from outside) and how (they emerge through the work, rather than being handed down complete). It says nothing about architecture being unimportant, and the same document contains another principle: continuous attention to technical excellence and good design enhances agility. A team that ignores structural decisions is not following the manifesto; it is ignoring half of it.
What the principle does rule out is an architecture imposed from an ivory tower by people who will not live with its consequences, and a phase in which the architecture is finished and frozen before anyone writes code. In practice, the most common reconciliation is that architecture becomes a continuous activity, shared within the team, with an architect (or architecturally minded engineers) acting as guide, facilitator and keeper of the big picture rather than as a gatekeeper.
A spectrum, not a choice
How much architecture? The risk-driven model
If neither extreme is right, how much architecture work is enough? George Fairbanks gave one of the clearest answers in Just Enough Software Architecture: A Risk-Driven Approach (2010). His risk-driven model says the effort you spend on architecture should be proportionate to the risk of failure. It has three steps, repeated as needed: identify and prioritise risks (ideally as concrete failure scenarios, such as "the booking page times out when 5,000 patients log in at 8 a.m."); select and apply techniques that reduce those risks (a model, a prototype, a load test, an analysis, a design pattern); and evaluate the risk reduction, stopping when the remaining risk is acceptable.
The model is powerful because it gives a stopping rule. A simple internal tool built on familiar technology with few users faces few architectural risks, and a sketch on a whiteboard may be enough. A payment platform handling millions of transactions, subject to regulation, faces many, and deserves careful modelling, prototyping and review. The same team may apply very different amounts of architecture to different parts of one system. Fairbanks also stresses that time spent designing is time not spent building or testing, so over-designing is a real cost, not a safe default.
Intentional architecture and the architectural runway
Large organisations face a coordination problem that a single team does not: dozens of teams must build parts that fit together. The Scaled Agile Framework (SAFe), a widely adopted and also widely debated framework for scaling agile practices, describes architecture as a balance between emergent design within teams and intentional architecture: deliberate, cross-team planning of the structures and guidelines that teams share. It calls the result the architectural runway: the existing code, components and technical infrastructure needed to implement near-term features without excessive redesign and delay. Work to extend the runway (for example, introducing a messaging platform before the features that need it) is planned explicitly alongside feature work, and features consume the runway as they use it.
Described neutrally, the runway metaphor captures something true for any organisation: if the infrastructure a feature needs does not yet exist, that feature will be slow, and building the infrastructure takes lead time. Critics of SAFe argue that it can reintroduce heavyweight, top-down planning under agile vocabulary; supporters argue that some central coordination is unavoidable at scale. You do not need to adopt SAFe to use the idea: "what foundations will next quarter's features need, and are we building them in time?" is a good question for any architect.
Continuous architecture
Murat Erder and Pierre Pureur, in Continuous Architecture: Sustainable Architecture in an Agile and Cloud-Centric World (2015) and Continuous Architecture in Practice (2021, with Eoin Woods), describe architecture as an ongoing flow of decisions rather than a phase or a document. Their six principles are: architect products, not just solutions for projects; focus on quality attributes, not on functional requirements; delay design decisions until they are absolutely necessary; architect for change by leveraging the power of small, loosely coupled parts; architect for build, test, deploy and operate; and model the organisation of your teams after the design of the system you are working on.
Two of those principles echo earlier sections of this chapter: delaying decisions is the last responsible moment, and modelling teams after the system is a deliberate use of Conway's law. The practical emphasis is on the unit of architectural work being the decision, recorded as it is made, and on feedback loops (automated tests, fitness functions, production monitoring) that tell the team whether the architecture still meets its quality goals.
Walking skeletons and spikes
Two simple techniques bring architecture and delivery together from the first week. A walking skeleton, a term associated with Alistair Cockburn, is a tiny implementation of the system that performs one small end-to-end function through all the main architectural components. For a hospital booking system, it might let a test user log in, see one hard-coded clinic's free slots fetched from the patient administration system, book one, and receive a text message, deployed to a production-like environment through the real delivery pipeline. It does almost nothing useful, but it proves that the pieces connect, that the pipeline works, and that the architecture can be built. Every later feature adds flesh to a skeleton that already walks.
A spike (another term from Extreme Programming) is a short, time-boxed experiment to answer one question or reduce one risk: can the PAS interface handle 50 requests a second? How long does the identity provider take to issue a token? Can our chosen library generate accessible PDFs? Spikes are usually thrown away; their output is knowledge, recorded in a decision. They are the cheapest way to move a decision from guesswork to evidence before its last responsible moment.
Architecture activities in an iterative cycle
In an iterative process, architecture work does not happen once; it recurs in every cycle, at a depth that matches the risks in front of the team. The iSAQB curriculum describes the architect's core tasks in a way that maps naturally onto such a cycle, and The architect's role introduced them. Here they are as a loop:
Clarify requirements: find the stakeholders and concerns, sharpen the quality goals and constraints, and identify the risks (see Stakeholders and concerns). Design structures: make or revise the significant decisions, choosing styles and patterns and defining boundaries and interfaces. Communicate and agree: explain the decisions to the people who build, run and pay for the system, in views suited to each audience, and record them. Accompany implementation: work with the teams as they build, answer questions, review code and adjust the design when reality pushes back. Evaluate: check that the system meets its quality goals, through reviews, tests, measurements in production and automated fitness functions. Evolve: act on what evaluation found, repay debt, and adapt to changed requirements, which brings you back to clarifying requirements.
The architecture cycle
Architecture in DevOps and continuous delivery
Continuous delivery, in which every change is built, tested and kept releasable, and DevOps, which joins development and operations responsibility, change both the goals of architecture and its feedback loops.
They change the goals because deployability, testability and operability become first-class quality attributes. A system cannot be released many times a day if components must be deployed together in a fixed order, if tests need a full copy of production, or if nobody can tell from the monitoring whether a release made things worse. The research summarised in Accelerate (Nicole Forsgren, Jez Humble and Gene Kim, 2018) found that a loosely coupled architecture, one that lets teams test and deploy their parts independently, was among the strongest predictors of continuous delivery performance. Architecture is therefore not just helped by good delivery practice; it is one of its preconditions.
They change the feedback loops because the running system becomes the most honest architecture review. Production metrics, traces and incident reviews show where the architecture is weak far more reliably than diagrams do. Architectural rules can be enforced as automated fitness functions in the pipeline (Chapter 11), infrastructure is defined as code and reviewed like code (Chapter 10), and techniques such as feature flags and canary releases make many decisions cheaply reversible. The architect's role shifts accordingly: less approval of documents, more shaping of the platform, pipeline and guardrails that let teams make good decisions quickly.
Checklist: is your architecture work proportionate?
Run through this list at the start of a project and at each major milestone. Each item is a question about whether the effort matches the risk.
- You can name the top five architectural risksWritten as concrete failure scenarios, prioritised, and each with an owner and a plan to reduce it.
- Your design effort is concentrated on those risksAreas with low risk and familiar technology get a sketch; areas with high risk get prototypes, measurements and review.
- One-way doors are identified and decided deliberatelyExpensive-to-reverse decisions are known, made at the last responsible moment and recorded; two-way doors are left to teams.
- A walking skeleton exists earlyAn end-to-end path through the main components runs in a production-like environment within the first few iterations.
- Decisions are recorded briefly as they are madeA short decision record exists for each significant decision; nobody has to reconstruct the reasoning from memory.
- Quality goals are checked continuouslyKey quality attributes have automated tests, fitness functions or production measurements, not just a one-off review.
- Architecture is not blocking deliveryTeams rarely wait for an architecture decision or approval; if they do, the process is too heavy for the risk.
- Delivery is not undermining architectureHotspots, change coupling and rule violations are tracked; erosion is noticed within weeks, not years.
- The amount of documentation matches its readersEach document or view answers a real stakeholder's concern and is kept current; unread documents are retired.
Check your understanding
When is big design up front a sensible choice?
When requirements are stable and well understood, when change after delivery is extremely expensive, or when many separate parties must build parts that fit together exactly.
What stopping rule does the risk-driven model give for architecture work?
Stop when the remaining risks are acceptably low; effort should be proportionate to the risk of failure.
What is the difference between a walking skeleton and a spike?
A walking skeleton is a minimal end-to-end implementation through the real architecture that is kept and built upon. A spike is a short experiment to answer one question, usually thrown away once it has produced knowledge.
Why does continuous delivery make architecture more important rather than less?
Frequent independent releases require a loosely coupled, testable and deployable structure; without it, the delivery pipeline cannot work at speed.
Sources and further reading
Have a question about this section? ArchitectBot, the course’s AI study assistant, answers from the course first.
Ask: “We are starting a new product with an agile team. How much architecture should we do before the first sprint, and what can safely wait?”