The situation
Axiom Media is a 35-person SaaS company in Vancouver building digital infrastructure for media publishers. They had grown from a small team to a meaningful operation over four years — and their AWS bill had grown with them, unchecked.
By the time they came to us, their AWS bill had reached $28,000 per month. The engineering team assumed this was the cost of operating at their scale. Finance had flagged it as a concern but had no way to dig into the detail. Nobody owned it.
No cost allocation tags. No budget alerts. No one looking at a utilization report. Just a monthly invoice that kept going up.
"We assumed our cloud costs were what they were — the price of scale. We had no idea 38% of what we were spending was on resources doing nothing."
— CTO, Axiom MediaThe audit
We started with a two-week deep audit — no changes, just visibility. We pulled 90 days of billing data, enabled Cost Explorer with granular resource-level tagging, and mapped every service to its owner, environment, and purpose.
What we found would be familiar to most unmanaged AWS environments:
- $4,200/month in EC2 instances running at under 15% average CPU — over-provisioned during a growth phase and never downsized
- $2,800/month in completely idle resources: stopped instances, unattached EBS volumes, old AMI snapshots, and 14 unused Elastic IPs
- $1,900/month in dev and staging environments running 24/7 — including a full production mirror that hadn't been used in 11 months
- $3,600/month in on-demand pricing for steady-state workloads that qualified for Savings Plans
- $800/month in S3 storage on Standard tier for data accessed less than once a quarter
Total identified waste and inefficiency: $13,300/month — 47% of their total bill. Not all of it was recoverable immediately, but the path was clear.
What we did
Month 1: Delete the obvious
Working with the engineering team to confirm ownership before touching anything, we systematically deleted or snapshotted idle resources, stopped the unused production mirror, and scheduled all dev and staging environments to shut down outside business hours. No code changes. No architectural risk. These actions alone recovered $4,200/month in the first 30 days.
Month 2: Rightsize and optimize
We pulled 14 days of CPU and memory utilization for every running instance. Seventeen EC2 instances were running at under 20% average CPU — we downsized each one, testing in staging first, then rolling to production. We also migrated eligible S3 data to Intelligent-Tiering, which automatically moves objects to cheaper storage classes based on access patterns.
This phase recovered another $3,400/month.
Month 3: Lock in commitments and build governance
With the environment rightsized and waste eliminated, we had a clear picture of baseline usage. We purchased a 1-year Compute Savings Plan covering 70% of their steady-state EC2 usage — locking in a 36% discount versus on-demand pricing. The remaining 30% stays on-demand to accommodate variable workloads.
We also built the governance layer that keeps savings permanent:
- Mandatory tagging policy enforced via AWS Service Control Policies — resources without owner, environment, and project tags can't be created
- Monthly budget alerts per team at 80% and 100% threshold
- Automated Lambda function that identifies and flags idle resources weekly
- Scheduled auto-shutdown for all dev/staging environments
- Monthly FinOps review cadence with the CTO and engineering leads
"In 90 days, our cloud bill went from a black box to the most transparent line item in our P&L. We know exactly what we're spending, why, and who owns it."
— CTO, Axiom MediaSavings breakdown
The tech stack
Results at 6 months
- Monthly AWS spend: $16,000 (down from $28,000)
- Annual savings: $144,000 — recurring, not one-time
- Cloud waste percentage: under 8% (industry benchmark is ~32%)
- Resource tagging compliance: 100% — enforced by policy
- Budget alerts: zero overruns in the 4 months since implementation
- Engineering time spent on cost management: 2 hrs/month (FinOps review) vs. previously untracked