Reserved Instances offer significant savings for IaaS Servers, SQL Databases, Cosmos DB and other Azure and third party services. I have mentioned Reserved Instance in a couple other videos and posts. One on Saving money in Azure and once on Azure Cost Management. LINKS. This article and the accompanying video go into details on how Azure Reserved Instances worth.
Video version, including a demo can be found below.
Reserved instances allow you to prepay for one or three years of Azure Services. Reservations provide up to a 72% savings from pay-as-you-go. They are transferable and can be canceled for a small fee. This is a great money-saving option for qualifying services that you are committed to using foreseeable future.
For example, I have a small Standard_B2S IaaS instance running as a Domain Controller in Azure. Below is a breakdown of savings for a one-year reservation compared to the pay-as-you-go rate.
Pay-as-you-Go | One Year | $516 |
Reserved Instance | One Year | $256 |
Savings | $260 |
A three-year reservation saves even more money. The Pay-as-you-go rate over three years is $1548. Compare that to a three-year price of a reserve instance at $494, a $1054 savings.
Here is how it works. In exchange for committing and paying for 1 or 3 years of qualifying services, Microsoft will apply a discount to those services. The discount is applied based on resource size and region. They are not applied to a specific named instance; a specific VM for example. This is a use-it-or-loose-it model. If there is no service to apply the discount to in a given month, for example, that discount would be lost. Also, the price of Reserved Instances does not include storage or data transfer costs.
Reservation Scope
As mentioned earlier, reservations are not applied to a specific VM, they are applied to qualifying services within a scope. Reservations can be scoped to:
- Resource Group – This is the most restrictive. The Reserved Instance would only apply to qualifying services within a resource Group.
- Subscription – The Reserved Instance is applied to qualifying services in a subscription. This is less restrictive than resource groups.
- Shared Scope – This scope applies to qualifying services for all subscriptions in a billing context. A billing context could be all eligible subscriptions created by a single administrator for pay-as-you-go subscriptions or all subscriptions in an enrollment for EA customers.
An important note is that the scope can be modified as long as they stay in the same billing context. So, a reservation can be moved between subscriptions in an EA enrollment for example.
I mentioned earlier that the reservation is not assigned to a specific VM. Reservations are applied to any matching service in the scope. In the image above, you can see how adding a reservation to a Shared Scope will apply the discount to any eligible service, while applying the reservation to the subscriptions applies to eligible service in that subscription. Applying a reservation to the resource group is limited to the qualifying services in that resource group.
Where to apply is dependent on your organization. If an organization chargeback customers at the Subscription or Resource Group, for example, you may want to apply the reservation so it bennifts the customer that paid for it.
Size Flexibility
Reserved Instances have an option called Instance Size Flexibility. This provides the ability to change the size of a service a reservation is applied to. For example, an organization purchases two reservations for two Standard_B4MS servers. They are scoped to a resource group with two Standard_B4MS servers.
Things change in this example and the organization no longer needs one of the two B4MS servers, instead, it needs two smaller Standard B2MS servers. With size flexibility, the organization can apply the Standard_B4MS reservation to the two B2MS servers. Size flexibility uses the concept of Ratios assigned to servers in the same size series group.
A Standard B8MS has a ratio of 16, so that reservation could be applied to two B4MS servers, four B2MS servers or 16 B1MS servers.
You could not, however, apply the Standard_B4MS reservation to two Standard_D2 servers because they are in a different size series group. Servers need to be in the same Reservation Scope and Region for size flexibility.
The Fine Print
There are some details to be aware of before moving into reserved Instances. First, Azure pricing varies between regions and because of that, a reservation is bound to a region. There is no way to move a reservation to a new region, but it is possible to exchange a reservation for one of an equal or greater value. This will create a new reservation and reset the start date, not carry over the existing one.
For Azure VM’s, the discount only applies to the infrastructure cost, not the OS. Because of that you still have to pay for the Windows OS. This can be offset by using Azure Hybrid benefits if your organization qualifies.
Lastly, it is possible to cancel a reservation if you are not going to use it. There is a 12% fee to cancel a reservation. But obviously, you don’t want to purchase a Reserved Instance with plans of canceling.
Summary
Despite any limitations, for organizations planning to use qualifying services long term, you will only pay less with Reserved Instances. There is little downside compared to the pay-as-you-go price.
2 thoughts on “Reserved Instances in Azure”
Hi,
For example. In one Subscription EA i have RG with two VM’s StandardDS4_v2 so it’s 8vcore * 2 = 16 core ratio.
I’m buying reservation on 2x Standard_DS4_vs2 with Shared scope. and then I have 100% covered reservation on these machines right ?
But after 3-4 months I remove these two Vm’s Standard DS4 and reservation still is but nothing give me because I haven’t any vm’s
But if I create new Virtual Machines but 2x Standard DS2_v2 ( 2core x 2 ) and 1x Standard DS4_v2 ( 8 core) then sum gives me 12core and my reservation has been assign to these vm’s but still 4 core are free to allow ?
Thank you!
That sounds correct. The 4 free cores will go underutilized until another server is added.