Thursday, November 13, 2025

Implementing a FinOps Practice on Azure from Scratch

FinOps is not a tool; it is a cultural practice that brings together engineering, finance, and business teams to manage cloud costs as a shared responsibility. Many organisations deploy Azure resources with strong technical governance but without the financial accountability structures that FinOps requires.

The FinOps Foundation defines three iterative phases: InformOptimize, and Operate. This post maps each phase to concrete Azure tooling and practices that can be adopted incrementally.

1. Phase 1 — Inform: Building Cost Visibility

The Inform phase focuses on ensuring that every team can see the costs they are generating. Without visibility, accountability is not possible.

Key actions in this phase:

  • Enable cost visibility per team — assign the Cost Management Reader role at the resource group or subscription scope to engineering teams so they can see their own costs without requiring finance involvement
  • Enforce resource tagging — deploy an Azure Policy initiative that audits or denies resources missing required tags such as teamenvironment, and cost-center
  • Set up Cost Management Exports — deliver monthly cost data to a storage account for finance integration and historical analysis

Navigate to Cost Management + Billing > Cost Analysis and confirm that costs can be grouped by relevant tags. If tag coverage is below 80%, address tagging before progressing to optimisation.

2. Phase 2 — Optimize: Reducing Waste and Right-Sizing

The Optimize phase focuses on identifying and acting on cost reduction opportunities. Azure Advisor is the primary tool for this phase.

Navigate to Azure Advisor > Cost to review recommendations. Common recommendations include:

  • Shut down or resize underutilised VMs — Advisor flags VMs with average CPU utilisation below 5% over the past 30 days
  • Purchase Reserved Instances — based on consistent usage patterns over the past 30 days
  • Delete unattached managed disks — disks that are not attached to any VM and are accruing storage costs
  • Right-size or eliminate idle App Service plans — plans with no active deployments

Each recommendation includes an estimated monthly savings amount. I recommend triaging these by savings value and addressing the top five recommendations before moving to the next phase.

3. Phase 3 — Operate: Establishing Ongoing Governance

The Operate phase is where FinOps becomes sustainable. It requires regular cadence, clear ownership, and automated controls.

Key actions in this phase:

  • Monthly cost review meeting — a 30-minute review with engineering leads and a finance representative, using Cost Analysis grouped by team tags as the agenda
  • Budget alerts at team level — each team's resource group has a monthly budget with alerts at 80% and 100%, sent directly to the team
  • Anomaly alerts — enabled at subscription scope via Cost Management > Cost alerts > Anomaly alerts to catch unexpected spikes between monthly reviews
  • Chargeback or showback reporting — monthly export data processed and shared with cost-center owners, establishing financial accountability without requiring portal access

4. Starting Small

Attempting to implement all three phases simultaneously typically leads to a governance initiative that stalls. A practical starting point is:

  1. Enable Cost Management Reader for all engineering teams this week
  2. Enforce three mandatory tags via Azure Policy this sprint
  3. Schedule the first monthly cost review for end of month

From there, the Inform phase creates the visibility needed to have meaningful optimisation conversations, while the Operate phase structures those conversations into repeatable habits.

Summary

FinOps on Azure does not require custom tooling or a dedicated team. Azure Cost Management, Azure Advisor, Azure Policy, and a consistent tagging strategy provide everything needed to run a mature Inform → Optimize → Operate cycle. The limiting factor is usually organisational habit, not technical capability.

No comments: