WTH Are Azure Reservations?

Azure Reservations have been around for a while now, but I’ve recently answered several questions on these that show that it’s not all that obvious what they are and how they work, so deserving of a WTH post.

What Are Azure Reservations?

Azure Reservations started life as Reserved Instances for virtual machines but have now grown to encompass much more than that. Azure Reservations allow you to commit to paying for Azure Resources for 1-3 years. By doing this, you receive a significant reduction in cost for these resources, because you are committing for an extended period. Savings can be up to 72% for some resources.

As I mentioned, reservations started life on VM’s but now cover:

  • Virtual Machines
  • Azure Storage
  • Azure Cosmos DB
  • Azure SQL (vCore only)
  • Azure Synapse
  • Azure Databricks
  • App Service Environment (Stamp fee only)
  • Azure Database for MySQL, PostgreSQL and MariaDB
  • Azure Data Explorer
  • Azure Cache for Redis
  • Azure Dedicated Hosts
  • Azure Disks
  • Software Plans for SUSE, Red Hat, VMware and OpenShift

You can also combine a reservation with the Hybrid Use Benefit for Windows and SQL server to achieve more significant savings.

How do Azure Reservations Work?

Azure Reservations are an item you purchase in the portal. Once you know which resource type you want to create a reservation, you go to the Reservations tab in the portal and click “Purchase now”.

Purchase Now

The first step is to select the resource type you want to purchase the reservation for. You need to do this one resource type at a time, so if you’re going to buy reservations for multiple resource types, you will need to repeat this process for each of them.

Resource Type

When you select a resource, a wizard will open where you need to make a few decisions about how you configure your reservation:

Scope

Reservations are not applied directly to a specific resource, this helps maintain some flexibility. Reservations can be used at one of 3 scopes:

  • Resource Group
  • Subscription
  • Shared - this means any subscription within your billing scope

As an example, let’s say you purchase a reservation for 10 D4v3 virtual machines and you apply it to a subscription called “development”. When you deploy the first VM to that subscription it gets the reserved instance price, each VM then up to number 10 receives the same price. When you deploy VM number 11, the reservation is all used up, so this gets pay as you go pricing. However, if you later decide to delete VM number 7, then VM 11 now can use the spare reservation, and its price goes down to the reservation price.

So, you need to think carefully about what scope you apply your reservations to. If your looking for maximum flexibility and are not doing any sort of cross charging or accounting of pricing to teams, then applying at the shared scope will be best. However, if you have multiple teams using your subscriptions, and they want to control their own costs, then you may need to scope your reservation to a subscription or resource group to ensure it is getting applied to that team’s resources.

Billing Subscription

This is the subscription where the cost for the reservation will be applied.

Resource Size

When you purchase a reservation, it is for a specific resource size or SKU. So for VM’s you would buy 4 D4V3 machines, 6 E4V3 etc. You cannot purchase a reservation for just “DV3” series, it is a specific size.

Term

You need to select what term you are purchasing this for, 1 year or 3 years.

Billing Frequency

It used to be that reservations could only be purchased upfront in one go, however, for some resources it is now possible to pay monthly for the reservation. The price you pay is the same whichever frequency you use. Remember, even if you are paying monthly, you are committed to paying for that for the full term of the reservation. The following resources support monthly payment:

  • Virtual machines
  • Azure Storage
  • SQL Database
  • SQL Data Warehouse
  • Cosmos DB
  • App Service stamp fee

Once you have selected all the options above, you can save this and purchase your reservation.

VM Options

Your reservation will be applied immediately, and any resource already running within the scope of the reservation will receive the reservation price.

Why would I want to use Azure Reservations

There is really only one reason to use Azure Reservations, and that is cost. If you have stable resource usage where you can commit to a specific usage level for an extended period, you can obtain some very significant discounts.

What downsides do Azure Reservations have?

The biggest downside to Azure Reservations is that you need to commit to paying for the resources for the pre-determined period to get the discount. Obviously, we can understand why this is the case, MS are providing a discount to ensure they have a committed payment from you and know the minimum usage you will have for that period. This is the deal that comes with reserved instances, but you need to be aware of this before commuting.

However, reserved instances do allow some flexibility if your circumstances change:

  1. You can exchange a reservation for another reservation of the same type. So if you have a D4V3 reservation for VMs but decide you need bigger machines, then you can exchange it for a D8V3, but your reservation will cover half the number of machines. You cannot transfer between types, so swap a VM reservation for a SQL one
  2. You can refund a reservation you have purchased, to get back the balance of the reservation not yet used. This is limited to $50,000 in a calendar year. You also cannot refund reservations for Azur Databricks, VMWare, Open Shift, Red Hat or SUSE

The other downside is that you need to be proactively managing your resource usage to ensure you are using your reservations in the best way. If you have purchased 100 D4V3 VM reservations, then you need to make sure that your users are creating VM’s with these SKU’s to ensure you are using the reservation and not paying pay as you go prices for other sizes. You can use Azure Policy to help with this. You also need to ensure that if you find users are moving to different sizes, then you re-evaluate your reservations and perhaps exchange them. Azure Advisor can be used to help identify this.