A recent article of an interview with the Red Hat CEO touts the benefits of private cloud implementation. See it at HERE
This debate is usually short sited and doesn’t include all CAPEX & OPEX cost associated with the “Free OS” type of cloud operations. Also the reusable components from more sophisticated partner communities afford both AWS & AZURE much greater long term valuations when responsible Enterprise accounting methods are used to drive the cost benefits analyses. The proper engineering of a cloud infrastructure which includes smart VMs well orchestrated by business-demand-level-driven auto scaling will always push the TCO/ROI argument to a public solution for large scale systems.
Microsoft actually has a TCO tool that they can use to estimate TCO of on-premises vs. Azure. 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/.
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