Whenever I speak to clients, the biggest driving factor for cloud migration is often cost savings. We can achieve this in a number of ways in cloud transformation, this isn’t just a simple lift and shift of an environment but re-platforming to platform as a service, containers, software as a service and more. However, it shouldn’t stop there. A good cloud provider will provide you with levels of ongoing cost optimisation. In this post, I’ll walk through some of the things you can do yourself to optimise your Microsoft Azure environment.

Transformation vs Optimisation

Firstly, we need to explore the difference between transformation and optimisation. You can actually reduce your costs by performing transformation activities on your environment. This can come from simply using some of the tools available in the cloud such as automated shutdown and startup. It may also come from simply resizing your environment based on usage at least in the IaaS world can have some cost saving. You may also choose to platform in either PaaS or SaaS which often has some instant cost savings.

When we talk about optimising cost we are looking at existing cloud-based environments, which during the life of the services running in that environment can be scaled up and down as well as scaled out to provide not only optimised performance but optimised cost. This is usually a task that happens in a time-boxed manner such as monthly or quarterly. It will generally involve looking at utilisation data and deciding if the resource requires resizing.

Infrastructure as a Service (IaaS)

For IaaS optimisation, you can look at the utilisation of a virtual machine over a specific time period and pump these numbers into a spreadsheet, run an algorithm over them and decide if it needs a resize. Many tools also exist for this using a combination or agent or agentless technology. Regardless of your approach to this, the result is the same which is a decision to sometimes increase the size of the virtual machine or decrease the size of the virtual machine.

A number of conditions can affect your decision to resize a virtual machine, some of these things may include:

  • Number of attached disks – Not all sizes allow the same number of attached disks.
  • Network cards – Not all sizes allow the same number of NICs attached.
  • Application – Not all applications like to have resources changed, make sure your application can handle these changes.


The resize operation on a virtual machine requires downtime, make sure you keep this in mind when performing optimisation tasks. Make you use the architectural best practices and components such as availability sets, load balancers and scale sets were possible to make this as seamless as possible and reduce the effect of any downtime on your environment. Also don’t forget monitoring, lots of clients forget this and receive alert storms when performing restart operations.


In short, it’s a simple task now to resize a virtual machine in a cloud world. However like many things you’ll want to be careful and not “just do it”, especially for production environments. If you’re working in a “fail-fast” world where you’ve adopted DevOps methodologies, then high availability is your friend as are dev environments. In the next post, we shall look at optimising cost with your platform as a service resources.