All insights
Cloud · Cost · AWS · Azure

Taming Your Cloud Bill Without Slowing Your Team Down

October 20263 min read

Cloud costs tend to grow faster than the product. A practical order of operations for getting spend under control without freezing delivery, and where keeping data in Canada fits in.

Why the bill outgrows the product

Nobody sets out to waste money on the cloud. Resources get created by hand for a test and never deleted. Environments are sized for launch day and never revisited. Managed services are picked for speed, which is usually the right call early on. And because the bill arrives as one number at the end of the month, nobody sees which team or feature it belongs to.

Start with visibility, not cuts

Before cutting anything, make the spending visible. Tag every resource with its team, environment and service, and turn on cost allocation in AWS Cost Explorer or Azure Cost Management so the bill breaks down along those lines. Set budgets with alerts, and turn on anomaly detection so a runaway resource shows up in days rather than at the end of the month.

Then review the numbers with the engineers who own the services. They usually know straight away which line items look wrong.

The usual quick wins

Most cloud accounts have the same low-hanging fruit. Idle and orphaned resources: unattached disks, old snapshots, load balancers with nothing behind them, test environments nobody remembers creating. Non-production environments running around the clock when they could shut down at night and on weekends. Instances and databases sized far above what their monitoring shows they use. Storage with no lifecycle rules, keeping everything forever on the most expensive tier. Data transfer between regions or out to the internet is also worth a look, because it rarely shows up in anyone's design.

Decide early what has to stay in Canada

If you sell to government, healthcare or financial services, some customers will require their data to stay in Canada. AWS (Montreal and Calgary), Azure (Toronto and Quebec City) and Google Cloud (Montreal and Toronto) all have Canadian regions, but prices and the services on offer can differ from the big US regions. Decide early which data has to stay in Canada and build for it: a cheaper US region is only a saving if nothing ever needs to move back, and moving data later is far harder than choosing the right region up front.

Commit only after cleaning up

Savings plans, reserved instances and Azure reservations can lower the price of steady workloads in exchange for a commitment. Buy them after the cleanup, not before: committing to a baseline that includes waste locks that waste in for a year or more.

Make cost part of engineering

Lasting savings come from changing how infrastructure is built, not from a one-off cleanup. With infrastructure-as-code, every resource has an owner, a history and a review before it exists. Tools like Infracost can show the cost of a change in the pull request, while it's still cheap to change. Preview and test environments that delete themselves stop the slow build-up of forgotten resources.

Know what not to optimize

Engineering time is expensive too. Don't spend weeks saving a few dollars a month, and don't rearchitect for cost before the basics are done. Reliability comes first: the cheapest setup is no bargain if it takes the product down. The goal is a bill you understand and can predict, with spending that grows in step with the business.

Want a second opinion on your setup?

Book a free 30-minute call. Tell me what's slowing your team down, and you'll leave with a clear next step, whether that's the 2-week review or something you can fix yourselves.

Book a free call