FinOps Is an Engineering Problem, Not a Finance One
Cloud spend is decided in architecture reviews, not in procurement. The largest savings come from changing what the system does, not from negotiating what it costs.
When a cloud bill becomes a board-level concern, the usual response is a procurement exercise: commit to reserved capacity, negotiate the enterprise agreement, hunt for idle resources. All of that is worth doing, and all of it is bounded. It optimises the price of what you are already doing.
The larger lever is what you are doing. Cloud spend is the financial shadow of architectural decisions, and it is generally shaped years before anyone looks at the invoice.
Cost is a property of the design
Consider a straightforward example. A service that reads a large object from storage on every request, filters it in memory and returns a fraction of it, is paying for egress, compute and time on every call. The same service with a query-side index pays for a fraction of that. No procurement negotiation reaches that difference. Only a design change does.
The patterns that structurally reduce spend tend to be the same ones that improve latency and reliability:
- Move computation to where the data already is. Every byte that crosses a boundary is billed twice: once to send, once in the latency budget you spend waiting for it.
- Make the expensive path the uncommon path. Cache aggressively at the edge of each tier. A cache hit is not just faster, it is a request that never bills downstream.
- Right-size the storage class to the access pattern. Data whose access frequency drops sharply after a week should not sit in hot storage for three years because nobody wrote a lifecycle policy.
- Prefer elastic to provisioned where the load is spiky. And prefer provisioned to elastic where it is steady. The mistake runs in both directions, and defaulting to one without measuring the shape of your traffic is how both overspend and cold-start pain begin.
Make spend visible where decisions happen
Attribution is the unglamorous prerequisite. Until spend can be traced to a team, a service and ideally a feature, every optimisation conversation is a negotiation over an undifferentiated number, and the team best placed to act has no signal.
Consistent resource tagging is tedious and it is the highest-return week of work available to most platform teams. Enforce it at provisioning time: a resource that cannot be attributed should fail to create rather than quietly join the bill.
An unattributed cloud bill is a system with no feedback loop. It will drift in exactly one direction.
The three questions worth asking in review
We fold cost into architecture review rather than running it as a separate exercise. Three questions surface most of the value:
- What does this cost at ten times the current load? Designs that are cheap at today's traffic and ruinous at ten times it are common, and the time to find out is now.
- What is the unit here? Cost per request, per tenant, per transaction, something that divides by a business quantity. Absolute spend rising as the business grows is expected. Unit cost rising is a design defect.
- What happens to this data in a year? Most storage growth is unplanned, and retention is the cheapest decision to make early and the most awkward to make late.
Where the savings usually are
In our experience the recurring offenders are consistent across organisations: data transfer between availability zones that nobody realised was chatty, logging pipelines retaining verbose debug output for years, non-production environments running around the clock, and orphaned resources from experiments whose owners have long since moved teams.
None of these are interesting problems. All of them are ongoing costs that compound quietly. The organisations that stay ahead of them do so not through periodic clean-up campaigns but by making the cost of a decision visible at the moment the decision is made.