Q. Are there tools to help me in the Total Cost of Ownership (TCO) comparison between on-premises and use Microsoft Azure?

A. There are many considerations when comparing costs of running an on-premises datacenter with full infrastructure, servers, cooling, power etc to a cloud-based service like Azure where you pay a cost based on the services consumed such as storage, compute and network egress. It can be difficult to know exactly what typical costs are for your datacenter and what the costs would be for services running in Azure. Microsoft has a pricing calculator available at http://azure.microsoft.com/en-us/pricing/calculator/ which can help access costs for Azure services and a VM specific calculator at http://azure.microsoft.com/en-us/pricing/calculator/virtual-machines/.

Microsoft actually has a TCO tool that they can use to estimate TCO of on-premises vs Azure. Engage your local Microsoft account team and they can plug in your details and pricing and help you compare. Note that this tool is based on the workloads running 24/7, however this is likely not the case as you shift to public cloud.

When running on-premises, you own the servers. They are available all the time which means you typically leave workloads running constantly even though they may actually only be needed during the work week. There is really no additional cost to leave them running (apart from power, cooling etc). In the cloud you pay based on consumption which means organizations go through a paradigm shift. Rather than leaving VMs and services running all the time companies focus on running services when needed to optimize their public cloud spend. Some ways that can help optimize services running are:

  • Auto-scale - The ability to group multiple instances of a VM/service and instances are started and stopped based on various usage metrics such as CPU and queue depth. With PaaS instances can even be created/destroyed as required
  • Azure Automation - The ability to run PowerShell Workflows in Azure and templates are provided to start and stop services at certain times of day making it easy to stop services at the end of the day then start them again at the start of day
  • Local Automation - Use an on-premises solution such as PowerShell or System Center Orchestrator to connect to Azure via REST to stop/start services