Skip to main content

From Design to Production

Introduction

Your marketplace can lose an entire region at dinner rush and keep taking orders. You proved it. You also, at this exact moment, have nothing.

Nobody has deployed it. Nobody can see inside it while it runs. Nobody is paying its bill, because there is no bill, because there is nothing running. What you are holding is a very good argument that a system would survive. That is not the same thing as a system.

This is the course where the argument has to become a machine that other people can run, change, watch, secure, and afford. It is a different kind of hard from what came before, and the difference catches out engineers who are genuinely good at design.

In this lesson: why a design and a running system are separated by an entire discipline, the two acts this course moves through, and the one law that connects them.

Scope: every technology named here gets its own lesson later. Nothing below is a tutorial on Kubernetes, pipelines, tracing, or cost. This is the map and the reason for it.

A wide two-panel figure contrasting a system as designed with the same system in production. On the left, under the heading THE DESIGN, three clean rectangles labelled API, Orders and Payments sit connected by two tidy arrows on a pale background, with the caption 'four boxes, two arrows, one afternoon'. A thick vertical divider runs down the middle of the canvas, labelled THE GAP. On the right, under the heading IN PRODUCTION, the same three services are each drawn as a stack of two replicas, wrapped in the machinery that a running system actually requires: a deployment pipeline feeding them from above, a log stream and a metrics chart reading them from the side, a secrets vault attached below, and a cost bar running along the bottom. Small labels mark pipeline, replicas, logs, metrics, secrets and bill. A single large focal number reads 1 box becomes 11 things. Beneath both panels a dark slate band carries the law of the lesson: a design is a hypothesis, production is where you find out. The figure communicates that the difference between a design and a running system is not detail but an entire second discipline, and that everything on the right side of the divider is what this course teaches.

The Design That Has Never Met a User

Draw a box on a whiteboard and label it Orders Service. How long did that take, two seconds?

Now put that box into production. It needs a repository and a build. It needs a container image, and somewhere for that image to live. It needs at least two running copies, because one copy is a single point of failure and you already know how that story ends. It needs configuration that differs per environment, and secrets that must never appear in the configuration. It needs a pipeline that can ship a change and a way to take that change back. It needs logs shaped so a machine can search them, metrics that say whether it is healthy, and an alert that wakes a specific human when it is not. It needs a line item on an invoice, and someone who has agreed to own it.

One rectangle. Eleven things. None of them are the feature.

Here is the honest way to think about what you drew: a design is a hypothesis. It is a claim that a particular arrangement of parts will hold up under real load, real failures, and real change. Hypotheses are valuable. They are also, until tested, just claims, and production is the only place the test runs.

You Cannot Rehearse Production

The obvious objection is that we test claims all the time, in staging.

Charity Majors, whose whole career is watching systems fail in ways their builders did not predict, is blunt about that: "Trying to mirror your staging environment to production is a fool's errand. You should just give up now." Her reasoning is not cynicism, it is arithmetic. "Distributed systems are incredibly hostile to being cloned, or imitated, or monitored, or staged." And the thing you would need to clone is not really the code. "Every single unique combination of this point in time of your infrastructure, this deploy artifact, this deploy script is unique."

What production has that no copy of it does: real data, real users, real traffic, real scale, real concurrency, real network, real deploys. You can accept no substitute, because there isn't one.

Sit with the consequence, because it is the reason this course exists. If you cannot rehearse the performance, then the system has to be safe to change during the performance. It has to be legible while it runs, so you can see what it is doing. It has to be reversible while it runs, so a wrong move is survivable. It has to fail in pieces rather than all at once, so a mistake costs a slice instead of the company.

Legible, reversible, and failing in pieces are not properties you sprinkle on afterwards. They are decided by the architecture, months earlier, by someone drawing boxes.

Day 0, Day 1, and the Day That Never Ends

The industry already has a name for the thing this lesson is circling, and the name is better than most jargon because the shape of it carries the argument.

Day 0 is design and architecture. Day 1 is install and first deploy. Day 2 is everything after: patches, upgrades, configuration drift, capacity, cost, and incidents. The vocabulary came out of the infrastructure world and spread through the Kubernetes operator community, where people were forced to admit in public that the work after installation is a different job with a different rhythm.

Look at the asymmetry. Day 0 ends, at a review or a deadline. Day 1 ends, at a deploy you can celebrate. Day 2 has no end date. It runs until the system is switched off, which for anything successful is measured in years.

Estimates of how much of a system's lifetime cost lands in that third phase vary so widely that quoting a precise figure would be dishonest. The range across published sources runs from roughly forty to eighty percent, and the methodologies behind those numbers are soft. What nobody credible argues is that the running half is smaller than the building half. Most engineering careers, and almost every engineering curriculum, are organised around the phases that end.

A horizontal timeline figure showing the three phases the industry uses to describe a system's life. Three segments run left to right. DAY 0, drawn short and pale, is labelled design and architecture and carries a small note reading it ends. DAY 1, also short, is labelled install and first deploy, with the note it ends too. DAY 2 is drawn far longer than the other two combined, in a strong colour, running off the right edge of the canvas with an open arrowhead rather than a boundary, labelled run it, and annotated with the recurring work it contains: patches, upgrades, drift, capacity, cost, incidents. A bracket above the first two segments is labelled bounded; a bracket above the third is labelled open-ended. A focal line reads Day 2 has no end date. A closing band notes that this vocabulary came out of the infrastructure and Kubernetes operator community, and that it is the industry's own admission that running a system is a different job from building it. The figure's proportions carry the argument: the phase most engineers plan for is the short one, and the phase nobody budgets for is the one that never closes.

The Gate Between Designed and Running

At Google, a service does not simply arrive in production and start being reliable. There is a literal gate, and it has a name.

"The most typical initial step of SRE engagement is the Production Readiness Review (PRR), a process that identifies the reliability needs of a service based on its specific details."

The review checks that a service "meets accepted standards of production setup and operational readiness" before anyone signs up to carry a pager for it. What makes it worth your attention is not the ceremony, it is the checklist. Two of the items published in the SRE book:

  • whether "updates to the service impact an unreasonably large percentage of the system at once"
  • whether "all user-visible request failures [are] well instrumented and monitored, with suitable alerting configured"

Read those again with an architect's eye. The first is blast radius. The second is observability. Neither reads like an architecture question, and both are answered almost entirely by architecture. How much of your system one deploy can break is decided by how many independently deployable pieces you built. Whether a failure can be seen is decided by whether requests cross boundaries you thought to instrument.

The gate between designed and running is guarded by operational questions with architectural answers. That sentence is the whole course in one line.

The Two Acts

So this course runs in two acts, and it is worth knowing which one you are in at any moment.

Act A — architect at scale. Choose the shape: architecture styles, the patterns that hold services together, what they run on, and how data moves through them in bulk.

Act B — operate and evolve. Live with the shape you chose: ship changes without downtime, see inside a running system, keep it safe, and pay for it.

One piece of housekeeping, quickly, because the previous course already drew this line and there is no sense drawing it twice. Distributed Systems & Reliability answered "how do I not fall over when something breaks?". This course answers "how do I run, watch, secure, and pay for this thing, day after day?". Keeping a region alive through an outage belongs there. Rolling out version two without downtime belongs here.

The two acts are not a filing system. They are a cause and its effect, separated by enough time that most people never connect them. Act A is where you make promises. Act B is where they come due, usually to somebody else, usually at three in the morning.

See It: Your Architecture, Billed

That claim deserves better than my word for it, so here it is as arithmetic you can drive.

Make four architecture calls on the left. Nothing below them is a separate decision, every number is computed from what you chose: blast radius is a hundred divided by how many things you can deploy, the idle floor is your units multiplied by the replicas each one needs to survive losing a machine, and the debugging cost is how many services one checkout has to cross.

Start as a monolith on virtual machines, then switch Shape to microservices and watch three numbers move at once. Blast radius improves eightfold. The idle bill also goes up eightfold, before a single user shows up. And a request that used to be one stack trace now crosses five machines. Then try microservices with one shared database, which is the arrangement most teams actually end up with, and read what it says.

There is no configuration on that panel that wins on every axis. That is not a limitation of the widget. That is the subject.

Make four architecture calls and watch the operational bill they create.

You Must Be This Tall

Martin Fowler has been asked whether a team should adopt microservices more times than anyone should have to endure, and his answer hardened into a title: you must be this tall to use microservices. He lists what tall means, and the list is short.

Rapid provisioning"you should be able to fire up a new server in a matter of hours." Basic monitoring"it's essential that a monitoring regime is in place to detect serious problems quickly." Rapid application deployment"you need to be able to quickly deploy them, both to test environments and to production," through a pipeline that finishes in no more than a couple of hours. Underneath all three, close collaboration between the people who write the code and the people who run it.

Now put that list beside the second half of this course. Rapid provisioning is Compute & Orchestration. Basic monitoring is Observability. Rapid deployment is Deployment & Evolution. The prerequisites for the architecture are, line for line, the syllabus for operating it.

That correspondence is the best argument I can give you for why the second half of this course is not the boring half. A team that splits into services without those three capabilities has not modernised. It has taken on the costs of a distributed system and purchased none of the benefits, which is the most expensive place in this entire field to stand.

A figure built like a height chart at a fairground ride, illustrating the entry requirement for splitting a system into services. On the left, a measuring post carries three rungs stacked upward, each a prerequisite: rapid provisioning at the bottom, basic monitoring in the middle, rapid deployment at the top. A dashed height line runs across the top of the post labelled you must be this tall. To the right of the post, three arrows lead from each rung to the part of this course that builds that capability: rapid provisioning points to Compute and Orchestration, basic monitoring points to Observability, and rapid deployment points to Deployment and Evolution. Below the post a short figure is drawn attempting the ride and falling short of the line, captioned eight services, sixteen machines, no pipeline, no dashboards. A dark band at the foot of the figure states the payoff: the prerequisites are the syllabus. The figure makes visible that the operational capabilities usually treated as afterthoughts are in fact the admission price for the architecture most teams want, and that this course exists to pay it.

How Production Keeps Score

Once a system is running, the argument about whether you are doing this well stops being a matter of taste. The DORA research program measures software delivery with five numbers, and they split into two kinds.

Throughput: change lead time, "the amount of time it takes for a change to go from committed to version control to deployed in production," and deployment frequency. Instability: change fail rate, failed deployment recovery time, and deployment rework rate, the share of unplanned deploys you make because something broke.

The finding that matters most is the one people find hardest to believe. "DORA's research has repeatedly demonstrated that speed and stability are not tradeoffs." The teams that ship most often are also the teams that break things least often, because the same machinery, small changes, fast pipelines, real observability, quick rollback, produces both. In the 2025 report, roughly a fifth of respondents cleared the top band: deploying on demand, change failure rates around five percent, recovery inside an hour.

Two honest footnotes. The famous benchmark, Amazon deploying every 11.6 seconds on an average weekday, comes from a talk in 2011, which should tell you how long this has been possible rather than how impressive it is. And the 2025 report found that heavier AI adoption correlated with more delivery instability, even while individual developers got more effective. Generating changes faster than your machinery can safely absorb them is not an improvement. It is a way of discovering exactly how good your Act B is.

Your Map Through This Course

Here is the whole thing on one page, in the order you will meet it.

Act A — architect at scale

  1. Architecture Styles — monolith, microservices, serverless, event-driven, and a rubric for choosing rather than following fashion. You are in this part now.
  2. Microservices Patterns — if you did split, the machinery that keeps the pieces working together: discovery, gateways, meshes, and who is allowed to own which data.
  3. Compute & Orchestration — what the code actually runs on. Containers, the twenty percent of Kubernetes worth knowing, autoscaling, and the decision everyone asks about between managing servers and not.
  4. Big Data & Streaming — moving data in bulk and in flight, batch against stream, windows, and counting things at a scale where counting stops being easy.

Act B — operate and evolve

  1. Deployment & Evolution — replacing a running engine: pipelines, canaries, feature flags, and migrating a database that is being written to right now.
  2. Observability — seeing inside it. Logs, metrics, traces, and following one request through twelve services when a customer says it was slow.
  3. Security & Cost — the two bills. Keeping hostile traffic out, keeping secrets secret, and finding out which line of your architecture is quietly the expensive one.

Then everything lands in one place. Capstone Pass 4 takes the same marketplace you just made survive its failures and puts it into production for real: split into services, shipped through a pipeline, watched through proper instrumentation, and held to a budget.

Notice the shape. The first four parts are choices. The last three are consequences.

A single-page map of this course, split into two acts. The upper half, tinted and labelled ACT A — ARCHITECT AT SCALE, holds four numbered station cards connected left to right: Architecture Styles, Microservices Patterns, Compute and Orchestration, and Big Data and Streaming. The lower half, tinted differently and labelled ACT B — OPERATE AND EVOLVE, holds three station cards: Deployment and Evolution, Observability, and Security and Cost. A wide curved arrow carries the reader from the end of Act A down into the start of Act B, labelled the handover. A small terminal marker past the final station reads a marketplace in production, marking the capstone the whole course builds toward. Each card carries a one-line description of what that part answers, and the two acts are visually distinguished so the reader can see at a glance that the first four parts decide the shape of the system and the last three decide what it costs to keep alive. A caption under the map states the causal claim the course rests on: everything you choose in the top half, you pay for in the bottom half.

When You Do Not Need Any of This

A course like this one has an obvious failure mode, which is that you finish it and go distribute something that did not need distributing.

So let me put the counter-argument at full strength while you are still fresh. A very large number of real, profitable businesses run on one well-maintained server with good backups. For them, most of Act A would be a hobby funded by their employer. Fowler is direct about the specific version of this mistake: "You shouldn't start a new project with microservices, even if you're sure your application will be big enough to make it worthwhile." His evidence is uncomfortable. "Almost all the cases where I've heard of a system that was built as a microservice system from scratch, it has ended up in serious trouble."

The reason is a knowledge problem, not a technology one. "Even experienced architects working in familiar domains have great difficulty getting boundaries right at the beginning." Boundaries between services are extremely expensive to move once they exist, and you learn where they belong by operating the system, which you cannot do before it exists.

I will give Fowler the last word here, partly because it is good advice and partly because the humility is the point: "anybody's advice on these topics must be seen as tentative, however confidently they argue." Including this course. What you are learning is not a sequence of correct answers. It is what each choice costs, so you can tell when the price is worth paying.

Mental-Model Corrections

  • "Production is the last step." It is the first day of the longest phase. Day 2 has no end date, and a deploy is where a system starts being your problem, not where it stops.
  • "A good design is a working system." A design is a hypothesis. It has not been tested against real traffic, real data, and real failures, and those are the only conditions the test runs under.
  • "Staging proves it works." Staging catches the errors you already knew how to look for. Nothing you can build is a copy of production, which is why the ability to observe and reverse changes in production is a design requirement rather than a tooling preference.
  • "Microservices are the modern way to build systems." They are one shape with a specific entry fee: provisioning, monitoring, and deployment you already have. Without those three, splitting buys every cost of a distributed system and none of its independence.
  • "Operations comes after the architecture." Operations is the architecture, observed later. How much one deploy can break, how long a failure takes to find, and what the system costs while idle were all decided at the whiteboard by someone who thought they were only drawing boxes.

Key Takeaways

  • A design is a hypothesis; production is the only place it is tested. The gap between them is not detail, it is a second discipline.
  • You cannot clone production, so a system has to be legible and reversible while it runs, and those properties are decided by architecture.
  • Day 0 and Day 1 end. Day 2 does not, and it is where most of a system's lifetime cost and nearly all of its drama live.
  • The gate into production is guarded by operational questions with architectural answers: blast radius and observability are both set at the whiteboard.
  • Speed and stability are not opposites. The machinery that makes deploys frequent is the machinery that makes them safe.
  • Fowler's prerequisites for splitting a system are, line for line, this course's second act. You must be this tall, and this is how you get tall.

Act A opens where every architecture argument starts, with the shape everyone claims to have outgrown and most systems should have kept. Next — Client-Server to N-Tier: the layering instinct, and why it still underpins nearly everything you will draw.