Reduce Azure Costs with These 6 Best Practices

Ivan Kyuchukov
Accedia
Published in
3 min readNov 30, 2020

One of the reasons for companies to start using cloud is the powerful cost savings they can achieve with it. While saving costs in the cloud compared to on-premise could be achieved, very often companies end up spending more than anticipated due to a wide range of reasons. Some of them are undefined governance and authority, lack of budgeting, cloud sprawl. The good news is that with some analysis and proper planning, you can master your Azure cloud and achieve true Azure costs optimization.

From setting up and optimizing Azure tenants to completely restructuring others, I have helped clients with their, in some cases extremely high costs. Therefore, in this blog, I go through the main points that might need attention in your Azure tenant:

1. Right-size VMs

Right-sizing VMs focus on optimizing the utilization of existing resources. The best practices are telling us that each VM CPU should be utilized no more than 80–90% so it does not cause bottlenecks. If the usage is lower, it means the VM could be downsized and therefore use a cheaper option instead. To properly right-size, you need first to understand utilization trends in your environment, then apply utilization metrics to compare with available VM sizes. Often the Azure Advisor and some 3rd party apps can help by proposing proper sizing after they examine your existing VMs. It is also easy to change sizes in real-time if you get complains from users about loading times for instance.

2. Schedule VMs to Start/Stop Based on Usage

This one sounds simple enough, but it does take some analysis of usage patterns and consideration of availability. Autoscaling can also be used in conjunction with schedules to provide elasticity and even more savings. There are several ways to implement automatic start/stop functions with Azure Automation Runbooks as an easy starter. Schedules can be especially effective for test/dev or environments with fixed availability where you know when each system is going to be used.

3. Eliminate waste

While this is a very general idea, there are a lot of ways to eliminate waste. As a starting point, you can try to put a proper governance strategy which should help define how to identify and eliminate waste. One of the main governance strategies is resource tagging. Once defined and properly implemented, it is easy to identify and actively manage resources based on their tags (i.e. environment, created by, date created, application name, etc.)

4. Use Reserved Instances (RI)

Reserved instances are a way of “subscribing” to a number of VMs and their sizes in Azure for a period of 1 or 3 years. Basically, most of the resources which are measured by compute units can also be reserved. Using that, Microsoft bills at a fixed rate for them which provides a lot of cost-saving opportunities, in some cases 40–50%. For more convenience you also get to choose your billing model — upfront for the whole period or monthly for better cash flow management. Most reservations are applied on an hourly basis so you should consider reservation purchases based on your consistent base usage. You can determine which reservation to purchase by analyzing your usage data or by using reservation recommendations. Recommendations are available in:

  • Azure Advisor
  • Reservation purchase experience in the Azure portal
  • Cost Management Power BI app
  • APIs

In most cases, the normal Pay-as-you-go model of billing should not be the preferred one, except for cases where you know you are going to need the VMs in question for a brief time (less than 1 or 3 years which is the period for RI as mentioned). So, you should always consider historical/forecasted runtime and resource utilization prior.

Read the whole article to discover the next essential steps along with the 7th bonus tip.

Need advice on how you use Azure to your best advantage? Let us take a look at how we may save you thousands of your Azure bills. Read more about our experience with Azure.

--

--

Ivan Kyuchukov
Accedia
Writer for

Developing applications on the Microsoft .NET stack. Passionate about climbing high peaks, professionally and literally. Also enjoys hiking and traveling.