io4 Technologies

Cloud Azure

Azure FinOps for municipalities: -30% in 6 months, method and pitfalls

Reservations, autoscaling, governance, rightsizing. A field report on Azure optimization for Québec's public sector.

By Jordane Dours 2026-02-28 6 min read

Reservations, autoscaling, governance, rightsizing. A field report on Azure optimization for Québec's public sector.

Why Québec organizations blow through their Azure budget

Since 2022, municipalities, RCMs, parapublic bodies, and large Québec enterprises have migrated to Azure en masse. The promise: flexibility, scalability, the latest generation of services. The reality, 24 months later: a bill that's 2 to 3 times the original estimate.

The culprit is never Azure itself. It's four human and organizational dynamics that pile up: machines oversized out of caution during migration, test environments left running 24/7, no tagging - which makes any cost attribution impossible - and no governance over the creation of new resources.

The right instinct isn't to slash blindly; it's to put a structured FinOps cycle in place. Here's the method we apply systematically.

The 5 priority FinOps levers

Not every lever delivers the same gain. Here they are in decreasing order of impact, based on 12 FinOps engagements run in 2024-2025:

  • Reserved Instances and Savings Plans (typical gain: 25% to 55% on compute) - a 1- or 3-year commitment on stable workloads.
  • Rightsizing VMs and databases (typical gain: 15% to 35%) - most resources are oversized by 30% to 60% versus actual usage.
  • Automatic shutdown of dev/test environments outside business hours (typical gain: 60% to 70% on those environments).
  • Storage tiering (Hot -> Cool -> Archive) for rarely accessed data (typical gain: 40% to 80% on storage).
  • Removing orphaned resources: unattached disks, unused public IPs, forgotten snapshots (a one-time gain that's often significant).

Step 1 - Visibility and tagging

No optimization is possible without visibility. The first step, always, is to put structured tagging in place (environment, application, owner, cost-center, criticality) applied to 100% of existing resources.

Microsoft Azure Policy can block the creation of new resources that lack the required tags. Without that guardrail, tagging drifts within 60 days. We pair it with Cost Management + Billing to produce dashboards by application and by department.

For a municipality, this finally answers the political question "how much does the online citizen services portal cost?" - a figure no IT department could produce before.

Step 2 - Rightsizing and reservations

Azure Advisor and Azure Cost Management produce rightsizing recommendations. The trap: applying them en masse without business validation.

Our method: analyze 30 days of CPU/RAM/IOPS usage, identify oversized resources (usage below 40% at P95), propose a new sizing, validate it with the business, and schedule the switch during a maintenance window.

For reservations, the analysis hinges on workload stability. A production VM that has run 24/7 for 6 months is an obvious candidate for a 3-year Reserved Instance. A batch VM that only runs 4 hours a night is not - it's more of a candidate for spot pricing.

Step 3 - Governance and policies

Once the gains are captured, you have to prevent backsliding to the old state. Governance comes down to:

  • Mandatory Azure Policy: tags, allowed regions (Canada Central / Canada East), allowed SKUs.
  • Budgets and alerts per subscription, with automatic notification at 70%, 90%, and 100% of monthly consumption.
  • A monthly FinOps committee: IT, finance, business owners, reviewing spend and variances.
  • A resource request process with business validation plus a cost estimate before provisioning.
  • Metrics built into the leadership dashboard: Azure cost by department, by application, by user (as applicable).

Field report: -30% in 6 months for a Québec municipality

A municipality in the greater Montréal area entrusted us with its Azure optimization in 2024. Starting bill: $78,000/month. After 6 months of FinOps:

  • Reserved Instances on 64% of stable compute: savings of $22,000/month.
  • Rightsizing of 47 oversized VMs: savings of $9,800/month.
  • Automatic shutdown of 23 dev/test environments outside business hours: savings of $6,200/month.
  • Storage tiering on 18 TB of logs and archives: savings of $4,100/month.
  • Removal of 340 orphaned resources: a one-time saving of $31,000.
  • Total: the monthly bill went from $78,000 to $36,000 - a 54% drop over 6 months, well beyond the initial -30% target.

The pitfalls that wipe out the gains

Three recurring pitfalls we see undo 6 months of FinOps effort:

First pitfall: a Reserved Instance on a workload that's going to migrate in 3 months. A 3-year commitment = a dead loss. Always validate the application roadmap before committing.

Second pitfall: automatic shutdown with no communication. A dev environment shut down on Friday night, a dev team that wants to work Saturday morning, and a feeling of being blocked. Always document the mechanism and the "manual restart" button.

Third pitfall: the optimization gets done, but the old habits creep back within 3 months. Without ongoing governance, the debt returns. FinOps isn't a project; it's a continuous way of operating.

Keywords:Azure FinOps QuébecAzure cost optimizationAzure public sectorreduce Azure billAzure Reserved InstancesAzure rightsizingAzure Cost Management

Want to talk it through?

Let's spend 30 minutes on your situation.

A free assessment with an io4 architect. No commitment, no sales script.

Book my assessment
Let's talk about your project

30 minutes to frame what matters.

A direct conversation with one of our experts. No commitment, no sales pitch. You leave with a clear, reasoned perspective on your situation.

Or call us directly:514-447-2851