The Situation
A London fintech startup was running a $18,000/month AWS bill. They were growing fast — 35% month-over-month in active users — but costs were growing even faster. The AWS bill had tripled in six months. The CTO suspected over-provisioning. He was right, but the picture was considerably more complicated than a few oversized instances.
They had no resource tagging strategy, no reserved instances, no S3 lifecycle policies, and a VPC architecture that was generating substantial cross-region data transfer costs that nobody had noticed. Everything had been stood up quickly to hit product milestones. Optimisation had never happened.
“We knew we were spending too much. We just didn't know where. Every service looked like it might be necessary.” — CTO, London Fintech
The Audit
We ran a full infrastructure audit over two weeks — pulling CloudWatch metrics, Cost Explorer data, and resource utilisation reports. Four categories of waste emerged:
34% of EC2 instances idle >80% of the time
Development and staging environments left running around the clock, including weekends.
RDS instances 3× over-provisioned
Database instances had been sized for a peak load that had never materialised. CPU utilisation was averaging 8%.
No S3 lifecycle policies
$2,100/month in storage costs on objects that had not been accessed in over a year.
Cross-region data transfer costs
Microservices deployed in eu-west-1 were making API calls to services in us-east-1. $1,800/month in avoidable transfer fees.
AWS Spend Breakdown
Before optimisation — $18,000/month
What We Fixed
Over six weeks, we implemented changes across five areas. All changes were applied incrementally with rollback plans in place — a regulated fintech cannot afford a production incident caused by an optimisation sprint.
Right-sized all EC2 instances
Moved from m5.2xlarge to t3.medium for 14 instances based on actual CPU/memory utilisation over 30 days.
Reserved instances for stable workloads
1-year reserved instances on production database and app servers. 38% saving on those specific resources.
S3 intelligent tiering + lifecycle rules
Objects older than 90 days moved to Glacier. Objects older than 365 days deleted after confirming with the data team.
VPC restructure
Moved all microservices to eu-west-1. Cross-region transfer cost eliminated.
CloudWatch cost anomaly alerts
Alerts configured to trigger if daily spend exceeds 120% of the 30-day average. The team now gets a Slack alert before a problem becomes a surprise on the monthly bill.
The Result
$10.8k
monthly bill (was $18k)
40%
cost reduction
0
performance degradation
Monthly spend dropped from $18,000 to $10,800. A 40% reduction with zero impact on application performance or reliability. The team now has a real-time cost visibility dashboard — something they never had before. And with the anomaly alerts in place, they will catch the next cost spike before it appears on a bill.
Monthly AWS Spend
Before vs. after optimisation
Get a free cloud cost audit
We will review your AWS or GCP setup and identify your biggest cost reduction opportunities — no commitment required.
Book a Free Audit →