The biggest challenge I see to Azure is pricing. Microsoft’s customers and partners need to know how much something costs because budgets dictate the green light for IT proposals, and businesses don’t have a great big bottomless IT budget that they can always dip into. Almost every day, one of my colleagues in the sales department will pass over a call to me, where a customer is asking how much a server costs in Azure.
I slowly count to 10, and then explain that Azure is a technical sale. My colleague first needs to ask the customer some questions about what they have and want to do with Azure. Additionally, you first need to design a solution with specifications, and only then can you price how much a server costs in Azure.
Microsoft didn’t help themselves because the pricing pages on the Azure website are pretty atrocious, and there was lots of negative feedback. Last night, Microsoft emailed anyone who contributed to some of that official feedback, informing us that a new online pricing calculator for virtual machines was released in preview.
The Issues with Microsoft Azure Pricing
The issues with pricing are all information related. When people arrive at the Azure information pages, they are greeted with lots of pricing for individual components of Azure:
- Virtual machines. There’s a price per hour and monthly cost. The original page mentions a disk size, but it doesn’t explain that this is the temporary D drive, and there’s no mention of the 127 GB C: drive or the quantity of supported data drives. Some simple edits would sort this out.
- Storage space. A novice is greeted with a matrix of options. Only a Hyper-V person understands that they are working with virtual hard disks (VHDs), so they can figure out which of the four types to use. With that said, it takes more searching to figure out which of the four resiliency levels are supported with Azure virtual machines (LRS or GRS). Maybe using the words “virtual machines” instead of “VHD” would be a good idea?
- Storage transactions. You pay a few cents for every 100,000 transactions. What’s a transaction? Anyone? And how many of these transactions will I have? The storage design in Azure appears to be pretty rigidly associated with capacity, so I have to ask why the cost of transactions are not folded into the cost of capacity; the gain in simplicity would match the gain in sales that are otherwise lost to doubt.
- Outbound data transfers. Egress data is charged, where you pay for every GB that leaves Azure. I’ve yet to meet anyone who can estimate (even inaccurately) the amount of data they’ll require.
- Gateway. If the server will be part of a hybrid network, then the VNET will require a gateway. This was once simple to figure out. Now there’s three different gateway types, and the pricing page requires links to explain the differences. I probably shouldn’t mention that the largest ExpressRoute partner in the UK and Ireland doesn’t know that they’re an ExpressRoute partner, and a few customers have been unable to get pricing from them!
I think there are three issues:
- Poor documentation. The issues with storage space and VM specs can be easily modified with a text editor. Present the information, and let people make informed decisions instead of saying “you know what — an on-premises deployment is safer.”
- Over-granulated pricing. Things like storage transactions drive me crazy. Why charge for something that is limited and associated to the capacity deployment? My disks can only do so many IOPS thanks to Storage QoS anyway!
- Lack of solutions. To price a virtual machine, you need pricing information from at least four pages. For Azure Site Recovery, that might span six or seven pages. We’ve figured out that in the IaaS world, everything is scenario-based, so we have internal documentation for pricing scenarios. Why can a pricing page for a virtual machine bring together all of the required elements?
A New Virtual Machine Pricing Page
Microsoft launched a new page for pricing virtual machines based on the negative feedback. It doesn’t resolve the first two issues listed above, but it starts to solve the third issue listed.
Let’s assume that I want to deploy a new application with three auto-scaling virtual machines. I can launch the new online pricing tool, and start by configuring:
- Region: the desired location of the Azure data center.
- Guest OS: Windows or Linux.
- Pricing tier: Basic or Standard, with the latter offering more specs, auto-scaling, and load balancing.
- Instance size: The spec of the machine, which is not customizable. Note that disk size continues to only show the D: drive and not the 127 GB C: drive (Windows VMs).
- Quantity and hours: How many machines of this instance do you require and how many hours per month will each be running?
- Outbound bandwidth: How much egress data will there be?
A nice addition is that we can add more virtual machines. Let’s do that by clicking the + symbol on the green virtual machines box at the bottom and add 2 x Basic A4 machines. This will be a SQL Server cluster running in an availability set. Note that at this time, there is no option to add in the cost of SQL Server to a Windows virtual machine.
Now we need some storage. Based on this portal, I am led to believe that my virtual machine storage requirements are:
- 3 x Standard A2: 3 * 135 GB (405 GB) plus
- 2 x Basic A4: 2 * 240 GB (480 GB)
That’s a total of 885 GB, right? Not so fast, my friend! Actually, each instance size displays just the D drive size. Microsoft isn’t showing us the size of the C: drive (127 GB in each VM, totaling 635 GB), and one must assume that there’s going to be data drives; I’ll add:
- 20 GB to each of the three standard machines
- 200 GB to each of the two basic machines
That adds another 460 GB of disk drives. So, I have:
- 635 GB of C drives
- 885 GB of D drives
- 460 GB of data drives
And that’s a grand total of 1,980 GB of virtual hard disks. This is why I like to price using Excel:
We can click the + symbol for storage on the website to add in some storage. How many issues can you identify with the default configuration?
Here’s what I see:
- The region is different to my virtual machines region. There really should be one global setting per page to prevent issues.
- The type is set to block blobs, which is great for backups, but useless for VHDs. This needs to be set to Page Blobs and Disks by default on a page for pricing virtual machines.
- The only pricing unit is terabytes — storage in Azure is cheap, but this will put some people off.
Here’s my corrected configuration with 2 TB, and my configuration requires 1.93 TB:
Now we can view the estimated monthly total, according to the pricing tool. We estimate that this online application will cost us $1,182.97. I have no other currency option in preview. That will irk some, but those of us selling open licensing won’t mind because we sell Azure credits with a value of $100 — the value is converted to local currency at the time of credit activation.
So we’re ready to go to the customer now, right? Not quite. There’s a couple of things missing:
- Storage transactions: I can guess that it’s a small amount, but that really is a pure guess and I could be completely wrong.
- Gateway: Add on another $27 per month.
New Azure Pricing Tool is a Step Forward
The new preview pricing tool for virtual machines is a small step forward for deal with one of the three issues that my customers have with Azure pricing. I hope Microsoft continues to develop this new tool and fix the issues that remain, as well as deal with some of the pricing structure and documentation problems.