A client came to us with a $22,000/month AWS bill and a suspicion they were over-provisioned. After a two-week audit and a phased migration, we brought that to $13,000/month — a 41% reduction — with zero downtime and no performance regressions.
What We Found
- RDS instances sized for peak Black Friday load running 24/7 at 8% CPU average
- Lambda functions with 3 GB memory allocations that needed 200 MB
- S3 buckets with no lifecycle policies accumulating years of stale logs
- NAT Gateway charges from services that could use VPC endpoints
- On-demand EC2 for stable, predictable batch workloads
The Five Fixes
- Right-sized RDS to the appropriate instance class with read replicas for reporting queries
- Profiled and reduced Lambda memory across 60 functions using AWS Lambda Power Tuning
- Added S3 Intelligent-Tiering and lifecycle rules to archive logs after 30 days
- Replaced NAT Gateway traffic with VPC endpoints for S3 and DynamoDB
- Moved batch jobs to Spot Instances with an on-demand fallback
Cloud cost is an engineering problem. The tools to fix it exist — the gap is usually just time and attention. An audit pays for itself in weeks.
