Azure Cost Optimization: 5 Proven Strategies for Reducing Your Bill
Azure cost optimization is a critical practice to help ensure efficient resource usage and FinOps excellence across an organization’s cloud infrastructure. Whether an organization has just started its cloud journey or has been operating a cloud platform for years, periodic Azure cost reviews can lead to dramatic savings.
Getting Azure cost optimization right requires teams to leverage a combination of tools, practices, and strategies to find a balance between cost and performance that works for them. To help you optimize your cloud spend, this article will explore five essential Azure cost optimization best practices in detail.
While any organization spending money on Azure can benefit from these practices, they are best suited for organizations spending over $10,000 a year on Azure. Additionally, these practices will be easiest to implement by an Azure partner or platform engineer with guidance from a FinOps professional or third-party tooling like CoreStack.
Summary of key Azure cost optimization best practices
The table below summarizes the five Azure cost optimization best practices this article will explore in more detail.
|Review native Azure tooling
|Start with Azure Advisor and Cost Management – these platform-native tools offer the most straightforward approaches to saving money on Azure.
|The immediate suggestions from Azure Advisor should help you identify resources that can be deleted or re-sized.
|Audit non-production environments
|Many development and test environments can be turned off during nights and weekends. Azure also offers special pricing for non-production environments.
|Adopt Azure’s Well-Architected Framework
|Follow design checklists and determine if another infrastructure pattern is better suited for your workloads.
|Set budgets and alerts
|Set up tags, budgets, and alerts to attribute and monitor costs while ensuring resource metadata matches organizational structures.
Azure cost optimization best practice #1: Review native Azure tooling
Cloud services are becoming commoditized, so cloud vendors understand they must help their customers spend their money efficiently. Because of this, cloud platforms offer native tooling to help customers optimize their spending.
Microsoft has two tools that are excellent places to begin your Azure cost optimization journey. The first is Azure Advisor, where you’ll find much more than recommendations to reduce costs. Azure Advisor acts as a one-stop shop to help you achieve operational excellence on Azure, including improving reliability and security across your fleet. However, as the name suggests, these recommendations only apply to Azure. If you’re running a multi-cloud environment, it’s best to combine the suggestions from Azure Advisor with a tool like CoreStack. Then, you can see what Microsoft recommends, review your entire IT estate across vendors, and map compliance requirements in one place.
The second tool is Microsoft Cost Management, which includes billing data across your entire Microsoft estate. While this tool provides better reporting on specific costs and resources, including AI-powered trends and forecasting, the optimization recommendations are simply imported from Azure Advisor.
Without any configuration, both tools can learn from your existing environment and provide a roadmap to immediate cost-saving opportunities. That said, these tools can make mistakes. Your company knows best about your cloud environment and why certain resources may exist. Simply following Azure’s recommendations without understanding why they’re being suggested could put you in a situation where you accidentally affect production resources. Ensuring your resources are appropriately tagged by environment and purpose will help you avoid de-provisioning critical infrastructure. Tagging resources is discussed in detail later in this article.
Azure Advisor analyzes your entire Azure environment to create suggestions for better security and operations.
Azure cost optimization best practice #2: Right-size resources
Often, cloud environments are set up for experimentation and evolve into ungoverned tech sprawl over the years as projects move into production. A typical first recommendation from Azure Advisor is deprovisioning or re-sizing resources, specifically virtual machines. Tackling these orphaned or oversized resources offers the fastest benefits, and you may reach most of your cost optimization goals by following these initial recommendations.
In addition to right-sizing virtual machines, teams can right-size database resources like Azure SQL and optimize network resources (e.g., disabling an ExpressRoute). While these tasks can offer quick savings, first ensure these unused resources aren’t earmarked for failovers or backup.
You can also spend time reconfiguring workloads or consolidating VMs to maximize CPU, memory, and disk usage without negatively impacting performance. This is a common “bin packing” technique, and teams can apply the same concepts to Kubernetes clusters. Bin packing should be done with overall architecture and availability requirements in mind, as consolidating VMs may impact performance during an outage.
Correctly “bin-packing” VMs and Kubernetes nodes can reduce the amount of wasted CPU and memory capacity. CPU and memory accumulate costs when they are provisioned, even if they are not in use.
Azure cost optimization best practice #3: Audit non-production environments
Many non-production cloud environments used for development and testing are provisioned by users who are not responsible for the costs. These environments can likely be turned off during holidays, nights, and weekends, assuming they’re easy to recreate. Cloud infrastructure has become fast enough to provision that this should not affect productivity. Still, you should ensure your developers have a smooth provisioning experience if you want this pattern to have a lasting effect. Using infrastructure-as-code (IaC) tooling to manage your cloud environments can help ensure a seamless setup and teardown experience. Additionally, sharing cost dashboards and providing visibility to development teams can help them understand why these workflows are essential to building and maintaining a sustainable business.
Azure also offers special rates for non-production environments, aptly named Dev/Test pricing. To take advantage of Dev/Test pricing, you will need a Visual Studio subscription, which has its own pricing model depending on your organization's needs. The Dev/Test savings could be substantial, depending on the size of your Azure estate. If your organization only uses Azure for a handful of resources, it’s unlikely that you will realize enough savings to justify an additional subscription.
A more accessible discount to leverage across all environments is the Azure Hybrid Benefit. This discount is primarily for users who have existing Microsoft-licensed SQL Server and Windows Server on-premises and want to migrate them to the cloud. These offers are Azure-specific discounts and cannot be found in other cloud providers like AWS. Microsoft has created a helpful pricing calculator to determine if this fits your Azure environment well.
Reducing the number of resources in non-production environments, followed by combining the Azure Hybrid Benefit and Dev/Test pricing, will offer the most significant savings.
Azure Hybrid benefits can be substantial, up to 85%, compared to list prices. (Source)
Azure cost optimization best practice #4: Adopt Azure’s Well-Architected Framework
The term “Well-Architected” is used across both AWS and Azure, and both providers have published opinionated guidance on how to build and deploy their public cloud resources. Microsoft’s version focuses on five pillars. This article focuses on the third pillar, cost optimization.
The cost optimization pillar of the framework includes several checklists for designing, provisioning, monitoring, and optimizing your workloads. These are the most common recommendations:
- Choose your region wisely. Choose the correct regions for your deployments and only use multiple regions if your availability requires them.
- Select the right resource types and VM families. Select the right resources and VM families to handle performance, such as B-series VMs, which are for “spiky” workloads that often idle between processing spikes. Additionally, there are Spot VMs and low-priority VMs for fault-tolerant workloads that can recover from unexpected terminations such as batch jobs.
- Use long-term contracts to receive discounts. Purchasing Azure savings plans or reserved instances to set contractual 1- or 3-year commitments and receive discounts. Many other Azure services and a complete list is available in the documentation.
- Proactively review costs. Be proactive and reactive in reviewing costs – the next section of this article focuses on budgets and alerts to accomplish this using tags.
In addition to the common recommendations above, creating elastic scaling policies is another approach for mature organizations to take advantage of cloud-based resources. Azure offers three primary tools to do this:
- Use autoscale instances that react to CPU and memory usage to determine when to scale up and down. Azure offers Virtual Machine Scale Sets (VMSS) to accomplish this natively.
- Use Azure SQL Database elastic pools instead of provisioning a database for each customer or workload. Elastic pools can provide individual databases with high performance when required, even if the workload is unpredictable.
- Azure SQL now offers a serverless tier that bills for the compute time used per second. You can set a minimum and maximum number of cores to be allocated to the database and a delay to determine how long the database is inactive before it is paused.
Many resources are over-provisioned based on on-premises resource planning or architectures. Cloud resources can often be smaller and only scale up when needed.
Azure cost optimization best practice #5: Set budgets and alerts
Budgets and alerts offer a method to be both proactive and reactive to Azure cloud consumption. If you explored the Microsoft Cost Management tool mentioned at the beginning of this article, you might have already been introduced to this functionality on the dashboard.
To successfully use budgets and alerts, you must first ensure that your resources are appropriately tagged to match your organizational structure. Gathering cost data from a large mix of diverse resources can be very difficult, but using resource tags will help you and your administrators identify the owners of workloads and create custom reports. Retroactively tagging untagged resources is highly recommended, along with creating and enforcing policies so all new resources are tagged in the future. This will also help you perform internal chargebacks if individual departments are responsible for their cloud spending. To be useful, a minimum set of tags should include the environment, such as prod or dev, the organizational department, and the service, application, or initiative that the resource is associated with.
After you tag resources, you are ready to create budgets and alerts. When an alert is activated, it can be configured to trigger an action group, also known as a set of actions that process pre-defined rules. While actions can be configured to do almost anything, they are primarily used to send notifications, trigger a function or Logic App, or call a webhook.
Decide how strictly to enforce the actions taken on an alert or budget. It can be tempting but dangerous to automatically de-provision infrastructure, causing a budget alert. For example, a spike in consumption may be intentional and come from a marketing campaign or a viral video on YouTube. Highlighting business value in cost management dashboards can be difficult, but higher infrastructure spending often correlates with higher revenue. These correlations are typically seen in FinOps reporting.
FinOps is a growing practice focusing on return on investment (ROI) and efficiency to optimize cloud-computing business value. With the increasing importance of the public cloud in an organization’s technology estate, business teams must make accurate, data-driven decisions. Tools like CoreStack include functionality to centralize FinOps practices across all of your cloud providers.
Powered by Artificial Intelligence
Native Hybrid Cloud Support
Azure Native Tools
Native Azure tooling such as Azure Advisor and Microsoft Cost Management enable organizations to rack up some quick Azure cost optimization wins. However, these tools alone won’t maximize your Azure return on investment. After following the initial recommendations of removing unused resources, right-sizing infrastructure, and purchasing committed discounts, you can move on to focusing on the future and proactively managing cloud costs.
Proactively managing costs includes de-provisioning or scaling down non-production resources when staff are away and periodically reviewing Microsoft’s Well-Architected Framework to ensure the the latest recommendations and patterns have been implemented. You can also tag resources, set budgets, and configure alerts to notify platform owners or act on cost trends and excessive spending. Finally, implementing a purpose-built third-party cloud governance solution like CoreStack can supercharge your overall cost optimization efforts.
Following these best practices will lead to FinOps excellence and true Azure cost optimization.
Subscribe to our LinkedIn Newsletter to receive more educational contentSubscribe now