A few years ago, I was working with a website that had severe performance issues. The environment was fully OnPrem hosted in their own datacentre. This in itself caused many issues with downtime due to loss of total power and other issues. The infrastructure was essentially overkill. 5 high spec VM’s each one featuring multi core CPUs and 32GB of RAM all connected to a hardware load balancer. The website was very slow but when remoting into the VMs to check the resource monitor the memory was at less than 1GB and the CPU’s barely breaking a sweat at less than 5% utilization. This is a prime example of underutilized hardware resources. After a few weeks of investigation and a number of red herrings I discovered that the slowdown was related to a legacy PowerShell script that restarted the AppPool event 60 seconds. However, once the issue was solved I raised that the infrastructure was far to underutilized and we should move it to Azure. The website used an old CMS system could only run in a classic AppPool and it used .htaccess for URL rewrite. It also had a database dependency not supported in SQL Azure. Unfortunately, the website would not run using PaaS App Services and PaaS SQL Azure, so instead we used VM’s, 2 web servers and 2 database geo-replicated between UK South and West. The cost of these was significantly less and the existing onPrem VMs were decommissioned and reallocated into Hyper V, reused for other business applications.