Contents
  1. What the bill knows that your diagrams don’t
  2. The three questions that recover most of it
  3. Where this bites hardest with AI workloads
  4. Making it a review, not a report

Writing · Cloud · · 4 min read

Your cloud bill is a design review you keep skipping

Cost anomalies are almost never pricing problems. They are architecture decisions arriving late, in a format nobody on the engineering team reads.

The monthly cloud bill lands with finance, gets converted into a variance figure, and reaches engineering as a request to reduce spend by some percentage. By then the information has been stripped of everything that made it actionable. What was a specific statement — this retry loop calls a cross-region endpoint on every failure — arrives as a target.

The bill is not a finance artifact that engineering must occasionally react to. It is the most complete record you have of how your architecture actually behaves under real load, and almost nobody reads it that way.

What the bill knows that your diagrams don’t

An architecture diagram records intent. The bill records what happened. Where they disagree, the bill is right.

Three things show up there and essentially nowhere else:

  • The paths you did not know were hot. Egress charges between availability zones are the classic tell. Nobody designs a chatty cross-AZ call; it emerges from a service that got split, a client library defaulting to a regional endpoint, or a retry policy that fans out. The diagram shows one arrow. The bill shows how many times it was traversed.
  • The idle you are paying to keep warm. Non-production environments running at production shape, over-provisioned baselines sized for a launch that already happened, storage tiers holding data nobody has read in a year. None of this fails, so nothing alerts.
  • Your real unit economics. Cost per tenant, per transaction, per inference. Most teams cannot produce this number, which means they cannot tell whether growth improves their margin or erodes it — and that is a strategy question, not a housekeeping one.

The three questions that recover most of it

Before any tooling, the same three questions do most of the work:

Where does the data move, and how often? Compute is visible and gets attention. Data movement is invisible in the diagram and frequently the largest line. Trace the ten most common request paths and count region and zone boundaries crossed.

What is running that nobody asked for? Not “unused resources” — that framing sends people hunting for orphaned volumes worth a rounding error. The question is which deliberately provisioned things are sized for a condition that no longer holds.

What does one unit of the business cost to serve? Pick the unit that matters — a customer, an order, a document processed — and get to a defensible number. Being roughly right here beats being precisely right about anything else on this list.

“Every recurring cost is a design decision that is still being paid for.”

Where this bites hardest with AI workloads

AI systems break the assumptions most cost governance was built on, in three ways.

Cost moves with usage, not with deployment. A traditional service costs roughly the same whether it serves ten requests or ten thousand, because you provisioned it either way. A token-metered system does not. This is genuinely better — spend follows value — but it means an unbounded retry, a runaway agent loop, or a well-meaning batch job can multiply the bill overnight with no infrastructure change to point at.

The expensive choice is usually invisible in the code. Whether a step uses the frontier model or a small one, whether you retrieve five chunks or fifty, whether the agent gets three tool-call turns or twenty — none of these look like cost decisions when written. They look like quality decisions. They are both, and the tradeoff is only legible if someone has put the numbers next to each other.

Evaluation is a real and unbudgeted line item. Running a serious eval suite on every change costs money proportional to how seriously you take it. Teams that did not budget for this quietly stop running the suite, which is a governance failure that first appears as a cost decision.

Making it a review, not a report

The fix is structural and unglamorous: put the bill in front of the people who can change it, at a cadence where changing it is still cheap.

Attribute cost to the team that causes it, not the account that hosts it. Tag enforcement is tedious and it is the precondition for everything else — unattributed spend belongs to nobody and therefore gets optimised by nobody.

Give engineering the shape, not the total. A percentage target produces theatre. “This endpoint is now 40% of the service’s cost and its call volume tripled after the March release” produces a fix, usually within the week.

Put unit cost in the same review as latency and error rate. If cost per transaction lives in a finance deck and p99 lives in an engineering dashboard, the tradeoff between them never gets made explicitly — it gets made accidentally, by whoever last tuned something.

Set a cost budget at design time for anything metered by usage. Not a limit to enforce, a number to be wrong about early. A team that has estimated cost per request before building will notice a 10× surprise in week one rather than in the quarterly variance report.

The goal is not a cheaper bill. It is a bill that nobody is surprised by — which, in practice, is the same thing arrived at from a more durable direction.