- 19 min read

Azure cost optimization: The levers that reduce cloud spend

Harsh Panwar
Azure cost optimization pillars: visibility, efficiency, rate optimization, and governance.

A practical guide to reducing Microsoft Azure cloud costs through rightsizing, commitments, Hybrid Benefit, and storage tiering without adding risk to your workloads.

TL;DR

  • Azure cost optimization works across four layers: visibility, efficiency, rate optimization, and governance.
  • Native tools provide the data and controls, but teams still need to act on them consistently.
  • Start by rightsizing before buying commitments, then cover only usage expected to remain stable.
  • Azure Hybrid Benefit and Spot Virtual Machines can lower rates further for eligible workloads.
  • Common savings opportunities include idle resources, incomplete allocation, oversized compute, and storage left on higher-cost tiers.
  • North.cloud helps teams catch cost changes sooner, allocate spend accurately, and keep commitment coverage aligned as usage shifts.

Microsoft Azure is the second-largest cloud platform in the world, and its market share continues to grow. Azure cost optimization means reducing spend without compromising performance, reliability, or capacity.

The problem is not a shortage of tools. Azure Cost Management, Azure Advisor, and budget alerts are built into the platform. The real gap sits between seeing the data and acting on it every week.

That disconnect rarely comes from bad intent, but from a structural problem. Workloads shift, teams grow, and commitments expire faster than anyone can track by hand.

Reducing Azure spend takes levers across pricing, architecture, licensing, and governance. This post covers the highest-impact ones across visibility, efficiency, rate optimization, and governance.

The four layers of Azure cost optimization

Optimizing your Azure cloud costs is not a one-time cleanup project. Costs shift as workloads scale, teams change, and new services get adopted. The work has to run continuously across four layers: visibility, efficiency, rate optimization, and governance.

Table showing four layers of Azure cost optimization: Visibility (knowing where every dollar goes; without it, cost conversations become guesswork), Efficiency (running the right resource at the right size; without it, waste hides in plain sight), Rate optimization (paying less per unit without changing usage; without it, commitments go unused instead of generating savings), and Governance (keeping the other three layers working over time; without it, savings quietly reverse).

Azure cost optimization runs across four layers, and skipping any one of them shows up later as wasted spend.

Visibility

Visibility means knowing where every dollar goes. That includes the resource, team, and service behind each charge.

Think of it like a shared household credit card with no itemized statement. Everyone agrees to cut spending, but nobody can point to what to cut. Similarly, itemizing the bill will come first, before anyone touches a budget.

Azure has some native tools that make this layer possible:

These tools are free and generate real signals. Still, someone has to review each alert and act on each recommendation.

Efficiency

Efficiency means running the right resource, at the right size, for its workload.

A resource can look overprovisioned and still be sized correctly, depending on which number you check.

For example, a virtual machine (VM) sized for a rare traffic spike shows low utilization most of the year. That average makes it look wasteful, though the spike behind it may justify the size. The correct read depends on the number you’re checking.

Our guide to rightsizing without the risk goes deeper on separating the two, and when being overprovisioned might be the right choice.

That distinction can get harder across a typical Azure environment because efficiency works differently for each service type:

  • VMs
  • Azure SQL
  • Azure Cosmos DB
  • Azure App Services
  • Storage

Each service prices differently and reaches capacity limits differently. This means efficiency work must be tailored by service, rather than applied as a one blanket exercise.

Rate optimization

Rate optimization means paying less per unit of compute or storage, without changing what you use.

Azure makes this possible by offering discounted rates alongside its standard on-demand pricing, for teams willing to commit to certain usage levels. That gap between the two rates is where some of the fastest savings in this post come from. It shows up in three places:

The catch is that rate optimization only works if the layers before it are solid. Commit to a workload that later gets rightsized or shut down, and part of that commitment goes unused.

There's a second variable worth knowing before you commit to anything: your billing relationship. Enterprise Agreement, Microsoft Customer Agreement, Cloud Solution Provider, and Pay-As-You-Go accounts each come with different purchasing options. Knowing which one applies to you shapes how an efficient commitment strategy can actually look like.

Governance

Governance means keeping the first three layers working after the initial setup.

Most teams can set these practices up without much trouble. What's harder is keeping them alive months later, after the initial push has faded and attention has moved elsewhere.

Rightsizing, tagging cleanup, and commitment purchases each require focused effort. Keeping them going takes a different kind of effort, and that's usually where the savings start to slip.

A few patterns show up again and again:

  • New resources get provisioned at default sizes
  • Tagging policies get skipped under deadline pressure
  • Scheduled shutdowns get disabled and never restored
  • Commitments go unreviewed as usage shifts

None of these on their own does much damage. Left unchecked over months, though, they add up to real, avoidable spend.

Azure Commitments and rate optimization: When to lock in, and to what

Azure prices compute on-demand by default. You pay for what you use, with no long-term obligation or discount. That flexibility is convenient, but it is also the most expensive way to run a stable, predictable workload.

Commitments exist to close that gap. In exchange for committing to usage or hourly spend over a fixed term, Azure charges a lower rate.

The idea is simple: usage you can predict should not cost the same as usage you cannot.

However, a commitment only pays off if the usage behind it holds. Commit to the wrong workload or term, and the discount becomes a fixed cost you pay whether you use it or not.

Azure offers several ways to reduce rates:

Four ways to lower your Azure rate, each with a different tradeoff between savings and commitment.

Four ways to lower your Azure rate, each with a different tradeoff between savings and commitment.

The sections below explain when each lever makes sense and how to avoid overcommitting.

Azure Reservations vs. Savings Plans

When it's time to commit to compute, Azure gives you two main paths: Reservations and Savings Plans (SPs). Which one fits depends on how steady your usage is, and whether it's tied to specific resources or spread across your environment.

Reservations work by matching a discount to specific eligible resources. Commit for one or three years, and savings can reach up to 72% over pay-as-you-go pricing.

The tradeoff is specificity. A reservation only pays off as long as the resource it's tied to stays roughly the same. Azure allows some reservations to be exchanged within the same product family, but workload changes can still lower how much of that discount you're actually using.

SPs work differently. Instead of reserving a specific resource, you commit to a fixed hourly spend, and the discount applies automatically to eligible usage across services and regions.

Azure SPs for compute offer savings of up to 65% on select services, available in one-year and three-year terms. Azure also offers SPs for databases, covering select database services with savings up to 35% on a one-year term.

Table comparing Azure Reservations and Savings Plan for Compute across five factors. Maximum advertised savings: up to 72% for Reservations, up to 65% for Savings Plans. Commitment basis: matching eligible resources for Reservations, fixed hourly spend for Savings Plans. Best for: stable, predictable workloads for Reservations, usage that shifts across eligible compute for Savings Plans. Main risk: lower utilization after workloads change for Reservations, committed spend exceeding eligible usage for Savings Plans. Term options: one or three years for both.

Reservations and Savings Plans both cut Azure compute costs, but they commit to different things.

The two don't have to compete for the same dollars, either. Reservations and SPs can work together, and a good starting point is splitting your compute into two groups:

  • Steady usage that stays predictable month over month
  • Variable usage that shifts across services, regions, or resource types

Reservations are a better fit for the steady group, since they need that stability to pay off. SPs are a better fit for the variable group, since the discount follows the spend rather than a fixed resource.

My tip is to leave some usage on demand, too. That gives you room to rightsize or change your architecture without a commitment getting in the way. Where the right balance sits depends on your workload stability, how confident you are in your forecasts, and what coverage you already have.

Tracking reservation utilization, savings plan utilization, and effective savings rate is how you find out whether that balance is actually working.

Azure Hybrid Benefit

Azure Hybrid Benefit works differently than the levers above it. Rather than a commitment, it's a licensing benefit that lets eligible organizations apply existing Windows Server or SQL Server licenses to Azure.

Eligibility usually comes down to active Software Assurance or a qualifying subscription, and the savings themselves vary by license, service, region, and deployment.

Azure advertises savings of up to 40% for some Windows Server scenarios, with larger combined savings possible when this benefit is paired with reservations or other offers.

This lever tends to get missed for an organizational reason rather than a technical one. Procurement manages the license agreements, while engineering provisions the Azure resources, so neither side always has full visibility into what the other is doing.

A simple license inventory can close that gap. It should:

  • Document eligible Windows Server and SQL Server licenses
  • Map them to current Azure deployments
  • Confirm Software Assurance or subscription eligibility
  • Track which licenses are already assigned

Going through that process helps keep eligible licenses from sitting unused while Azure charges the full software rate.

Azure Spot Virtual Machines

Azure Spot VMs offer discounts of up to 90% against pay-as-you-go pricing. They use spare capacity, which means Azure can reclaim them when demand increases.

That tradeoff makes Spot suitable for some workloads and risky for others.

Good fits include:

  • Batch processing
  • Continuous integration and continuous delivery pipelines
  • Development and test environments
  • Stateless services
  • Flexible distributed workloads

Poor fits include:

  • Production databases
  • Stateful applications without failover
  • Workloads that cannot restart safely
  • Services requiring guaranteed capacity

A few configuration choices can improve resilience:

  • Distribute workloads across eligible VM sizes or regions
  • Design jobs to checkpoint progress and restart safely
  • Use scale sets or Azure Compute Fleet where appropriate
  • Set a maximum price when tighter cost control is required

Spot works best as a complement to committed and on-demand capacity, not a replacement for either.

Azure cost optimization in practice

The four layers above explain what to optimize. In practice, teams usually find savings in a few recurring areas. Each one also has a way of quietly reversing when treated as a one-time project.

1. Centralize spend and enforce tags

Centralizing spend across subscriptions and tenants comes before anything else on this list.

Start with billing. Bring subscriptions into the broadest available billing scope your agreement supports in Azure Cost Management + Billing.

Then set up views. Segment cost analysis by subscription, resource group, and tag. The goal is one dataset the whole team works from, not separate portals to reconcile.

Tagging is what makes that data usable. Without consistent tags, spend lands in an "unallocated" bucket that no one owns.

  • Enforce required tags (team, environment, project) through Azure Policy
  • Block resource provisioning that skips required tags
  • Set budget alerts at the subscription and resource group level, routed to the team that owns the spend

For a deeper walkthrough of getting tagging right, read our guide to cloud tagging for modern teams.

Where it drifts

Tagging policies get skipped under deadline pressure, understandably. But this leaves teams with retroactive tagging that is slower and less reliable than enforcing it at deployment.

A recurring check on tag coverage catches drift before it becomes a full re-tagging project.

A view of Coststreams broken down by team and service inside the North app.

A view of Coststreams broken down by team and service inside the North app.

Pro-tip: When complete tagging is not realistic, North’s Coststreams can allocate spend using business and infrastructure context beyond tags. That keeps costs mapped to teams, projects, and customers, even when metadata is incomplete.

2. Rightsize compute continuously

Azure Advisor, the platform's built-in recommendation engine, surfaces underutilized VMs using recent performance and usage data. The recommendations themselves are useful, but acting on them regularly matters more.

Make a habit of reviewing them often, since sizing doesn't stay accurate for long. A VM sized correctly three months ago may already be underutilized, simply because workloads shift and sizing needs to keep up.

Rightsizing isn't always about going smaller, either. Sometimes a workload needs a different type of VM, one built for compute-heavy tasks, rather than a smaller version of the same type.

Moving a batch-processing job to a compute-optimized VM can cost less and perform better than simply downsizing within the same family.

Before resizing anything, build confidence with data from Azure Monitor, which collects performance and usage metrics across your environment:

  • Use Azure Monitor metrics over a 30- to 90-day window
  • Capture full usage cycles, including month-end processing, weekly peaks, and seasonal spikes
  • Avoid short observation windows, since a resize based on a quiet week can cause an outage during the next busy one

3. Shut down what is not in use

Non-production environments are one of the most reliable sources of recoverable Azure spend. Dev, test, and staging instances often run around the clock, even though nobody's touching them nights or weekends.

Automate the shutdown

Manually stopping and starting VMs works for a handful of instances, but it doesn't scale beyond that. This kind of work needs to run on a schedule instead.

Azure gives you a few ways to do it:

  • Azure Automation runbooks for scripted start and stop schedules
  • Azure DevTest Labs for managing development and test resources
  • The built-in start/stop VMs during off-hours solution

Scheduling development VMs around working hours can remove a large share of their monthly runtime. The exact savings depend on VM pricing, working hours, and any related resources that keep generating charges regardless.

Move eligible workloads to Dev/Test subscriptions

Scheduling isn't the only lever here. Non-production workloads running under standard subscriptions can also be missing out on pricing and licensing benefits available through Azure Dev/Test offers, which can include:

  • Discounted VM rates for eligible non-production use
  • Reduced software charges for eligible Microsoft products

If your dev and test workloads are still running under standard subscriptions, it's worth checking whether they qualify for a Dev/Test offer instead.

Hunt for orphaned resources

Scheduling and subscription changes only help with resources you know about. Orphaned resources fall outside both, and they can keep generating charges until someone finds them. The usual suspects include:

  • Unattached managed disks
  • Unused public IPs
  • Empty App Service plans
  • Idle load balancers

Azure Advisor catches some of these automatically, but a manual review can still surface resources that fall outside Advisor's thresholds. Reviewing these resource types on a recurring schedule, such as every 15 or 30 days, helps catch what's accumulated since the last check.

4. Optimize storage tiers and lifecycle

Storage costs grow differently than compute costs. A spike in VM count shows up on the bill quickly, but storage accumulates more quietly, as logs, snapshots, backups, and archived data pile up over time.

Match storage tiers to actual access patterns

Azure Blob Storage, the provider's object storage service for unstructured data like logs and backups, addresses part of this with four access tiers: Hot, Cool, Cold, and Archive. Each one trades faster access for a lower storage price.

Lower-access tiers can reduce storage costs, but retrieval charges and minimum retention periods apply too. The right tier depends on how often the data gets accessed and how quickly it needs to come back.

Setting lifecycle management policies lets you transition blobs automatically, based on last access time or creation date. That removes the manual step that otherwise leaves inactive data sitting on higher-cost tiers.

Match managed disk types to workload needs

Tiering handles storage that sits still. Disk type is the equivalent decision for storage that's actively in use, since not every workload needs the same disk performance. Paying for peak input/output operations per second across every environment is often unnecessary.

  • Workloads requiring consistent performance may need Premium SSD storage
  • Development, logging, and batch workloads may be suitable for Standard SSD or Standard HDD

Choose disk types based on throughput, latency, durability, and availability requirements.

Audit snapshot retention on a schedule

Snapshots are where the previous two practices can quietly break down. Old VM snapshots accumulate silently and often lack retention policies of their own.

Setting automated cleanup rules and reviewing snapshot inventories regularly closes that gap. That way, retention stops depending on someone remembering to check.

How North helps teams put this into practice

Every layer covered in this post can be run manually with Azure's native tools. So knowing what to do isn't the hard part. Doing it every week, across every layer, without it falling to the bottom of someone's list, is.

North.cloud is a cloud cost management platform built to handle that work continuously, running cost monitoring, allocation, and commitment coverage in the background instead of as separate manual checks.

Here is what that looks like when more of the work runs automatically across an ordinary week.

Monday: A weekend spike gets caught before anyone opens the portal

A batch job runs longer than expected over the weekend. By Monday morning, spend in East US is running well above normal.

Under a manual process, the increase surfaces whenever someone checks Azure Cost Management. That could be Monday morning, or at the end of the month.

North’s Anomalies catches it as it happens. The alert includes:

  • Which resource is driving the spike
  • What changed
  • How much the change increased spend

Screenshot of North's Anomalies dashboard showing a critical severity alert for Azure Virtual Machines batch job compute hours in East US. The summary shows 11 total anomalies, all critical, with a total cost change of $4,101. A line chart displays cost over time with three labeled spikes, including a Day 19 spike where cost jumped from $218.46 to $218.54 compared to the prior period. The largest single change recorded is $326.79.

North's Anomalies flags a critical spend spike in Azure Virtual Machines within minutes, showing the exact resource, cost impact, and spike pattern.

With that detail, the team knows within minutes whether the spike needs action.

Wednesday: Unallocated spend gets assigned without a tagging cleanup

Earlier in the week, the team centralized spend across its Azure subscriptions. The total is now visible, but some shared services still sit in an unallocated bucket because the tags don’t reflect who uses them.

Under a manual process, finance and engineering would need to reconcile exports, ownership rules, and incomplete metadata before assigning those costs.

Screenshot of North's Coststreams business units view. A flow diagram shows total spend of $65.4K split between Savings Plans and Others, then distributed across business units and Azure regions. The Dev business unit shows $48.4K, up from $41.0K, with $7.4K reallocated from Savings Plans. The Prod business unit shows $15.7K, up from $12.6K, with $3.1K reallocated from Savings Plans. The Savings Plans business unit shows $0, down from $10.5K, fully redistributed to Dev and Prod. A list on the right breaks down spend by Azure region, led by East US at $29.2K and Germany West Central at $10.2K.

North's Coststreams allocates shared Azure spend across Dev and Prod business units without requiring a tagging cleanup.

With North's Coststreams, spend gets organized around how the business operates, and tagging isn't required to make that happen. Teams can:

  • Group spend by team, project, environment, or customer
  • Split shared costs proportionally based on usage
  • Assign budgets to the groups responsible for that spend
  • Generate showback statements without rebuilding the data in spreadsheets

As infrastructure and ownership change, the groupings update with them, so the allocation stays accurate without a full tagging cleanup.

Friday: Commitment coverage adjusts to match usage that's already shifted

By Friday, usage across a set of VMs has grown beyond current coverage. The team hasn't revisited its commitment mix since the workload shifted.

Under a manual process, someone would need to notice the gap, then decide how much new coverage to buy and for how long.

Autobot, North's autonomous commitment laddering engine, closes that gap on its own. It uses machine learning to evaluate:

  • Usage patterns
  • Renewal windows
  • Projected demand

Screenshot of North's Coverage Simulation dashboard. A bar chart shows covered and uncovered spend from August 2025 through November, with coverage ramping sharply upward around July. Key metrics show a simulated effective savings rate of 55%, projected monthly savings of $85.9K, and a 4 month time to peak coverage. A panel on the right shows a coverage policy target of 90%, split 70% Auto and 30% Flex, with projected monthly costs of $50,366 for Auto and $19,254 in Flex savings. Projected two year savings total $2.51M.

North's Autobot automatically builds commitment coverage in monthly increments as usage and demand shift.

From there, Autobot can purchase, renew, scale, or reduce commitments as needs change over time. Instead of one large upfront decision, it builds coverage in smaller monthly increments, adding coverage based on recent usage and projected demand, then continuing to adjust as those patterns shift.

What ties it together

None of these moments required a custom dashboard, a quarterly reminder, or someone noticing the problem weeks later.

Even so, questions come up that go beyond what an alert or a dashboard can answer on its own. That's where Noros, North's AI copilot, comes in. It works across each product and answers questions such as:

  • “What has changed about this job since last week?”
  • “Which teams drove the increase in shared costs?”
  • “How much has Autobot saved this month?”

Screenshot of a Noros AI chat conversation. The user asks why an anomaly on day 15 happened for Azure Virtual Machines, with a cost of $586.32. Noros responds that the closest match is a batch job compute hours anomaly in East US, where cost jumped from $198.55 to $525.35 between September 14 and 15, an increase of $326.79 with a critical z-score of 9.32. The response explains this was classified as a novel event with no recurring pattern, describes likely causes such as a scaling event or autoscale response, and offers two follow-up questions about which resource groups drove the spike and how it compares to overall Azure spend for September.

Noros, North's AI copilot, explains the root cause of a batch job cost spike in plain language.

Noros answers in plain language without requiring a new report or another dashboard.

For multi-cloud teams, the same workflow can also extend across AWS and GCP.

Get your Azure spend under control with North

Visibility, efficiency, rate optimization, and governance work best together. Progress in even one or two areas can begin reducing Azure spend.

The gap is rarely knowing what to do. It is usually getting the first step in place:

  • A commitment strategy aligned to stable usage
  • A tag policy enforced at deployment
  • A shutdown schedule for non-production resources

Each step makes the next one easier.

This guide covered how to manage all four layers with Azure’s native tools. Keeping them running as usage changes is where North comes in.

Explore our free tier to see how North can support your Azure environment.

FAQS

Answers to common questions about the product or feature covered in this post.

What is the difference between Azure Reservations and Savings Plans?

Azure Reservations provide discounts of up to 72% for matching resources under one- or three-year terms. They work best for stable workloads with predictable configurations.

Savings Plans commit you to fixed hourly spend instead. They apply across a broader range of eligible compute services and offer savings of up to 65%. That broader coverage provides more flexibility when usage shifts across services, regions, or virtual machine types.


How much can you save with Azure Hybrid Benefit?

Savings depend on the license, service, region, and deployment. Eligible Windows Server and SQL Server licenses can reduce the software portion of Azure costs. Higher combined savings may be available when Azure Hybrid Benefit is paired with reservations.

Which Azure cost optimization tools are available at no additional charge?

Microsoft Cost Management and Billing features are available at no additional charge for Azure subscriptions. Azure Advisor is also free for Azure resources.

Azure Monitor has both free and paid components. Standard resource metrics do not carry a charge, but log ingestion, retention, custom metrics, and some alerts can generate costs.

Why does my Azure bill keep growing when usage feels flat?

A flat compute usage number doesn't mean nothing else is changing. Several other factors can drive costs up quietly, including:

  • Non-production resources running outside working hours
  • Unattached disks, unused public IPs, and other orphaned resources
  • Storage growth from logs, backups, and snapshots
  • Higher-cost storage tiers applied to inactive data
  • Commitments that no longer match current usage
  • Licensing benefits that have not been applied
  • Data transfer or managed-service charges growing outside compute

Review costs by service, subscription, resource group, and owner before assuming compute usage is the cause. For questions like these, it can be helpful to ask Noros, North's AI FinOps agent, directly. It answers in plain language, with the root cause and next steps included.

How often should Azure costs be reviewed?

Review frequency should reflect how quickly the environment changes. Fast-growing environments may need weekly anomaly and rightsizing checks, while slower environments can use a longer cadence.

Commitment coverage, tag quality, orphaned resources, and storage lifecycle policies should also be reviewed regularly. The goal is to catch drift before it becomes a larger cleanup project.

Should I buy Azure Reservations or rightsize first?

Rightsize first whenever possible. A reservation based on an oversized or short-lived workload can leave part of the commitment unused.

Use recent performance data to confirm the workload’s baseline. Then commit only the portion of usage expected to remain stable throughout the term.

How can I fix inconsistent Azure tagging?

Start by defining required tags and enforcing them through Azure Policy, so new resources can't be provisioned without them. That stops the problem from growing, but it doesn't fix spend that's already unallocated because of past gaps in tagging.

North's Coststreams solves that by attributing already-unallocated spend without waiting on a retag, using infrastructure and billing context beyond tags, such as resource metadata, region, and account structure. Teams can group that spend by team, project, environment, or customer, and split shared costs proportionally based on usage.

That means cost visibility doesn't have to wait on a complete retag. Tags become one input among several, rather than the only way to assign spend to the right owner.

How do I catch an Azure cost spike before it shows up on the monthly bill?

Set budget alerts in Azure Cost Management to flag spend that crosses a threshold. That helps, but alerts still depend on someone checking them regularly, and a spike can sit unnoticed for days if that check gets missed.

North's Anomalies feature closes that gap by flagging spend changes as they happen, rather than waiting for a scheduled review. Each alert identifies which resource is driving the change, what changed about it, and how much the change increased spend.

That level of detail means a spike gets investigated the same day it happens, instead of surfacing weeks later in a monthly report.

How does North help manage Azure commitments as usage changes?

Autobot, North's autonomous commitment laddering engine, evaluates usage patterns, renewal windows, and projected demand for customer-owned commitments. It builds coverage in smaller monthly increments instead of one large upfront purchase, then adjusts that coverage automatically as usage shifts.

What services does North provide for Azure?

North supports Azure with full coverage from day one, including Analyze, Coststreams, Anomalies, Autobot, and Noros. That brings Azure into the same view as AWS and GCP, so teams can see spend across all three clouds using one set of numbers.

Please rotate your device