Last quarter, a Series A startup came to us with a problem: their AWS bill had grown from $3,000/month to $18,000/month in six months, while their user base had only doubled. Something was very wrong.
After a week-long audit, we found $7,200/month in waste. Oversized instances. Forgotten dev environments running 24/7. Unattached EBS volumes. A NAT gateway processing terabytes of unnecessary traffic. Classic startup cloud waste.
Here is the playbook we use to cut cloud costs by 30-50% without affecting performance.
Step 1: Know what you are spending
Enable AWS Cost Explorer and set up cost allocation tags. Tag every resource with at least three tags: environment (prod/staging/dev), service, and team. Without tags, your bill is a black box. With tags, you can see exactly which services and teams are driving costs.
Set up billing alerts at 50%, 75%, and 100% of your expected monthly spend. This takes five minutes and prevents surprise bills.
Step 2: Right-size your instances
Most startups run on instances that are 2-4x larger than they need. Pull up CloudWatch metrics for every EC2 instance and RDS database. If average CPU utilization is below 20%, you are overpaying.
Use AWS Compute Optimizer or a tool like Spot.io to get right-sizing recommendations. In our experience, right-sizing alone typically saves 20-30% on compute costs. A t3.xlarge running at 8% CPU should be a t3.medium. An r5.2xlarge database that never uses more than 4GB of RAM should be an r5.large.
Step 3: Kill zombie resources
Every startup has them: EC2 instances nobody remembers launching. EBS volumes detached from any instance. Elastic IPs not associated with anything. S3 buckets full of old deployment artifacts. Load balancers pointing to nothing.
Run a sweep of every resource in every region. Yes, every region. We once found a client running a $400/month instance in ap-southeast-1 that a former engineer had launched for testing and never terminated. Check for:
- Unattached EBS volumes ($0.10/GB/month adds up fast)
- Unused Elastic IPs ($3.65/month each)
- Idle load balancers ($16/month minimum each)
- Forgotten RDS snapshots older than 30 days
- Non-production environments running 24/7 that could be shut down nights and weekends
Step 4: Use Reserved Instances and Savings Plans
If you have been running the same workload for 3+ months and expect to continue for at least a year, buy a 1-year Reserved Instance or Savings Plan. The savings are 30-40% compared to on-demand pricing with no upfront payment, or up to 60% with full upfront payment.
Start with your databases. RDS instances rarely change size or type, making them perfect candidates for reservations. Then look at your core application instances.
Step 5: Optimize data transfer
Data transfer costs are the hidden killer on AWS bills. NAT gateway processing charges ($0.045/GB) are the most common culprit. If your NAT gateway is processing more than 1TB/month, investigate why.
Common fixes: use VPC endpoints for S3 and DynamoDB (free, eliminates NAT gateway traffic for those services), use internal load balancers for service-to-service communication, and put CloudFront in front of your application to reduce origin requests.
Step 6: Automate cost governance
Set up a monthly cost review meeting. It takes 30 minutes. Review the top 10 cost drivers, identify any unexpected increases, and assign action items. The goal is to make cost awareness part of your engineering culture, not a quarterly panic when the CFO asks why the bill is up 40%.
Use tools like Infracost to estimate the cost of infrastructure changes before they are deployed. This catches expensive mistakes in code review instead of on next month is invoice.
Need help cutting your cloud costs?
traztech runs cloud cost audits that typically identify 30-50% savings. We assess your infrastructure, implement optimizations, and set up ongoing cost governance so the waste does not come back.
Book a free strategy call