Cost is an architectural property. Choose the compute model per workload shape, keep data movement short, tier storage from the beginning, and make spend attributable on the first day — retrofitting attribution is the expensive version.
Match the compute model to the workload shape
There is no generally cheapest option, only a cheapest option per shape.
- Spiky, event-driven, idle much of the time — serverless functions. Nothing at rest, and no capacity planning.
- Steady, long-running, predictable — containers on right-sized instances, then a commitment against that baseline.
- Interruption-tolerant batch — Spot capacity, usually the largest single reduction available.
- Sustained high throughput — dedicated instances on a current-generation family, where per-request serverless pricing stops making sense.
Mixing these deliberately within one system is normal and correct. Applying one model to everything is how estates become expensive.
Respect data gravity
Compute is elastic; data is not. Moving data costs money and time, so design so that it moves as little as possible.
- Keep services that talk constantly in the same availability zone unless resilience genuinely requires otherwise
- Use VPC endpoints rather than routing service traffic through a NAT gateway
- Put a CDN in front of anything served repeatedly to the public internet
- Process data where it lives rather than pulling it to a central service to filter
Tier storage before you have any
Lifecycle rules cost nothing to write on day one and are tedious to apply retroactively to millions of objects. Decide at design time how long each class of data stays hot, when it moves to cheaper storage, and when it expires. Set log retention explicitly — the default of indefinite is a decision, and rarely the one intended.
Make spend attributable on day one
A tagging standard applied from the first resource — environment, service, owner, cost centre — is what makes every later conversation possible. Enforce it in infrastructure code and with tag policies, so untagged resources cannot be created rather than being cleaned up quarterly.
Separate accounts per environment reinforce this and make the boundary a hard one for security as well as for cost.
Build the feedback loop with the system
Budgets, anomaly detection and a cost dashboard alongside the operational one, from the start. The point is not the alert; it is that an unexpected number reaches someone in days rather than at the end of the month, while the change that caused it is still fresh.
One useful discipline: include an estimated monthly cost in the design document for any significant new component. It takes ten minutes and it changes designs.
Cloud & AWS
Cloud infrastructure should scale with the business — not outrun its budget, and not require the person who built it to be reachable at 2am.
Cloud & AWS