AWS Builder Center
A comprehensive cost optimization savings plans vs reserved instances(RI)

A comprehensive cost optimization savings plans vs reserved instances(RI)

AWS Cost Optimization: Savings Plans vs Reserved Instances When it comes to reducing AWS costs, two primary discount mechanisms stand out: Savings Plans and Reserved Instances (RIs). Both offer significant savings over On-Demand pricing, but they work differently and suit different use cases. Understanding when to use each can save your organization thousands of dollars annually.

AWS Community Hero, Dir.-CFO at Electromech Cloudtech Pvt Ltd, AWS UG & Women-in-tech Leader





Key Topics Covered:

• What AWS Resource Explorer is and its benefits
• Setup and configuration with AWS CLI commands
• Three detailed hands-on scenarios with real examples

Hands-On Examples:

1. Finding Untagged Resources - Identify resources missing governance tags with automated tagging script
2. Cost Optimization Discovery - Find stopped instances, empty S3 buckets, unused EIPs, and unattached volumes
3. Security Compliance Audit - Audit IAM roles, KMS keys, secrets, and security groups
Practical Elements:
• Complete AWS CLI commands for each scenario
• Automated scripts for cost analysis and security auditing
• Advanced search techniques with complex queries
• CloudWatch integration for monitoring
• Lambda function example for automated reporting
• Troubleshooting guide and best practices
The blog provides actionable code that readers can immediately use to discover, analyze, and manage their AWS resources more effectively across multiple accounts and regions.

What Are Savings Plans?

Savings Plans are flexible pricing models that provide savings of up to 72% on AWS compute usage. You commit to a consistent amount of usage (measured in $/hour) for a 1 or 3-year term, and AWS automatically applies the discount to eligible services.
What Are Reserved Instances?
Reserved Instances provide up to 75% discount compared to On-Demand pricing. You reserve specific instance types in specific regions for 1 or 3-year terms, receiving a discount in exchange for this commitment.

Key Differences

Feature
Savings Plans
Reserved Instances
Flexibility
High — applies across instance families, sizes, regions
Low — tied to a specific instance type and region
Commitment
Spend per hour
Specific instance setup
Coverage
EC2, Lambda, Fargate
EC2, RDS, ElastiCache, Redshift, and more
Payment Options
All Upfront, Partial Upfront, No Upfront
All Upfront, Partial Upfront, No Upfront
Convertibility
Not available (It is default flexible)
Convertible RIs can be exchanged
Maximum Discount
Up to 72%
Up to 72%

Flexibility Matrix (Green = High, Yellow = Medium, Red = Low)



Practical Example: E-commerce Application

Let's compare both options for a typical e-commerce workload:

Current Usage

Production: 10x m5.large instances (24/7)
Staging: 5x m5.xlarge instances (12 hours/day)
Development: 3x t3.medium instances (8 hours/day)
Region: us-east-1

On-Demand Costs (Monthly)
Production: 10 × $0.096/hour × 24 × 30 = $691.20
Staging: 5 × $0.192/hour × 12 × 30 = $345.60
Development: 3 × $0.0416/hour × 8 × 30 = $29.95
Total Monthly: $1,066.75
Annual Cost: $12,801

Option 1: Reserved Instances Approach

RI Purchase Strategy

# Purchase RIs for predictable workloads
aws ec2 purchase-reserved-instances-offering \
    --reserved-instances-offering-id "ri-offering-12345" \
    --instance-count 10 \
    --limit-price 0.062
# Production: 10x m5.large Standard RIs (3-year, Partial Upfront)
# Cost: $0.062/hour (35% discount)
RI Cost Breakdown
Workload
Instance Type
Quantity
RI Rate
Monthly Cost
Annual Savings
Production
m5.large
10
$0.062/hr
$446.40
$2,937.60
Staging
m5.xlarge
5
On-Demand
$345.60
$0
Development
t3.medium
3
On-Demand
$29.95
$0
Total



$821.95
$2,937.60
Annual Cost with RIs $9,863.40
Total Savings: $2,937.60 (23%)

Option 2: Savings Plans Approach

Compute Savings Plan Purchase

# Purchase Compute Savings Plan
aws savingsplans create-savings-plan \
    --savings-plan-type "Compute" \
    --term-duration-in-years 3 \
    --payment-option "PartialUpfront" \
    --commitment 0.50 \
    --upfront-payment-amount 5400 \
    --tags Key=Purpose,Value=CostOptimization
Savings Plan Cost Analysis
  • Commitment: $0.50/hour ($4,380/year)
  • Discount Rate: 66% for m5.large, 64% for m5.xlarge, 45% for t3.medium
  • Flexibility: Covers all instance types and sizes
Item
Usage
Price/hr
Monthly
Annual
Production
240 hrs
$0.033
$237.60
$5,443.20
Staging
180 hrs
$0.069
$372.60
$876.00
Development
72 hrs
$0.023
$49.68
$242.16
Total


$659.88
$6,561.36
Annual Cost with Savings Plan: $7,918.56
Total Savings: $4,882.44 (38%)

Detailed Comparison Table

Aspect
RIs
Savings Plans
Best For
Predictable, steady workloads
Variable, flexible workloads
Commitment
Specific instance setup
Spend per hour
Regional
Tied to region/AZ
Works across regions
Family
None (Standard RIs)
Full flexibility
Size
Limited within family
Full flexibility
OS
Limited
Full flexibility
Tenancy
Limited
Full flexibility
Coverage
EC2, RDS, ElastiCache, etc.
EC2, Lambda, Fargate
Marketplace
Sell unused RIs
No transfers
Changes
Limited changes
No changes needed

When to Use Reserved Instances



Ideal Scenarios

1. Predictable Workloads
   # Database servers running 24/7
   aws rds purchase-reserved-db-instances-offering \
       --reserved-db-instances-offering-id "rds-offering-67890" \
       --db-instance-count 2
2. Specific Database Requirements
   - RDS instances with consistent usage
   - ElastiCache clusters
   - Redshift data warehouses
3. Maximum Discount Priority
   - When you need the highest possible discount (up to 72%)
   - Long-term stable architecture

RI Management Example

# Monitor RI utilization
aws ce get-reservation-utilization \
    --time-period Start=2024-01-01,End=2024-01-31 \
    --group-by Type=DIMENSION,Key=SERVICE
# Modify RI attributes
aws ec2 modify-reserved-instances \
    --reserved-instances-ids r-1234567890abcdef0 \
    --target-configurations AvailabilityZone=us-east-1b,InstanceCount=5,InstanceType=m5.xlarge

When to Use Savings Plans

Ideal Scenarios

1. Dynamic Workloads
   # Auto-scaling applications
   aws application-autoscaling register-scalable-target \
       --service-namespace ecs \
       --scalable-dimension ecs:service:DesiredCount \
       --resource-id service/my-cluster/my-service \
       --min-capacity 2 \
       --max-capacity 20
   
2. Multi-Region Deployments
   - Applications spanning multiple regions
   - Disaster recovery scenarios
   - Global content delivery
3. Containerized Workloads
   - ECS with Fargate
   - Lambda functions
   - Mixed compute environments

Savings Plan Monitoring

# Check Savings Plan utilization
aws savingsplans describe-savings-plans-utilization \
    --time-period Start=2024-01-01,End=2024-01-31
# Get coverage report
aws ce get-savings-plans-coverage \
    --time-period Start=2024-01-01,End=2024-01-31 \
    --group-by Type=DIMENSION,Key=SERVICE

Real-World Scenarios

Scenario 1: Startup with Growth Plans

Challenge: Unpredictable scaling, multiple instance types
Solution: Compute Savings Plan
# Start with modest commitment, scale as needed
aws savingsplans create-savings-plan \
    --savings-plan-type "Compute" \
    --term-duration-in-years 1 \
    --commitment 0.25 \
    --payment-option "NoUpfront"
Scenario 2: Enterprise Database Workload
Challenge: Stable RDS instances, predictable usage
Solution: RDS Reserved Instances
# Purchase RDS RIs for production databases
aws rds purchase-reserved-db-instances-offering \
    --reserved-db-instances-offering-id "rds-mysql-offering" \
    --db-instance-count 3 \
    --tags Key=Environment,Value=Production
Scenario 3: Hybrid Architecture
Challenge: Mix of stable and variable workloads
Solution: Combination approach
- RIs for stable database tier
- Savings Plans for variable compute tier

Cost Optimization Strategy

Step 1: Analyze Usage Patterns

# Get cost and usage data
aws ce get-cost-and-usage \
    --time-period Start=2024-01-01,End=2024-03-31 \
    --granularity MONTHLY \
    --metrics BlendedCost,UsageQuantity \
    --group-by Type=DIMENSION,Key=SERVICE
# Analyze instance usage
aws ce get-rightsizing-recommendation \
    --service EC2-Instance \
    --page-size 100

Step 2: Calculate Potential Savings

# Python script to calculate savings potential
import boto3
def calculate_savings_potential():
    ce_client = boto3.client('ce')
    
    # Get RI recommendations
    ri_recommendations = ce_client.get_reservation_purchase_recommendation(
        Service='Amazon Elastic Compute Cloud - Compute',
        LookbackPeriodInDays=60,
        TermInYears='THREE_YEARS',
        PaymentOption='PARTIAL_UPFRONT'
    )
    
    # Get Savings Plan recommendations  
    sp_recommendations = ce_client.get_savings_plans_purchase_recommendation(
        SavingsPlansType='COMPUTE_SP',
        TermInYears='THREE_YEARS',
        PaymentOption='PARTIAL_UPFRONT',
        LookbackPeriodInDays=60
    )
    
    return ri_recommendations, sp_recommendations

Step 3: Implementation Plan

1. Month 1: Purchase Savings Plans for 60% of baseline usage
2. Month 2: Buy RIs for predictable database workloads
3. Month 3: Monitor and adjust based on utilization
4. Quarterly: Review and optimize commitments

Best Practices

For Reserved Instances

- Start with Standard RIs for maximum discount
- Use Convertible RIs if architecture might change
- Monitor utilization monthly
- Consider RI marketplace for unused capacity
For Savings Plans
- Begin with conservative commitment (50-60% of usage)
- Monitor coverage and utilization
- Increase commitment as usage patterns stabilize
- Use Cost Explorer for ongoing optimization
Monitoring and Alerts
# Set up cost anomaly detection
aws ce create-anomaly-detector \
    --anomaly-detector '{
        "DetectorName": "SavingsPlanAnomalyDetector",
        "MonitorType": "DIMENSIONAL",
        "DimensionKey": "SERVICE",
        "MatchOptions": ["EQUALS"],
        "MatchValues": ["Amazon Elastic Compute Cloud - Compute"]
    }'
# Create budget for commitment tracking
aws budgets create-budget \
    --account-id 123456789012 \
    --budget '{
        "BudgetName": "SavingsPlansCommitment",
        "BudgetLimit": {"Amount": "5000", "Unit": "USD"},
        "TimeUnit": "MONTHLY",
        "BudgetType": "COST"
    }'

Conclusion

When to pick RI
When to pick Savings Plans
Workloads are predictable and stable
Workloads are variable or growing
You need maximum discount (up to 72%)
You need flexibility across regions/types
Great for RDS/ElastiCache/Redshift
Great for EC2/Lambda/Fargate
Architecture is unlikely to change
Architecture evolves frequently
You can commit to specific configurations
You prefer dollar-based commitment
Recommendation: For most organizations, start with Savings Plans for their flexibility, then add Reserved Instances for specific predictable workloads like databases. This hybrid approach typically delivers 30-50% cost savings while maintaining operational flexibility.

The key to success is continuous monitoring and adjustment based on actual usage patterns and business requirements.
Any opinions in this article are those of the individual author and may not reflect the opinions of AWS.
Enjoyed reading this content? Let the author know!

Your likes, comments, shares, and saves help creators reach more builders.

Loading recommendations

Loading article