Azure cost optimisation follows the same general shape as any hyperscaler: rightsize what's running, commit to a discount plan for the steady-state baseline, and stop paying for storage and idle resources nobody is using. The Azure-specific tooling and pricing mechanics differ from AWS in the details, which matters if you're applying lessons learned on one cloud to the other.
Azure Advisor cost recommendations
Azure Advisor's cost tab is the starting point for almost every optimisation pass — it surfaces underutilised VMs based on actual CPU/memory metrics, unattached managed disks, idle App Service plans, and reservation opportunities, all without any extra setup beyond having Azure Monitor metrics flowing. Running Advisor's recommendations across a subscription that hasn't had a cost review recently routinely finds VMs sized for a peak load that never materialised.
# List cost recommendations from Azure Advisor
az advisor recommendation list \
--category Cost \
--query "[].{Resource:impactedValue, Problem:shortDescription.problem, Solution:shortDescription.solution}" \
--output table
Reserved Instances and Azure Savings Plans
Azure Reserved VM Instances offer up to roughly 60-72% off pay-as-you-go pricing for a 1- or 3-year commitment on a specific VM series in a specific region, while Azure Savings Plans for Compute (the newer, more flexible option) apply a discount to an hourly spend commitment across VM families, Azure Container Instances, and App Service, similar in spirit to AWS Compute Savings Plans. For workloads already using Reservations, exchanging or cancelling underused ones is possible but has limits, so start commitments conservatively and scale up once usage is proven stable.
Azure Hybrid Benefit lets you apply existing on-premises Windows Server or SQL Server licenses (with Software Assurance) toward Azure compute costs, and it stacks with Reserved Instances — for organisations migrating from on-prem with existing licenses, this combination is often the single largest available saving and is frequently left unclaimed.
Storage tiering and lifecycle management
Azure Blob Storage has Hot, Cool, Cold, and Archive access tiers, and a lifecycle management policy can automatically move blobs between tiers based on age or last-access time — the same idea as S3 lifecycle rules, with Azure's Archive tier being the cheapest but requiring a rehydration delay (hours) before data becomes readable again. Set lifecycle policies at the container level rather than relying on manual tier changes, since manual management doesn't scale past a handful of containers.
Right-sizing and auto-shutdown for non-production
Dev/test VMs and App Service plans left running 24/7 when they're only used during business hours are a recurring, fully avoidable cost. Azure DevTest Labs and simple auto-shutdown schedules on VMs (a built-in VM property, no extra tooling needed) cut non-production compute spend substantially when a workload genuinely only needs to run 40-50 hours a week instead of 168.
Azure Cost Management budgets with action-group alerts tell you when spend crosses a threshold — they do not automatically stop or scale anything unless you wire the alert to an Automation runbook or Logic App that takes action. A budget alert that nobody reads for two weeks doesn't save any money.
Tagging and cost allocation
Azure Cost Management's cost analysis view is only as useful as the resource tags applied to what it's analysing — without consistent environment, team, and project tags, a subscription-wide cost report tells you the total but not who to talk to about reducing it. Azure Policy can enforce tag presence at resource creation time, which is the only reliable way to keep tagging consistent across a team larger than a handful of people.
| Category | Mechanism |
|---|---|
| Underused VMs | Azure Advisor + rightsizing |
| Steady-state compute | Reserved Instances or Savings Plans |
| Existing on-prem licenses | Azure Hybrid Benefit (stacks with Reservations) |
| Cold/rarely-accessed blobs | Lifecycle policy to Cool/Archive tier |
| Non-production compute | Auto-shutdown schedules |
Wrapping up
Azure cost optimisation is the same discipline as on any cloud — rightsize, commit where usage is stable, tier storage by access pattern, and shut down what doesn't need to run continuously — with the Azure-specific wrinkle that Hybrid Benefit is worth checking explicitly if the organisation has existing Windows or SQL Server licensing, since it's the easiest saving to miss entirely.
Independent software engineer in Nairobi specialising in Acumatica customisations, Laravel backends, and tax fiscalisation integrations across East and Southern Africa.