The Seven Types of Cloud Waste
- Idle resources: Instances, databases, load balancers running with zero or near-zero traffic
- Over-provisioning: Resources sized for peak load that never materializes
- Zombie workloads: Old projects, feature branches, experiments never cleaned up
- Unused commitments: Reserved Instances or Savings Plans not matched to any usage
- Expensive storage tiers: Old data left in hot storage instead of tiered to cheaper options
- Data transfer inefficiency: Cross-AZ or cross-region traffic that could be avoided
- Suboptimal licensing: BYOL opportunities missed, over-licensed databases
Finding Idle Resources
AWS Trusted Advisor's "Low Utilization Amazon EC2 Instances" check automates this for you — available in the free tier, with more detail at Business/Enterprise support levels.
Over-Provisioned Resources
Use AWS Compute Optimizer (free) for EC2, Lambda, EBS, and ECS recommendations. It analyzes 14 days of CloudWatch metrics and recommends optimal instance types and sizes. Enable it in all regions; check recommendations monthly. Typical finding: 20–30% of instances are 2x or more over-sized.
For RDS: check the "FreeStorageSpace" and "CPUUtilization" metrics. A db.r5.2xlarge running at 8% CPU for 30 days is a strong right-sizing candidate. CloudWatch's Database Insights (for Aurora) provides query-level analysis for performance vs cost tradeoffs.
Unused Reserved Instances and Savings Plans
An RI with 0% utilization is pure waste — you pay for capacity you're not using. Check RI utilization in AWS Cost Explorer under "Reservation Utilization Reports." Any RI below 80% utilization for 2+ months should be sold on the RI Marketplace (Standard RIs) or exchanged for a better-matching Convertible RI.
Automating Waste Prevention
Tagging enforcement: Resources without tags get automatically flagged and owned by a "waste" cost bucket that makes the cost visible to leadership.
Instance Scheduler: AWS Instance Scheduler stops non-production instances on a schedule. A typical eng team saves $8K–$25K/month from this alone.
Automated cleanup policies: Lambda function that terminates EC2 instances with the "Temporary" tag after 7 days. Deletes EBS snapshots older than 90 days. Removes unused AMIs.
Harness AutoStopping: Stops cloud resources when network traffic drops to zero, restarts instantly on demand. Best for dev/test environments accessible via browser or SSH.