In our previous post, we referenced a number of financial factors and operational parameters that we need to take into account in order to calculate some meaningful costs for IaaS services. Let’s see now how these are combined to produce IaaS cost items.
Your mileage may vary on IaaS; you may be renting datacenter space, leasing equipment, operating your own facilities or simply using public clouds to run your business. However, at the end of the day, you need to utilize an apples-to-apples metric to find out which strategy is the most cost-effective. For IaaS, the metric is the footprint of your infrastructure, expressed in terms of virtual computing units: The monthly cost of a single virtual server, broken down to virtual CPU/Memory and virtual storage resources.
You can check online the formulas in this sheet here. If you want to take a peek on how the formulas work, continue reading.
For simplicity, we will not dive into virtua machine OS licensing costs here – they are easy to find out, anyway (those familiar with Microsoft SPLA should have an idea). We will calculate only monthly running costs of IaaS, expressed in the following cost items:
- SRVCOST: Individual virtual server monthly cost: Regardless of virtual machine configuration, the monthly cost of spinning up a virtual machine.
- COMPUTECOST: Virtual computing unit cost: The cost of operating one virtual memory GB and assorted CPU resources per month.
- DISKCOST: Virtual disk unit cost: The cost of operating one virtual storage GB per month.
Almost all IaaS public cloud providers format their pricelists according to these three cost items, or bundle them in prepackaged virtual server sizes. Calculating these can help immensely in finding good answers to the “build or buy” question if you plan to adopt IaaS for your organization, or determine the sell price and margins if you are a public cloud provider.
Let’s see now each cost item one by one.
Individual server cost (SRVCOST)
How much does it cost to spin up a single virtual machine per month? What do we need to take into account? Well, a virtual machine, regardless of its footprint, needs some grooming and the infrastructure it will run on. The assorted marginal costs (cost to add one more virtual machine to our IaaS infrastructure) are the following:
- C_SRV: Cost of maintaining datacenter network infrastructure (LAN switching, routing, firewall, uplinks) and computing infrastructure software costs (support & maintenance). We do not include here hardware costs since these are related to the footprint of the virtual machine.
- C_DCOPS: Cost of manhours required to keep the virtual machine and related infrastructure up and running (keep the lights on)
- C_NWHW: Cost of network related hardware infrastructure required to sustain one virtual machine. These are pure hardware costs and reflect the investment in network infrastructure needed to keep adding virtual machines.
An essential unit used in most calculation is the cost of rack unit. Referring to our older post for the EPC variable, this is expressed as
C_RU=EPC/RU
This gives us an approximation of the cost of one rack unit per month in terms of monthly electiricy and hosting cost (EPC).
C_SRV is expressed as a function of NETSUPP (monthly network operating & support costs), RU_NET (total network infrastructure footprint), CALCLIC (virtualization/computing infrastructure maintenance & software costs) and SRV (total virtual servers running). The formula is:
C_SRV=( NETSUPP + CALCLIC + C_RU*RU_NET ) / SRV
C_RU*RU_NET is the hosting cost of the entire networking infrastructure (switches, patch panels, load balancers, firewalls etc).
C_DCOPS is straightforward to calculate:
C_DCOPS = DCOPS / SRV
And finally C_NWHW is the hardware cost needed to add one more virtual server. To calculate C_NWHW we take into account the current network infrastructure cost and then we calculate how much money we have to borrow to expand it in order to provision one more virtual server. The way we do this is to divide the total network infrastructure cost with the number of provisioned virtual machines and spread this cost over the lifecycle of the hardware (AMORT), augmented with a monthly interest rate (INTRST):
C_NWHW=(NETINFRA/SRV) * (1+INTRST) / AMORT
Computing cost (COMPUTECOST)
As a computing unit, for simplicity we define one GB of virtual RAM coupled with an amount of processing power (CPU). Finding the perfect analogy between memory and CPU power is tricky and there is no golden rule here, so we define the metric as the amount of virtual RAM. The exact CPU power assigned to each virtual RAM GB depends on the amount of physical RAM configured in each physical server (SRVRAM) and the number of physical CPU cores of each server. COMPUTECOST is broken down to two cost items:
- C_MEM: It is the cost associated with operating the hardware infrastructure that provisions each virtual RAM GB.
- C_SRVHW: It is the cost associated with purchasing the hardware infrastructure required to provide each virtual RAM GB.
C_MEM depends on running costs and is the cost of compute rack units divided by the total virtual RAM deployed in our cloud:
C_MEM = (RU_CALC * C_RU) / TOTALMEM
Note that in some cases (like VMware’s VSPP program) you may need to add up to the above cost software subscription/license costs, if your virtualization platform is licensed per virtual GB.
C_SRVHW is calculated in a more complex way. First, we need to find out the cost of hardware associated with each virtual GB of RAM. This is the cost of one physical server equipped with RAM, divided with the amount of physical RAM adjusted with the memory overprovisioning factor:
CAPEX_MEM = (SERVER + MEMORY * SRVRAM) / (SRVRAM * MEMOVERPROV)
In a similar way with C_NWHW, we calculate the acquisition cost spread over the period of infrastructure lifecycle, with the monthly interest rate:
C_SRVHW = CAPEX_MEM * (1 + INTRST) / AMORT
Virtual storage cost (DISKCOST)
Calculating DISKCOST is simpler. The two cost items, in a similar way to COMPUTECOST are:
- C_STOR: It is the cost associated with operating the hardware infrastructure that provisions each virtual RAM GB.
- C_STORHW: It is the cost associated with purchasing the hardware infrastructure required to provide each virtual disk GB.
C_STOR is based on the existing operating costs for running the storage infrastructure and is calculated proportionally to the provisioned disk capacity:
C_STOR = (STORLIC + RU_STOR * C_RU) / TOTALSTOR
C_STORHW is the cost of investment for each storage GB over the infrastructure lifecycle period:
C_STORHW = (STORINFRA/TOTALSTOR) * (1 + INTRST) / AMORT
One can elaborate on this model and add all sorts of costs and parameters, however, from our experience, this model is quite accurate for solving an IaaS financial exercise. What you need simple datacenter metrics and easily obtained costs.