How to Cut Your AWS Bill Without Sacrificing Performance

Veld Systems||4 min read

AWS bills have a way of growing 20-30% per quarter without anyone noticing. Then someone finally looks at the invoice and panics. Here are the strategies that consistently save 30-50% without degrading performance.

Start With Visibility

Before optimizing anything, understand where the money goes. Enable AWS Cost Explorer and tag every resource by team, environment, and service. Without tags, you are optimizing blind.

The typical breakdown for a web application: EC2/compute (35-45%), RDS/database (20-30%), data transfer (10-15%), S3 storage (5-10%), and everything else (10-20%). Your numbers will vary, but compute and database are almost always the biggest targets.

Right Size Your Instances

Most EC2 instances are over provisioned. Check CloudWatch metrics, if your average CPU utilization is below 30%, you are probably paying for 2-3x more compute than you need.

Action: Use AWS Compute Optimizer to get right sizing recommendations. Downsize instances during off hours using Auto Scaling scheduled actions. A t3.xlarge running 24/7 costs $120/month. If you only need that capacity 8 hours/day, scaling down to t3.medium off peak saves $60/month per instance. Multiply that across your fleet.

Graviton instances. ARM based Graviton instances (t4g, m7g, c7g) offer 20-40% better price performance than equivalent x86 instances. Most Node.js and Python workloads run without modification. The migration is usually a one line change in your infrastructure config.

Reserved Instances and Savings Plans

If you have stable baseline workloads, reserved instances save 30-60% over on demand pricing.

Compute Savings Plans are the most flexible option, commit to a dollar amount per hour for 1 or 3 years, and the discount applies automatically to any EC2, Fargate, or Lambda usage. A $100/month commitment at 1-year no upfront saves roughly 20% instantly.

Reserved instances for RDS save even more,30-40% for 1-year terms. If your database has been running for 6+ months without changing size, reserve it.

Spot instances for non critical workloads (batch processing, CI/CD, dev environments) save 60-90%. Implement graceful interruption handling and you get near free compute for anything that can tolerate occasional restarts.

Storage Optimization

S3 lifecycle policies. Move objects to S3 Infrequent Access after 30 days and Glacier after 90 days. For a startup with 1TB of logs and backups, this typically saves $15-20/month. Small per item, but it adds up and is fully automated once configured.

EBS volumes. Delete unattached EBS volumes, they still cost money even when not connected to an instance. Switch from gp2 to gp3 volumes for a free 20% cost reduction with better baseline performance. Check for oversized volumes where actual usage is well below provisioned size.

Data transfer. Use CloudFront CDN to reduce origin data transfer costs. A CDN cache hit rate of 80% can cut your data transfer bill in half. Enable compression for API responses, gzip reduces bandwidth by 60-80% for JSON payloads. This also improves frontend performance.

Database Optimization

RDS right sizing. Same principle as EC2, check if your database instance CPU and memory usage justify the instance size. RDS pricing is roughly 30% higher than equivalent EC2, so over provisioning hurts more.

Read replicas vs scaling up. Instead of upgrading to a larger instance for read heavy workloads, add a read replica and route read queries to it. A db.t3.medium replica costs $50/month vs upgrading your primary from db.t3.large to db.t3.xlarge at $100/month extra.

Aurora Serverless v2 for variable workloads scales automatically and you pay per ACU-hour. If your database has significant idle periods, this can save 40-60% compared to provisioned instances. We have used this pattern on projects like GameLootBoxes where traffic is highly variable.

Automate Cost Monitoring and Controls

Manual cost reviews catch problems weeks too late. Automate the detection:

AWS Cost Anomaly Detection uses machine learning to identify unexpected spending patterns. It catches things like: a developer accidentally launching 10 large instances, a misconfigured auto scaling group that never scales down, or a sudden spike in data transfer from a new deployment. Set it up in 5 minutes and it runs continuously for free.

AWS Budgets. Set alerts at 80% and 100% of your expected monthly spend. Combined with anomaly detection, you catch both gradual cost drift and sudden spikes.

Tag enforcement. Require tags on every resource using AWS Organizations tag policies. Untagged resources are invisible to cost allocation, and invisible costs are the ones that grow unchecked. Enforce at minimum: environment (prod/staging/dev), team, and service tags.

Weekly cost reports. Send automated cost summaries to your team Slack channel every Monday. Include: total spend vs budget, top 5 cost increasing services, and any new resources created in the past week. Visibility alone reduces waste, engineers make better decisions when they see the impact.

Scheduled scaling. Reduce capacity during nights and weekends for non production environments. A simple Lambda function that stops dev instances at 8pm and starts them at 8am saves 60% on those resources.

Kill Zombie Resources

Run a monthly audit for: unused Elastic IPs ($3.60/month each), idle load balancers ($18/month each), unattached EBS volumes, old AMI snapshots, unused NAT Gateways ($32/month plus data processing), and forgotten dev/staging environments running full size instances.

A single forgotten staging environment can cost $200-500/month. We have seen clients save $1,000+ per month just by cleaning up resources from projects that ended months ago. The first audit usually finds 15-20% in savings. Subsequent monthly reviews maintain discipline and catch cost drift before it becomes a problem.

Our cloud and DevOps practice includes cost optimization as part of every infrastructure engagement. We typically find 30-50% in savings during the initial CI/CD and infrastructure audit.

Want us to audit your AWS bill? We will find the savings and implement the fixes.

Ready to Build?

Let us talk about your project

We take on 3-4 projects at a time. Get an honest assessment within 24 hours.