We’re now at a point in the still unfolding history of cloud computing when serious questions are being asked about cost which has led to the rise of FinOps as a practice area. Only a few years ago, during what we might call the ‘gold rush’ phase, large organizations, once they moved past ‘no cloud’ policies, adopted what was essentially a no cost too high phase.
Inevitably, this unsustainable way of consuming cloud services produced, if not a backlash exactly, more urgent demands from Finance that cloud costs be brought under control.
Which brings me to Azure Reservations.
Here’s how Microsoft describes reservations in the article, “What are Azure Reservations?” –
“Azure Reservations help you save money by committing to one-year or three-year plans for multiple products. Committing allows you to get a discount on the resources you use. Reservations can significantly reduce your resource costs by up to 72% from pay-as-you-go prices. Reservations provide a billing discount and don’t affect the runtime state of your resources. After you purchase a reservation, the discount automatically applies to matching resources. You can pay for a reservation up front or monthly. The total cost of up-front and monthly reservations is the same and you don’t pay any extra fees when you choose to pay monthly. Monthly payment is available for Azure reservations, not third-party products.”https://docs.microsoft.com/en-us/azure/cost-management-billing/reservations/save-compute-costs-reservations
The use case for reservations is as a method for reducing the runtime cost of solutions hosted on virtual machines that you expect to persist for years to come.
For reservations to make sense you:
- Are using Virtual Machines for critical workloads
- Have workloads that will persist for at least a year and likely longer
A good example of a persistent, virtual machine based workload is an SAP solution.
I’ve worked with many large-scale enterprises and, with few exceptions, have seen SAP S/4HANA implementations in each environment. These platforms are complex and computationally intensive and organizations are beginning to move them to cloud providers. If you’re unfamiliar with S/4HANA, here’s a description from Wikipedia:
“SAP S/4HANA is an Enterprise Resource Planning (ERP) software package meant to cover all day-to-day processes of an enterprise (for example, order-to-cash, procure-to-pay, plan-to-product, and request-to-service) and core capabilities. It integrates functions from lines of businesses as well as industry solutions, and also re-integrates portions of SAP Business Suite products such as SAP SRM, SAP CRM and SAP SCM.”https://en.wikipedia.org/wiki/SAP_S/4HANA
Here’s an example of an SAP architecture, optimized for Azure Linux virtual machines:
This image is taken from the article, “SAP S/4HANA in Linux on Azure” which details one of the SAP approved methods for deploying S/4HANA on the Azure platform. As you can see, this proposed architecture is built using a variety of virtual machines for each of the service layers.
There’s a detailed article on SAP approved VM requirements on Azure titled “Use Azure to host and run SAP workload scenarios” which you can read at the link. For the purposes of this post we’ll keep things simple and assume the following configuration for the SAP Web Dispatcher availability set:
- Two Red Hat Enterprise Linux (RHEL) virtual machines
- The RHEL machines, at the hardware level, are DS12-1 v2 virtual machines with 1 vCPU, 28 GB of RAM and 56 GB of temporary storage with a pay as you go runtime cost of 0.431 USD per hour and a monthly cost of 629.26 USD per month
Here’s how the Azure Pricing Calculator shows this configuration:
But we know we’ll be running this S/4HANA system for years to come so, instead of using pay as you go pricing, we should commit to a reservation. Let’s see how this impacts the projected runtime cost:
By using the combination of a 3 year reservation and Azure Hybrid Benefit for Linux (which allows the use of licensing you’ve already purchased and use on-premises for cloud implementations of the same operating system) we can forecast a significant saving over the pay as you go pricing.
Azure reservations are an important but, in my experience, under-used method for containing and forecasting the cost of important systems.
Ideally, you’ll use fewer virtual machines and more platform and serverless offerings such as Functions. For many organizations however, although this is the goal, there’s still a need to use many VMs to fulfill business needs. With this in mind, it’s important to do everything you can to trim the cost.
If you can project that a system using VMs will persist for at least a year and likely longer, reservations are an excellent way to help achieve that goal and should be a key part of your FinOps toolkit.