Blog Post

Core Infrastructure and Security Blog
10 MIN READ

Quick Reference: Understanding Azure Reservations vs Savings Plans

BrandonWilson's avatar
BrandonWilson
Icon for Microsoft rankMicrosoft
Dec 05, 2022

 

Hi everyone! Brandon Wilson (Cloud Solution Architect/Engineer) here today to discuss some of the higher-level points of Azure Savings Plans, a new offering to help customers save, and Azure reservations (ie; reserved instances). This post isn’t intended to be a deep dive into the components, more of a high-level wade through a kiddie pool to help you understand the new savings plans compared to the Azure reservations, and if you’ve never heard of neither, well hopefully this helps you gain a little bit of insight.

 

So, let’s start with the obvious; both are for saving some money, both automatically apply to resources in scope, but they do work differently, and offer different savings. Both are offered up in Azure Advisor (Cost) when they are applicable. Which is better for YOU really depends on the situation (how long will the resource exist, what type of resource, what type of agreements you have, etc). It also can depend on the scope, which can be tied back to how budgeting within your company functions (corporate/centrally controlled, broken down by business unit, or <insert budget method here>). So, before we dig into the post, lets provide an overview of the scopes that can be used (screenshot borrowed from here) :

 

Reserved Instance/Savings Plan scopes

 

...Oh, and let’s not forget about that extra step on the cost savings stairs, Azure Hybrid Benefit (AHB) (with an honorable mention to Dev/Test subscription discounts as well)!

 

NOTE: Neither reservations nor savings plans are applicable to the license cost, only the compute costs.

 

 

Azure Savings Plans:

 

Simply put, an Azure savings plan is a method of obtaining cost reductions for resources based on an hourly commitment charge. That commitment charge automatically applies to any compute resource within the scope of the savings plan. If there is availability, it could apply to any compute resource, and will not be locked down to a specific compute resource type (ie; it won't just apply to VMs, or app services). I think the pricing page has a very straightforward image of this:

Source: https://azure.microsoft.com/en-us/pricing/offers/savings-plan-compute/#select-services

 

The hourly commitment should not come from out of the blue, but instead based on your current utilization for your environment/workloads/resources. If you overcommit, then you will end up with waste, however for anything over your commitment, you are charged at the pay-as-you-go rate.

Its very important to note that not all resources can have savings plans applied, only compute resource as of this writing. If you have both reservations and a savings plan, the reservation will take precedence. If you have multiple savings plans, then the savings plan that offers the most savings will be used automatically (which is always the case with savings plans for compute). If you anticipate your infrastructure or workloads to change relatively frequently, whether that means changing regions, changing VMs (outside of the flexibility group), etc, then savings plans would make the most sense in that situation.

 

Savings plans can be paid for monthly or upfront, and can be applied to the following resources (as of this writing):

  • Virtual Machines (only the compute costs; ie; it does not include storage, network, licensing, etc)
  • Azure Dedicated Host (as with VMs, only the compute costs are covered by the savings plan)
  • Container Instances
  • Azure Premium Functions
  • Azure App Services (not all are included; Pv3 or isolated v2 is required)

NOTE: Savings plans are not restricted to VM/instance series, OS, or regions, making them more flexible than reservations.

 

If you search in the Azure portal for “savings”, you should see “Savings plans” pop up. If you select it, and add a savings plan, you can get an idea of the options available to you:

 

EX: Adding a savings plan

 

It should be noted that, unlike reservations, savings plans cannot be traded/exchanged, returned, or cancelled (including to exchange for reservations).

 

Here are a few savings plan specific resources to dig in a bit more:

Azure Savings Plan for Compute | Microsoft Azure

Save with Azure savings plans - Microsoft Cost Management | Microsoft Learn

Azure savings plan recommendations - Microsoft Cost Management | Microsoft Learn

Choose an Azure saving plan commitment amount - Microsoft Cost Management | Microsoft Learn

What is Azure savings plans for compute? - Microsoft Cost Management | Microsoft Learn

How an Azure saving plan discount is applied - Microsoft Cost Management | Microsoft Learn

View Azure savings plan cost and usage - Microsoft Cost Management | Microsoft Learn

Self-service trade-in for Azure savings plans - Microsoft Cost Management | Microsoft Learn

 

 

Azure Reservations:

 

Azure reservations are similar to savings plans, and typically offer a more significant discount, however they are limited to an extent. As an example, for virtual machines, the reservations must be used within the same instance size flexibility group or capacity priority (single scope only), and in the same region. In a nutshell, if your workload usage is going to be consistent (ie; stable) and no real changes to the infrastructure are anticipated, then reservations are a good pick.

As with the savings plans, reservations can also be paid for monthly or upfront. Technically, reservations are also hourly, although the assumption is 730 hours/month of uptime. So what's meant by hourly in this case, is if you were to put a VM that had a reservation applied to it into a stopped (deallocated) state, then the reservation would be released, and another VM in the same instance size flexibility group (if its enabled on the reservation) would then make use of it IF one exists; if nothing else is able to utilize the reservation, then any hours its not used will become lost (ie; unused reservation). If said VM is in a stopped state, it will still consume the reservation as compute hours are still charged in that situation. It’s important to note that not all resources can have reservations applied to them, however most reservations can be split, returned, or exchanged in case they (or the finances) are needed elsewhere. Let’s take at all the resources we can get a reservation for:

 

EX: Azure reservations/reserved instance selection page

 

As you can see, that’s quite a few resource types that money can be saved on!

 

If you search in the Azure Portal for reservations, click +Add (or the “Purchase Now” button in the middle of the screen), then you will come to the resource selection page (the screenshot above). From there, you click on the resource, which will open up a new blade where you can select a scope and see a list of resources that the reservations are applicable to, as well as the recommended quantity (you can also get more details from the list).

 

EX: Reservations purchase/recommendations page

Screenshot is borrowed from here, then slightly altered

 

Just to come full circle on the scopes, as with the savings plans above, the scope option can be shared, single, RG, or Management Group level.

 

EX: App Service purchase scope options

 

Before I forget to mention it, it should be noted that unlike savings plans, some reservations can be exchanged for other reservations or savings plans and can be refunded (up to $50,000 USD/yr). Again, keep in mind that savings plans cannot be traded in for reservations, nor can they be exchanged, returned, or cancelled. This is changing a bit on January 1, 2024, in that reservations will still be able to be exchanged for virtual machine instance size, but not for regions or series.

 

Here’s some resources for some deeper reading about Azure reserved instances/reservations:

Reservations | Microsoft Azure

Save with Azure reservations - Microsoft Cost Management | Microsoft Learn

Azure reservation recommendations - Microsoft Cost Management | Microsoft Learn

Virtual machine size flexibility -Azure Reserved VM Instances - Azure Virtual Machines | Microsoft Learn

Prepay for Azure virtual machines to save money - Azure Virtual Machines | Microsoft Learn

Buy an Azure reservation - Microsoft Cost Management | Microsoft Learn

Automatically renew Azure reservations - Microsoft Cost Management | Microsoft Learn

Reserved Capacity Pricing | Microsoft Azure

Self-service exchanges and refunds for Azure Reservations - Microsoft Cost Management | Microsoft Learn

 

 

Show me the money!:

 

So after that overview, let’s take a look at an example for a virtual machine so you can see for yourself...I just randomly picked one from the list, in this case, a D2ads v5 running Windows (not the cheapest, but also not the most expensive, so it works nicely as an example). NOTE: The savings offered by savings plans and reservations are not limited to just virtual machines!

Also, feel free to follow along in the Azure Pricing Calculator against any resources you might have to apply reservations and/or savings plans to in order to get a more “real world” feel of where you can save in your environment.

So, before I go into the visualization of everything, I thought I would provide a table outlining what's below in order to give an at a glance view (so you don’t technically have to go through the rest of this content to view it; just remember that these are examples and subject to change, and the App Service Pv3 is an outlier):

 

Type

Size

Cost (PAYG)

Cost (1 yr SP)

Cost (1 yr RES)

Cost (3 yr SP)

Cost ( 3 yr RES)

License cost

VM

D2ads v5 (2 vCPU/8GB RAM/75GB temp storage)

$75.19/mo (730 hrs)

$51.58/mo (~31% savings)

$44.33/mo (~41% savings)

$34.41/mo (~54% savings)

$28.59/mo (~62% savings)

$67.16

App Service (Pv3)

P1v3 (2 core/8GB RAM/250GB storage)

$229.95/mo (730 hrs)

$172.46/mo (~25% savings)

$173.00/mo (~25% savings)

$126.47/mo (~45% savings)

$140.92/mo (~39% savings)

-----

**PAYG = Pay-as-you-go                     **SP = Savings Plan                             **RES = Reservation

 

And now, let’s move on to the “seeing is believing” method of demonstrating :smile:

 

First, let’s take a look at the pay-as-you-go rate:

 

 

Now let’s tweak that a bit to take a look at the various cost savings potentials with the savings plan first for 1 year and 3 years. First, the 1 year:

 

 

So, that’s not too bad of a reduction right there at $23.61/month. Sure, it doesn’t sound like much, but if you have 100 virtual machines of this size, it adds up quickly.... expand on that thought a bit and apply it to a more expensive VM type, and that number can become exponentially larger. If you have a keen eye and notice the dropdown list that currently says monthly, the other option is “upfront”, at which point the price becomes an upfront payment of $618.98. It should be noted that the upfront payment represents ONLY the savings plan and does not include the monthly cost of $67.16 for the OS/license.

 

 

If we expand those same views to 3 years, well now those savings increased significantly over the pay as you go cost when you look at the cost difference at scale, with it dropping by $40.78 per month, it gets much better looking to the wallet:

 

 

So this already represents $17.17/month vs the 1 year savings plan ($40.78/month vs pay-as-you-go), but where it really gets interesting, is when you take a look at the upfront pricing. Keep in mind with the 1-year savings plan, the upfront payment was $618.98 for a year. Now, looking at the upfront payment on the 3-year savings plan for the same virtual machine, we come up with $1238.84...I’ll give you about 2 seconds to do the obvious savings math right there 😊 Here’s a view:

 

 

Hopefully by this point, you can see how a LOT of money can be saved relatively easily using these savings plans.

 

Lets move on and take a look at the potential savings reservations at 1 year and 3 years as well, starting with 1 year:

 

 

So just like with the 1-year savings plan, there’s a decent cost savings here compared to pay-as-you-go, with a $30.86/month savings ($7.25/month savings over the 1 year savings plan) right away. Just for sake of completeness, lets take a look at the upfront as well:

 

 

Just like with the savings plan, we can make those savings even bigger if we know our resource is going to be needed for 3 years. Let’s have a look and see:

 

 

Let’s take a moment and do the math here. We started with pay-as-you-go at a rate of $142.35. We saw some big reductions from savings plans terms, as well as the 1 year with the reservations. So, compared to that starting rate, we are now seeing a reduction of $46.60/month. That’s not too bad, especially when scaled out to larger numbers or instance sizes... Like the old commercials say, “but wait there’s more!”. So let’s take a look at the upfront view:

 

 

So with the 3 year reservations, we are looking at a reduction of $209.72 for the upfront payment when compared to the 3 year savings plan. Not too much when looked at as a single VM, but again, if you have 100 VMs of this size, all the sudden you have saved nearly $21000!

 

If you happen to have Software Assurance, or are on the fence about whether or not to get it, let’s take a look at the difference in cost when you apply the Azure Hybrid Benefit on top of savings plans and reservations so you can see how that could potentially save you as well (3 years just to make the point hit home):

 

Azure Savings Plan (3 years)

 

 

Azure Reservation (3 years)

 

 

So, we started at $142.35 per month, then we make use of 3 year offers, and combine them with the hybrid benefit, and suddenly we have reduced the cost by as much as $113.76 PER MONTH. That’s pretty good savings if you ask me! Just keep in mind, that while reservations tend to have more savings over savings plans, that’s not always the case...

 

Let’s take a quick look at an example of an app service (breaking down the various tiers where you can utilize savings plans and reservations is outside of the scope of this content). Before we go on, if you visit the Azure Pricing Calculator, you will find that only Pv3 app service is cheaper with the savings plan, and that only Premier v3 and Isolated/Isolated v2 plans can use reservations (Pv3 or Isolated v2 for savings plans). That being said, let me give a few examples of App Service Premium V3 just to show the difference there, and also provide an example of how reservations are not always the cheapest (yet are still far cheaper than pay-as-you-go):

 

App Service (Pv3) Pay-as-you-go

 

 

App Service (Pv3) 3 year savings plan

 

 

App Service (Pv3) 3 year reserved instance

 

So, briefly looking at the savings there, the pay-as-you-go rate is $229.95, then with the 3 year savings plan, we can save $103.48/month, yet with the 3 year reservation we *only* save $89.03/month. So, as you can see, depending on the resource type, as well as the duration, savings plan can actually serve you better than reservations can, providing you stay within your commitment range. As mentioned above though, the App Service Pv3 is an outlier with its 3 year savings; if you play around in the pricing calculator, you’ll find that reservations typically provide greater savings than the savings plans.

 

Hopefully this helped you get a bit of a better understanding of how Azure Savings Plans and Azure Reservations can help you out, and the differences between them. Thanks for reading!!

 

References:

Updated Apr 10, 2023
Version 4.0
  • Harry_van_Rijn's avatar
    Harry_van_Rijn
    Copper Contributor

    I am still wondering about 2 details of the saving plan:

    1. Do I use the commitment amount from 'cost before SP' or do I subtract the savings percentage. For my tenant I'd commit to 40 USD/hr expecting to pay 32% less i.e. 27,20. Do I commit to 40 or to 27,20?

    2. I pay monthly and use of Compute is charged against a reduced rate. I struggle with the logic: if I pay upfront I fulfilled my commitment and usage should be free like RI. But if I'm still charged, albeit at a reduced rate, it looks like I'm paying twice. Like in the example above (40 USD per hour), I'd commit and pay 29k upfront. This confuses me (and I think many others). 

    These two questions are not really clear from the information on the website. I hope you can help!

  • aammirmirza's avatar
    aammirmirza
    Copper Contributor

    Yes it beneficial in terms of management overhead as we purchase across the billing scope, MG, RG or subscription level and there is no regional or pricing tier binding, like we have in Reservations.

    My Analysis

  •  

    Harry_van_Rijn 

    Sorry for the delayed response. You are defining what you are willing to spend. This link might help you: Choose an Azure saving plan commitment amount - Microsoft Cost Management | Microsoft Learn

    Its not like an RI in that you are committing to a single type of resource, because the savings plan will apply to any compute resource collectively. It might be applied to a VM that gets stopped/deallocated, at which point it would be passed along to another compute resource, rather than the same resource type (or instance size flexibility group) in the same region. So, its similar to RI in that regard, except the next resource to pick up the savings might not be the same kind of resource.

  • Harry_van_Rijn's avatar
    Harry_van_Rijn
    Copper Contributor

    Thanks Brandon, we did commit to what we want to spend. It's at or above 100% every day. In combination with RI the VM cost dropped 32% and I will be finetuning the remaining payg-cost after the next price increase. I would hope, but do not expect an automatic increase of the ASP. 

    We did have a side effect regarding licenses though: just three E-serie VMs had an extra license meter triggered which is being investigated. And whilst collecting i formation I found 13 VMs with AHUB which still had payg licences charged.

     

    Azure does not show yet which subsctiptions use the ASP. I have three services which have underlying VMs but do not seem to use the ASP: Databricks, Datafactory and MySQL flexible server. Cloudhealth does not report ASP yet and being a CSP I have no access to the REST API. I'll have to be patient.

  • Harry_van_Rijn 
    I wouldn't expect an impact on licensing (that would be more in the AHB realm). Keep in mind that savings plans, reservations, and hybrid benefit are 3 different things. Savings plans don't get stacked on top of RIs; instead, Azure will automatically use the cheapest method for you it can. So, if a savings plan and reservation both can apply to the same resource, the reservation will win. That being said, if your contractual PYG rate for a given resource is less than the savings provided by a reservation or savings plan, then your contract rate will win.

    You can view savings plan expenditures in cost analysis: View Azure savings plan purchase transactions - Microsoft Cost Management | Microsoft Learn (this might also be of interest to you: View Azure savings plan cost and usage - Microsoft Cost Management | Microsoft Learn).

    As far as VMs not using the savings plan; if its under committed at the moment, that may be why. If you have app services, containers, or other compute resources, they too can/will use the savings plan as they are able to.

    It sounds like a bit more tweaking for your savings plans to increase them may be needed, but in either case, its AWESOME that you are already realizing the 32% savings!

  • MTurnbull95's avatar
    MTurnbull95
    Copper Contributor

    Harry_van_Rijn I've been trying to figure the same thing regarding, Do I commit to the discounted rate or the On-Demand rate? You mentioned that you 'committed to what you want to spend', is that $27.20 or $40?

     

    Thanks

  • yveslaingui's avatar
    yveslaingui
    Copper Contributor

    What an easy-to-understand article on these two concepts, thank you!

  • Harry_van_Rijn's avatar
    Harry_van_Rijn
    Copper Contributor

    MTurnbull95 We committed on 68% percent which is the $27,20. In the end I found out that the ASP works just like an RI: I pay upfront and the hourly amount is consumed at a reduced rate. Which means the actual cost in Azure Cost Management is zero, the amortized cost shows how much has been used per benefit. Savings Plan does not show which subscriptions or resource groups have consumed it, that's something I hope we'll get one day. Nor does it show (neither for RI) how much surplus there is, but Cloudhealth shows me the leftover PAYG.