With the increasing conversations around desktops as a service, some EUC pros may be dealing with the minutia of billing and cost mechanisms for the first time. To that end, Jack asked me to write an overview of how billing for virtual machines in public clouds work.
Introduction and the basics
With the public cloud platforms came the "pay-as-you-go" billing model for services such as virtual infrastructure, storage, and other platform services. This billing model allows customers to rent capacity for a fixed time and only pay for that use.
For customers who have services such as e-commerce where traffic fluctuates, it provides a lot of flexibility to only rent that excess capacity for a given period. Or, think about being able to spin up a set of virtual machines equipped with GPU to deliver 3-D CAD Applications on VDI during work hours and only pay for that capacity for those hours.
All services in the public have a billing unit, either based upon throughput, storage, transactions, or services, which are billed based upon a per-second runtime.
The difficult part is how to calculate what the hosting of different services will cost in a public cloud scenario, and it is therefore important to understand the mechanisms underneath, so we don’t get surprised at the end of the month. Also, it’s good to understand the difference between the different vendors and what kind of billing agreements they have.
What are we actually paying for?
What are the public cloud cost factors for renting a virtual machine? All the big vendors provide their own cost calculator to try and make it easy for their users to understand what it is going to cost, if you understand what you need.
Depending on the usage and other services for virtual infrastructure it mostly comes down to the following components:
- Compute capacity: CPU and memory. Most providers have different fixed sizes where you get a certain amount of CPU and memory, and we either by per second or per minute.
- Storage: storage spaces and performance. Depending on the cloud provider, you have a performance tier cost, plus a cost for the amount of data stored per month. All vendors also provide different levels of redundancy which also adds to the cost.
- Storage transactions. This is often the most difficult thing to estimate. This is essentially IO operations from the OS to the underlying storage service. All vendors have different rates, and this is often not something we have much information about.
- Networking. Here the cost is mostly bandwidth egress, data moving out of the platform, but we are also billed for the use of public IP addresses as well.
- OS Licensing. This depends on the type of operating system we choose for the virtual machine. For instance, if we set up Windows-based virtual machines, we would also get billed for the OS usage as part of the pay-as-you-go model, as well. This can also apply for other types of software such as SQL server.
- Specific hardware. Other components such as GPU and other specialized hardware for your virtual machines will be billed per second, depending on the cloud vendor.
All these cost factors apply when hosting virtual machines in the cloud. If we are setting up a Windows VM, we need to consider all the different cost items such as compute, storage, networking, and OS licensing, which the cloud vendor will then meter and bill depending on usage each month. So, when we turn off a virtual machine in the cloud, the billing meter stops for compute, transactions, and egress, but the persistent storage cost will still apply.
Looking at the big four vendors in the market, Microsoft, Google, Amazon, and IBM, each one has a different public cloud cost on each service and different ways to measure the cost factors above. They also have different subscriptions models, however, they all have a similar pay-as-you-go billing model underneath for renting compute capacity in a fixed T-shirt size (i.e., they use generic labels to designate the CPU and memory specifications that they deem “small,” “medium,” and “large” capacities.)
Most vendors provide the option to "reserve" capacity. This is useful if we plan to host static virtual machines where we want to have a fixed set running 24/7. This allows cloud vendors to have reduced risk on their resources since they know that we plan to use a certain amount of capacity, and therefore can provide that at a lower cost. Most of these agreements also require committing to a one- or three-year deal and pay upfront, but we also lose the flexibility of pay-as-you-go billing.
What is the big difference between the different vendors?
Now, let’s look at the big four vendors. Most of them provide a similar IaaS billing model and commitment model.
Virtual infrastructure is billed as per-second usage; this also includes the OS licensing. Google also has different discount agreements, such as a feature called Continued Discount, which automatically gives a discount if we have virtual infrastructure running more than 70% of a month. Google also has a Committed Discount agreement, which involves reserving capacity for one or three years upfront.
Infrastructure in Azure is billed as per-second usage. Microsoft also has different licensing models, where the largest customers often have a dedicated Enterprise Agreement with customers and therefore get reduced cost on all Azure-based services. Microsoft also has Reserved Instances, which allows us to reserve capacity for either one or three years. Microsoft has additional benefits from a licensing perspective with something called Hybrid Use Benefit (HUB), which allows customers to use existing Microsoft licenses and move them into Azure. Customers then do not need to pay for the OS license as part of a Windows-based workload.
Amazon Web Services
Amazon offers per-second billing for some IaaS sizes, while others are per hour. Amazon also provides a Reserved Instance model where for one or three years, we pay either full upfront or partial upfront (we pay some of the cost upfront but the remainder spread over the course of the term).
Unlike the others, IBM only provides per-minute billing for infrastructure and does not provide any type of reserved capacity model. They do, however, provide a subscription model which provides discounts on their service, like Microsoft. IBM is also undergoing a transition phase where they are merging their IaaS (Softlayer) and PaaS services (Bluemix) into a single platform, which will allow IBM to structure their pricing a lot better moving forward.
There are a lot of reasons to move workloads to the cloud, and as mentioned, cloud-hosted desktops might be a new use case that your organization is considering.
Looking back on the last five years, much has changed from a pricing perspective in the cloud. The competition between vendors is driving prices down and they are building more flexible pricing models.
It is up to us to understand what the public cloud cost factors are when we build future services. For those just starting their journey to the public cloud or are evaluating vendors, I recommend reading up on providers and taking a closer look at how they price their services using the different price calculators. This will help you understand what the costs might be like, and you can determine what kind of additional hardware each vendor offers for your workload needs, such as GPU or high-end storage.
When you are planning on moving EUC workloads to the public cloud also ask your vendor what kind of platforms they support! This might also save you some headache if a vendor does not properly support all cloud platform for its built-in features.
Lastly, check if the vendor has its own cost calculator for running in the public cloud. For instance, Citrix has an Azure cost calculator that shows the total cost for hosting a Citrix solution in Azure, which makes it easier to understand your total public cloud costs.