← All posts
5 min readDiganta Talukdar

Cloud cost optimization: the boring checks we run before anything fancy

Most cloud cost-optimization advice jumps straight to Reserved Instances and Savings Plans. Useful, eventually — but most of the actual savings we find on a first pass come from three much less exciting checks, done before committing to anything for one to three years.

Idle and orphaned resources

Unattached EBS volumes from terminated instances, idle load balancers nobody deleted after a migration, elastic IPs sitting unassociated and quietly billing — none of this shows up unless someone looks for it specifically.

aws ec2 describe-volumes --filters Name=status,Values=available --query "Volumes[].VolumeId"

Right-sizing, before reserving anything

An instance running at 8% average CPU utilization on an m5.2xlarge is a right-sizing problem, not a Reserved Instance opportunity — buying a 1-3 year commitment on the wrong instance size just locks in the waste for longer. Right-size first, using actual CloudWatch utilization data, then decide what's worth reserving.

Cross-AZ and cross-region data transfer

Data transfer between AWS services in different Availability Zones isn't free, and a chatty microservice architecture that wasn't designed with AZ placement in mind can rack up transfer charges that never show up as one obvious line item — they're spread thin across every service that's doing it.

What this doesn't solve

None of this fixes an architecture that's fundamentally expensive to run — a design that fans out into dozens of chatty microservices for a workload that didn't need them isn't a cost-dashboard problem, it's a redesign. Cost review finds waste; it doesn't replace an honest look at whether the architecture fits the actual scale.

AWSCost OptimizationCloud

Need this done on your infrastructure?