How we reduced our cloud bill by 40% without sacrificing performance
The wake-up call
Our monthly AWS bill had grown to $47,000. For a team of 45 engineers, that was not catastrophic, but the trajectory was alarming. Costs were increasing 15% quarter over quarter while traffic was growing at 8%.
We decided to treat cloud cost optimisation as an engineering project, not a finance exercise. The goal was not just to spend less, but to spend wisely.
What we found
The audit revealed several patterns:
- Over-provisioned instances. Most of our EC2 instances were running at 10-15% CPU utilisation. We had sized for peak traffic that occurred twice a year.
- Idle resources. 23 EBS volumes, 8 load balancers, and 12 Elastic IPs were attached to nothing. Combined, they cost $2,400/month.
- Wrong pricing models. We were paying on-demand prices for workloads that ran 24/7. Reserved Instances and Savings Plans could save 30-40% on those.
- Data transfer costs. Cross-AZ traffic was our third-largest cost category. A minor architecture change to keep related services in the same AZ reduced this by 60%.
The changes that moved the needle
We prioritised changes by impact and effort:
Right-sizing (saved $8,200/month). We used AWS Compute Optimiser to identify underutilised instances and downsized 40% of our fleet. No performance impact — most services had been over-provisioned by 3-4x.
Reserved Instances (saved $6,800/month). For our stable, predictable workloads (databases, application servers), we purchased one-year Reserved Instances with no upfront payment.
Spot Instances for batch workloads (saved $3,400/month). Our data processing pipelines and CI/CD runners now run on Spot Instances with automatic failover. The interruption rate was lower than expected — under 5%.
Graviton instances (saved $2,100/month). Migrating from x86 to ARM-based Graviton instances gave us 20% better price-performance for compatible workloads.
The result
Monthly spend dropped from $47,000 to $28,000 — a 40% reduction. More importantly, the engineering team now treats cost as a first-class metric alongside latency and throughput. We added cost dashboards to our monitoring stack and set budget alerts at the service level.
Cloud cost optimisation is not a one-time project. It requires ongoing attention as the platform evolves. But the investment pays for itself quickly.