Introduction
AWS cost optimization is one of the most underutilized ways to reduce infrastructure expenses. For companies running on AWS, computing costs typically represent 40-60% of the total cloud bill. By understanding the differences between Reserved Instances (RIs), Savings Plans, and On-Demand pricing, you can reduce costs by 30-70% without changing your architecture.
This guide provides practical strategies for optimizing AWS costs with real calculations and implementation examples.
Why AWS Cost Optimization Matters
The Cost Problem
Most organizations start with On-Demand pricing:
- On-Demand EC2: $0.0965/hour for t3.medium in us-east-1
- Annual cost for 1 instance: $0.0965 ร 24 ร 365 = **$845/year**
- For 100 instances: $84,500/year
The Optimization Solution
With Reserved Instances or Savings Plans:
- RI price: $0.0483/hour (50% savings)
- Annual cost for 100 instances: $42,250/year
- Savings: $42,250/year (50% reduction)
This scales rapidly as your infrastructure grows.
On-Demand Pricing: Baseline
On-Demand pricing means you pay for every hour of compute time without any commitment.
Pros
- Maximum flexibility
- Pay only for what you use
- No commitment required
- Easy to scale up/down
Cons
- Highest per-unit cost
- Unpredictable bills
- Poor ROI for steady-state workloads
Use Case
On-Demand is appropriate for:
- Development/testing environments
- Unpredictable workloads
- Temporary infrastructure
- Short-term testing
Reserved Instances (RIs): Deep Discount Commitment
A Reserved Instance is a commitment to use a specific instance type in a specific region for 1 or 3 years.
How RIs Work
On-Demand Price: $0.0965/hour
1-Year RI Discount: -40% = $0.0579/hour
3-Year RI Discount: -50% = $0.0483/hour
Monthly Savings (100 instances, 1-year RI):
= (0.0965 - 0.0579) ร 24 ร 30 ร 100
= $0.0386 ร 720 ร 100
= $2,779/month
= $33,350/year
RI Payment Options
-
All Upfront
- Largest discount (up to 50%)
- Pay entire 1-3 year cost upfront
- Best for predictable, long-term workloads
- Example: $420 upfront for t3.medium (1-year, all upfront)
-
Partial Upfront
- Medium discount (25-40%)
- Pay ~30% upfront, rest monthly
- Good balance of savings and flexibility
- Example: $130 upfront + $30/month
-
No Upfront
- Smallest discount (10-20%)
- Monthly payments, no upfront cost
- Better cash flow management
- Example: $35/month with no upfront
RI Flexibility
RIs are locked to:
- Instance family (e.g., t3, m5, c5)
- Instance size (e.g., medium, large, xlarge)
- Availability Zone (optional)
- Region (e.g., us-east-1)
Limitations:
- Cannot change region
- Changing instance size within family has fees
- Non-transferable (generally)
Real-World RI Example
Scenario: Running 10 t3.medium instances in us-east-1 for 3 years
On-Demand Cost:
= $0.0965/hour ร 24 hours ร 365 days ร 3 years ร 10 instances
= $0.0965 ร 262,800 ร 10
= $253,452
3-Year All-Upfront RI Cost:
= $1,051 upfront ร 10
= $10,510
= Total 3-year cost: $10,510
= Hourly equivalent: $0.0483/hour
Savings = $253,452 - $10,510 = $242,942 (96% savings!)
Savings Plans: Modern Alternative
AWS Savings Plans (introduced 2019) offer more flexibility than RIs while maintaining significant discounts.
How Savings Plans Work
You commit to spending a dollar amount (not instance count) for 1 or 3 years.
On-Demand: $0.0965/hour ร 730 hours = $70.45/month
Savings Plan (1-year): $42.10/month (40% discount)
Savings Plan (3-year): $35.14/month (50% discount)
Types of Savings Plans
1. Compute Savings Plans (Most Flexible)
- Apply to any instance type, region, or size
- Can switch between EC2, Fargate, and Lambda
- Best for dynamic workloads
- 30-40% discount (1-year), 40-50% discount (3-year)
2. EC2 Instance Savings Plans (Medium Flexibility)
- Apply to specific instance family (e.g., t3, m5)
- Work across sizes and regions within family
- 35-45% discount (1-year), 45-55% discount (3-year)
3. DynamoDB & SageMaker Savings Plans
- Service-specific
- Simpler to calculate
Savings Plans vs RIs: Key Differences
| Feature | RI | Savings Plan |
|---|---|---|
| Flexibility | Low | High |
| Discount Range | 30-50% | 30-50% |
| Can switch instance size | Limited | Yes (compute plans) |
| Can switch region | No | Yes (compute plans) |
| Supports different services | No | Compute plans do |
| Purchase complexity | Moderate | Lower |
| Pricing | Per instance | Per $ committed |
Head-to-Head Comparison: RI vs Savings Plans
Scenario: Mixed workload with changing instance needs
Workload:
- Start with 5x t3.medium instances ($352.50/month on-demand)
- After 6 months, need to scale to 3x t3.large instances
- Need flexibility across regions
With Reserved Instances:
- Purchase 5x t3.medium 1-year RIs: $1,740
- After 6 months, can’t easily convert to t3.large
- If you want to switch, you lose savings or buy new RIs
- Total cost: $1,740 + new RI purchases
With Compute Savings Plans:
- Commit to $200/month compute spending (1-year plan)
- Upfront: $2,000 (less than RIs for same period)
- Can switch to 3x t3.large after 6 months without penalty
- Savings apply automatically
- Total cost: $2,000 (fixed)
Winner: Savings Plans (more flexibility, similar cost)
Spot Instances: Ultra-Low Cost Option
Spot Instances are unused AWS capacity at 70-90% discounts. The tradeoff: AWS can interrupt them with 2-minute notice.
When to Use Spot
- Batch jobs (data processing, analytics)
- Fault-tolerant workloads
- CI/CD pipelines
- Development/testing
- Time-insensitive tasks
When NOT to Use Spot
- Production databases
- Long-running services
- Real-time applications
Cost Example
t3.medium pricing:
- On-Demand: $0.0965/hour
- 1-Year RI: $0.0579/hour
- Spot: $0.0289/hour (70% discount)
For 100 instances running 24/7:
- On-Demand: $84,500/year
- 1-Year RI: $50,700/year
- Spot: $25,300/year
Implementation Strategy
Step 1: Analyze Current Usage (Week 1)
Use AWS Cost Explorer:
- Go to AWS Cost Management โ Cost Explorer
- Filter by service (EC2)
- View last 3 months of compute usage
- Identify sustained, predictable workloads
What to look for:
- Instances running 24/7
- Consistent instance types
- Production vs development
Step 2: Calculate Savings Potential (Week 1)
For each instance type:
Monthly On-Demand Cost = $X
Estimated RI Savings = $X ร 50%
Annual Savings = (Monthly Savings ร 12)
Payback Period = RI Cost / Monthly Savings
Step 3: Purchase RIs or Savings Plans (Week 2)
For predictable, steady-state workloads: Reserve Instances For flexible/changing workloads: Savings Plans
- Go to EC2 โ Reserved Instances
- Click “Purchase Reserved Instances”
- Select instance type, term, payment option
- Review hourly cost and commit
Step 4: Implement Spot for Dev/Test (Week 2)
- Identify non-critical workloads
- Launch Spot instances instead of On-Demand
- Set max price based on On-Demand price
- Use Spot Fleet for multi-instance deployments
Step 5: Monitor and Optimize (Ongoing)
Track RI utilization:
- Cost Explorer โ Reserved Instance Utilization
- Aim for >80% utilization
- Adjust future purchases based on patterns
Real-World Case Studies
Case Study 1: SaaS Company (100 EC2 instances)
Before:
- 100x t3.large instances (on-demand)
- Monthly cost: $7,104
- Annual cost: $85,248
Optimization:
- Purchase 100x t3.large 3-year RIs (all upfront)
- Cost: $35,700 upfront
- New hourly rate: $0.049 (vs $0.0965)
Results:
- Year 1 savings: $49,548
- Year 2 savings: $49,548
- Year 3 savings: $49,548
- 3-year total savings: $113,880 (58% reduction)
Case Study 2: Data Pipeline Company (Mixed workload)
Before:
- 20x m5.xlarge for production (on-demand)
- 50x t3.medium for development (on-demand)
- Monthly cost: $4,500
- Annual cost: $54,000
Optimization:
- Purchase 20x m5.xlarge 1-year RIs: $7,500
- Implement Spot Fleet for dev (20 instances): $200/month
- Use Savings Plans for burst capacity: $1,500/year
Results:
- RI savings: $2,400/year
- Spot savings: $14,400/year
- Savings Plan optimization: $1,500/year
- Total annual savings: $18,300 (34% reduction)
Common Mistakes to Avoid
Mistake 1: Over-Purchasing RIs
Problem: Buy RIs for capacity you don’t use
Solution:
- Start with conservative estimates
- Monitor utilization monthly
- Only commit to proven, sustained workloads
Mistake 2: Not Using Savings Plans
Problem: Remaining on-demand because you’re uncomfortable with RIs
Solution:
- Savings Plans offer 80% of RI savings with more flexibility
- No downside to switching from on-demand
Mistake 3: Ignoring Spot Instances
Problem: Running dev/test on on-demand or RIs
Solution:
- Dev/test should be 90% Spot
- Save RIs/Savings Plans for production
Mistake 4: Not Considering Different Services
Problem: Buying RIs for EC2 but ignoring RDS, ElastiCache
Solution:
- Apply savings plans to all applicable services
- RDS Reserved Instances: 30-55% savings
- ElastiCache: 35-50% savings
Tools and Automation
AWS Compute Optimizer
Provides RI/Savings Plan recommendations:
- Analyze current usage patterns
- Recommend optimal instance types
- Estimate savings with different options
Trusted Advisor
Identifies under-utilized RIs and opportunity purchases
Third-Party Tools
- CloudHealth by VMware: Advanced cost analytics
- Cloudability: Detailed cost tracking and recommendations
- Kubecost: For Kubernetes workloads on AWS
Decision Matrix
Choose Reserved Instances IF:
โ Workload is predictable
โ Instance type won't change for months
โ Can commit to 1-3 year terms
โ Want maximum discount
โ Upfront budget available
Choose Savings Plans IF:
โ Need instance type flexibility
โ Workload varies by size/type
โ Want 80% of RI savings with flexibility
โ May change regions
โ Prefer predictable monthly billing
Choose Spot IF:
โ Workload is fault-tolerant
โ Can handle interruptions
โ Development/testing workload
โ Batch processing jobs
โ Need 70%+ discount
Choose On-Demand IF:
โ Unpredictable workload
โ Short-term infrastructure
โ Don't know usage patterns yet
โ Prototyping new systems
Glossary
- Reserved Instance (RI): Commitment to specific instance for 1-3 years
- Savings Plan: Dollar-amount commitment offering flexibility
- Spot Instance: AWS excess capacity at steep discount
- On-Demand: Pay-per-hour without commitment
- Utilization: Percentage of time instance is used
- Upfront Payment: Initial cost paid at purchase
Resources
- AWS Pricing Documentation
- AWS Cost Optimization Best Practices
- AWS Compute Optimizer
- EC2 Instance Types Comparison
- AWS Cost Estimator
Comments