ServerlessBase Blog
  • Introduction to Reserved Instances and Savings Plans

    Reserved Instances and Savings Plans help you save money on cloud computing costs by committing to long-term usage.

    Introduction to Reserved Instances and Savings Plans

    You've probably stared at a cloud bill and thought, "This can't be right." You're running a few instances, maybe a database, and the total is suddenly in the thousands of dollars. Cloud providers love this because they make it easy to spin up resources, but they also make it easy to overpay. The solution isn't to stop using the cloud—it's to understand how pricing models work and use them to your advantage.

    Reserved Instances (RIs) and Savings Plans are two of the most powerful cost optimization tools in the cloud. They're not for everyone, but if you have predictable workloads, they can save you 30-72% compared to on-demand pricing. This guide explains how they work, when to use them, and how to implement them in your infrastructure.

    Understanding Cloud Pricing Models

    Before diving into RIs and Savings Plans, you need to understand the baseline pricing model. Most cloud providers offer three main pricing options:

    Pricing ModelCostFlexibilityBest For
    On-DemandHighestMaximum flexibilityWorkloads with unpredictable usage, testing, development
    Reserved Instances30-72% discountFixed commitment periodStable, long-running workloads
    Savings Plans30-72% discountFlexible commitmentFlexible usage patterns with consistent spend

    On-demand pricing is the default. You pay for exactly what you use, no commitment required. This is great for development environments, testing, or applications with highly variable traffic. But if you know you'll need a certain number of instances for months or years, on-demand becomes expensive.

    Reserved Instances and Savings Plans are essentially contracts with your cloud provider. You commit to using a certain amount of compute for a specific period (1 or 3 years), and in exchange, you get a significant discount. The discount depends on your commitment duration and flexibility.

    Reserved Instances: The Classic Commitment

    Reserved Instances are the traditional commitment model. You purchase a reservation for a specific instance type in a specific region, and you get a discount for the entire reservation period.

    RI Types

    There are three types of Reserved Instances:

    1. No Upfront: Pay the discounted hourly rate for the entire commitment period with no upfront payment.
    2. Partial Upfront: Pay a percentage of the total cost upfront (usually 12-36%), then pay the discounted hourly rate for the rest.
    3. All Upfront: Pay the full cost upfront and get the maximum discount.

    The discount increases with the upfront payment because you're reducing the provider's risk.

    RI Benefits

    • Significant cost savings: 30-72% off on-demand pricing
    • Predictable costs: You know exactly what you'll pay each month
    • No performance impact: Your instances run exactly the same as on-demand
    • Portability: RIs can be modified or exchanged within certain limits

    RI Limitations

    • Rigid commitment: You're locked in for the entire term (1 or 3 years)
    • Instance type lock: RIs are tied to specific instance types
    • Region lock: RIs are specific to a single region
    • No flexibility: You can't easily change the number of instances or instance types

    When to Use Reserved Instances

    Reserved Instances make sense when:

    • Your workload runs 24/7 with minimal variation
    • You know exactly which instance types you need
    • You're comfortable committing to a specific region
    • You want the maximum discount (all upfront)

    Example: A web server that runs continuously and always uses t3.medium instances in the US East region. You can purchase a 3-year All Upfront RI and save 72% compared to on-demand.

    Savings Plans: The Flexible Alternative

    Savings Plans are a newer pricing model that offers more flexibility than RIs while still providing significant discounts. Instead of committing to specific instance types, you commit to a total amount of compute usage over a period.

    Savings Plan Types

    There are two types of Savings Plans:

    1. Compute Savings Plans: Commit to a certain amount of compute usage (measured in Savings Plan Units) over 1 or 3 years. You can use any instance type, size, or region as long as your total usage meets the commitment.
    2. EC2 Instance Savings Plans: A simplified version of Compute Savings Plans that's tied to specific instance families and regions.

    Savings Plan Benefits

    • Flexibility: Use any instance type, size, or region within your commitment
    • Lower commitment minimum: As low as 1 hour of usage per month
    • Automatic application: Savings Plans automatically apply to eligible instances
    • Portability: Easier to modify or exchange than RIs

    Savings Plan Limitations

    • No upfront payment: You pay the discounted rate over time (no upfront discount)
    • Usage tracking: You must track your usage to ensure you meet the commitment
    • Complexity: More complex to understand and manage than RIs

    When to Use Savings Plans

    Savings Plans make sense when:

    • Your instance types vary but your total compute usage is predictable
    • You want flexibility to change instance types or regions
    • You don't want to make a large upfront payment
    • You're running multiple workloads with different instance requirements

    Example: A web application that uses t3.medium during the day and t3.large at night, with a total of 1000 compute hours per month. A 1-year Compute Savings Plan for 1000 hours per month gives you a 30% discount regardless of which instance types you use.

    Comparing RIs vs Savings Plans

    The choice between RIs and Savings Plans depends on your workload characteristics:

    FactorReserved InstancesSavings Plans
    FlexibilityLow (fixed instance type/region)High (any instance type/region)
    Commitment1 or 3 years1 or 3 years
    Upfront PaymentYes (partial or all)No
    Discount30-72%30-72%
    Best ForStable, predictable workloadsVariable workloads with consistent spend
    PortabilityLimitedHigh

    Implementing Reserved Instances

    Let's walk through a practical example of implementing Reserved Instances for a production web application.

    Step 1: Analyze Your Usage

    First, you need to understand your current usage patterns. Log into your cloud provider's console and export your billing data for the past 6-12 months.

    # Example: Export AWS billing data using AWS CLI
    aws ce get-cost-and-usage \
      --time-period Start=2025-09-01,End=2025-12-31 \
      --granularity MONTHLY \
      --group-by Type=DIMENSION,Key=SERVICE \
      --query 'ResultsByTime[*].Groups[?Dimensions.Key==`SERVICE` && Dimensions.Value==`Amazon EC2`].[Dimensions.Value,TotalAmount]' \
      --output table

    This command shows your EC2 costs over the past 4 months, broken down by service. Look for patterns in instance types, regions, and usage hours.

    Step 2: Identify Reservation Opportunities

    Review your usage data and identify instances that meet these criteria:

    • Run 24/7 with minimal variation
    • Use the same instance type consistently
    • Located in a single region
    • Running for at least 3 months

    For example, you might find that you're running 10 t3.medium instances in us-east-1 24/7, totaling 730 hours per month.

    Step 3: Calculate Potential Savings

    Use your cloud provider's RI recommendation tool to calculate potential savings.

    # Example: Get RI recommendations using AWS CLI
    aws ec2 describe-instance-type-offerings \
      --filters Name=location,Values=us-east-1 \
      --query 'InstanceTypeOfferings[?InstanceType==`t3.medium`].InstanceType' \
      --output text

    The recommendation tool will show you the best RI options for your usage, including the estimated monthly savings.

    Step 4: Purchase the Reservation

    Once you've identified the right RI, purchase it through the console or CLI.

    # Example: Purchase a 3-year All Upfront Reserved Instance
    aws ec2 purchase-reserved-instances-offering \
      --reserved-instances-offering-specification \
        ReservedInstancesOfferingId=r-0a1b2c3d4e5f6g7h8 \
        InstanceType=t3.medium \
        AvailabilityZone=us-east-1a \
        Platform=Linux/UNIX \
        Currency=USD \
        Tenancy=default \
      --quantity 10 \
      --duration 1095 \
      --offering-class standard \
      --payment-option all-upfront

    This command purchases 10 t3.medium Reserved Instances for 3 years with an all-upfront payment. The discount is applied automatically to your eligible instances.

    Step 5: Verify the Reservation

    After purchasing, verify that the discount is being applied to your instances.

    # Example: Check Reserved Instances status
    aws ec2 describe-reserved-instances \
      --reserved-instances-ids r-0a1b2c3d4e5f6g7h8 \
      --query 'ReservedInstances[*].[ReservedInstancesId,State,InstanceType,AvailabilityZone,Duration,UsagePrice,FixedPrice]' \
      --output table

    You should see the Reserved Instance listed with a payment-operation status of payment-pending or payment-succeeded, and your on-demand instances should now be using the Reserved Instance pricing.

    Implementing Savings Plans

    Savings Plans are easier to implement because they automatically apply to eligible instances.

    Step 1: Create a Savings Plan

    Navigate to your cloud provider's Savings Plans console and create a new plan.

    # Example: Create a 1-year Compute Savings Plan using AWS CLI
    aws savings-plans create-savings-plan \
      --savings-plan-type compute \
      --payment-option no-upfront \
      --commitment 1000 \
      --period 1 \
      --currency USD \
      --region us-east-1

    This command creates a 1-year Compute Savings Plan with a commitment of 1000 Savings Plan Units per month. The commitment is measured in hours of usage, so 1000 units equals 1000 hours of compute per month.

    Step 2: Verify Savings Plan Application

    Savings Plans automatically apply to eligible instances. You can verify this by checking your billing details.

    # Example: Check Savings Plans usage
    aws ce get-cost-and-usage \
      --time-period Start=2026-01-01,End=2026-03-09 \
      --granularity DAILY \
      --group-by Type=DIMENSION,Key=SAVINGS_PLANS \
      --query 'ResultsByTime[*].Groups[?Dimensions.Key==`SAVINGS_PLANS`].[Dimensions.Value,TotalAmount]' \
      --output table

    You should see your Savings Plan usage reflected in the billing data, with the discounted rate applied.

    Step 3: Monitor and Adjust

    Regularly monitor your Savings Plan usage to ensure you're meeting your commitment. If you're consistently under your commitment, consider reducing it to avoid overpaying.

    # Example: Check Savings Plans utilization
    aws ce get-savings-plans-utilization \
      --savings-plan-ids sp-0a1b2c3d4e5f6g7h8 \
      --granularity MONTHLY \
      --query 'ResultsByTime[*].[Month,Utilization]' \
      --output table

    This command shows your Savings Plan utilization over time. If utilization is consistently below 100%, you may want to reduce your commitment.

    Best Practices for Using RIs and Savings Plans

    1. Start Small and Scale Gradually

    Don't commit to large reservations immediately. Start with a small commitment (e.g., 10-20% of your current usage) and scale up as you gain confidence in your usage patterns.

    2. Use the Right Commitment Period

    3-year commitments offer the maximum discount, but 1-year commitments provide more flexibility. Choose based on your confidence in your workload stability.

    3. Monitor Your Usage Regularly

    Cloud usage patterns change. Review your usage monthly and adjust your reservations and Savings Plans accordingly.

    4. Take Advantage of RI Marketplace

    If you have Reserved Instances you no longer need, you can sell them on the RI Marketplace to recover some of your costs.

    # Example: List Reserved Instances available for sale
    aws ec2 describe-reserved-instances \
      --filters Name=state,Values=active \
      --query 'ReservedInstances[*].[ReservedInstancesId,InstanceType,AvailabilityZone,State]' \
      --output table

    5. Combine with Other Cost Optimization Strategies

    RIs and Savings Plans work best when combined with other optimization techniques like auto-scaling, right-sizing, and using spot instances for non-critical workloads.

    Common Mistakes to Avoid

    Mistake 1: Overcommitting

    Purchasing more Reserved Instances or Savings Plans than you actually need leads to wasted money. Always verify your usage before making a commitment.

    Mistake 2: Ignoring Instance Type Changes

    If you change your instance types, your existing RIs may no longer apply. Monitor your usage and adjust your reservations accordingly.

    Mistake 3: Forgetting About Region Changes

    RIs are tied to specific regions. If you move workloads to a different region, your RIs won't apply, and you'll lose the discount.

    Mistake 4: Not Tracking Savings

    You can't optimize what you don't measure. Track your savings from RIs and Savings Plans to understand their impact on your cloud costs.

    Conclusion

    Reserved Instances and Savings Plans are powerful tools for reducing cloud costs, but they're not a silver bullet. They work best when you have predictable workloads and are willing to commit to a specific usage pattern.

    The key is to understand your usage patterns, choose the right commitment model, and continuously monitor and adjust your reservations. Start small, scale gradually, and always verify that you're getting the maximum benefit from your commitments.

    Platforms like ServerlessBase can help you manage your deployments and optimize your cloud costs by providing visibility into your resource usage and automating cost-saving strategies. By combining Reserved Instances or Savings Plans with a robust deployment platform, you can achieve significant cost reductions while maintaining the flexibility your applications need.

    Next Steps

    1. Analyze your current usage by exporting billing data from your cloud provider
    2. Identify reservation opportunities by looking for stable, predictable workloads
    3. Calculate potential savings using your provider's recommendation tools
    4. Start with a small commitment and scale up as you gain confidence
    5. Monitor your usage regularly and adjust your reservations as needed

    Remember, the goal isn't just to save money—it's to optimize your cloud spending while maintaining the flexibility your applications require.

    Leave comment