Most AWS environments have 20-40% waste hiding in plain sight—oversized instances, idle resources, suboptimal pricing models. The challenge isn't finding savings; it's knowing where to look and what trade-offs matter for your specific workloads.
Key Optimization Areas
Right-Sizing
Match EC2, RDS, and Lambda resources to actual utilization. Most instances run at 10-30% CPU—that's money left on the table.
Pricing Models
Reserved Instances and Savings Plans can cut compute costs 30-70% for predictable workloads. Spot Instances work well for fault-tolerant jobs.
Waste Elimination
Orphaned EBS volumes, unused Elastic IPs, old snapshots, idle load balancers—these accumulate quietly and add up fast.
Storage Optimization
S3 Intelligent-Tiering, lifecycle policies, and proper storage class selection can dramatically reduce storage costs.
Common Cost Mistakes I See
After years of reviewing AWS environments, certain patterns show up repeatedly:
- Dev/test environments running 24/7 — A simple Lambda that stops non-production resources at 6pm and starts them at 8am can cut those costs by 60%.
- Default storage classes everywhere — S3 Standard costs 3x more than Infrequent Access for data you rarely touch. Most teams have terabytes of logs and backups in the wrong tier.
- Over-provisioned RDS instances — That db.r5.2xlarge running at 15% CPU? It's costing you $500/month more than necessary.
- NAT Gateway data transfer — At $0.045/GB, NAT Gateway costs add up fast. VPC endpoints for S3 and DynamoDB are often free or nearly free.
- CloudWatch Logs retention — Default is "never delete." Most teams don't need 5 years of Lambda logs.
My Approach
I start with visibility—you can't optimize what you can't measure. Cost allocation tags, detailed billing analysis, and custom dashboards give you the foundation to make informed decisions.
From there, I prioritize by impact. Quick wins first (idle resources, obvious right-sizing), then structural changes (Reserved Instances, architecture improvements). The goal is sustainable cost management, not a one-time cleanup that drifts back within months.
For .NET and Node.js workloads specifically, I focus on Lambda memory tuning, DynamoDB capacity modes, and container resource optimization—areas where small changes can have outsized impact.
I also help teams build cost awareness into their development process—tagging standards, budget alerts, and architecture review checkpoints that catch expensive decisions before they hit production.
Serverless Cost Optimization
Serverless promises pay-per-use pricing, but the reality is more nuanced. Lambda bills by memory-milliseconds, so an over-provisioned function running millions of times adds up quickly. DynamoDB's on-demand mode is convenient but can be 5-7x more expensive than provisioned capacity for predictable workloads.
I've written extensively about serverless optimization patterns—including when Lambda isn't the right choice and ECS or EC2 would actually be cheaper.
Frequently Asked Questions
How much can I realistically save on my AWS bill?
Most AWS environments have 20-40% waste. For a company spending $50K/month on AWS, that's $10K-20K in potential monthly savings. Quick wins like right-sizing and eliminating unused resources typically deliver 10-15% savings within weeks. Larger savings from Reserved Instances and architectural changes take longer but compound over time.
What's the difference between Reserved Instances and Savings Plans?
Reserved Instances lock you into specific instance types in specific regions for 1-3 years at 30-60% discounts. Savings Plans are more flexible—you commit to a dollar amount of compute usage per hour, and AWS applies discounts automatically across instance types and regions. For most teams, Compute Savings Plans offer the best balance of savings and flexibility.
How long does an AWS cost audit take?
A focused cost audit typically takes 1-2 weeks. The first few days involve analyzing your AWS Cost Explorer data, billing reports, and architecture. The remaining time is spent identifying specific optimization opportunities and building a prioritized roadmap. You'll have actionable recommendations within the first week.
Should I use Spot Instances to save money?
Spot Instances offer 60-90% discounts but can be terminated with 2 minutes notice. They work well for batch processing, CI/CD builds, and stateless workloads that can handle interruptions. For production APIs or databases, stick with On-Demand or Reserved capacity. Many teams use a mix: Reserved for baseline, On-Demand for peaks, Spot for batch jobs.
Why is my serverless bill so high?
Common serverless cost traps include: over-provisioned Lambda memory (you pay for memory even if you don't use it), DynamoDB in provisioned mode when on-demand would be cheaper (or vice versa), excessive CloudWatch Logs retention, and API Gateway costs at high volume. Lambda is cost-effective for sporadic workloads but can be expensive for sustained high-throughput—sometimes ECS or EC2 is actually cheaper.
📖 Complete Guide to AWS Cost Optimization for SaaS
A 25-minute deep dive covering Reserved Instances vs. Savings Plans, serverless cost patterns, database optimization, network costs, and multi-tenant considerations.
Read the Full Guide →