%%
Created on: `=dateformat(this.created, "MMM dd, yyyy")`
%%
> Created on: Nov 10, 2026
# FinOps 101: A Simple Story/Tutorial
![[finops-101-surprise-bill.webp]]
### Introduction: Who owns this cost?
A cloud bill that triples in one month is how many teams meet FinOps. Finance asks what happened, engineering says it built what the roadmap asked for, and nobody can say who owns the cost. FinOps is the practice that fixes this. Engineering, finance, product and leadership share the same cost data, and cost becomes a normal part of their decisions.
This post is a hands-on FinOps 101 for Azure. It goes through the steps in the order a team usually needs them: understand the bill, see the costs, give every cost an owner, set guardrails, optimize usage and then rates, and make it a habit. It ends with FinOps for AI and a checklist for your first month. If you'd like to start with a story, the 20-minute animated video below covers the same ideas.
## Watch the story

The video follows Contoso Pixel, a fictional company, in four acts. The Flood is the surprise bill. The Map explains the FinOps Framework. The Climb goes through Inform, Optimize and Operate, with a worked example on Azure. Clear Water shows the team six months later. I built it with GitHub Copilot as my coding agent, and the narration is a clone of my own voice made with ElevenLabs.
---
## What FinOps is
The [FinOps Foundation](https://www.finops.org/introduction/what-is-finops/) defines it like this:
> FinOps is an operational framework and cultural practice which maximizes the business value of technology, enables timely data-driven decision making, and creates financial accountability through collaboration between engineering, finance, and business teams.
Two ideas matter most when you start:
- **FinOps is about value.** Spending more can be the right call when that spend earns more. The aim is to know what each dollar buys.
- **Cost optimization is one part of FinOps.** Removing waste and buying discounts are activities. FinOps is the ongoing practice around them: shared data, clear ownership, better decisions and steady habits.
The [FinOps Framework](https://www.finops.org/framework/) gives everyone the same vocabulary:
- **Six principles:** teams collaborate; business value drives technology decisions; everyone takes ownership for their technology usage; FinOps data is accessible, timely and accurate; FinOps is enabled centrally; and teams take advantage of the variable cost model of the cloud.
- **Personas:** the FinOps practitioner, engineering, finance, product, leadership and procurement, with allied teams such as IT asset management, security and sustainability.
- **Three phases you repeat:** Inform (see and allocate costs), Optimize (use less and pay less), and Operate (make the changes stick). Each loop should be a little faster than the last.
- **Four domains:** understand usage and cost, quantify business value, optimize usage and cost, and manage the FinOps practice. Together they hold 22 capabilities, and nobody needs all of them on day one.
- **Crawl, walk, run:** a simple maturity scale. Grow the capabilities that bring your business the most value. You don't need Run everywhere.
![[finops-101-phases.webp]]
---
## Step 1: Understand how you're billed
Your agreement type decides how your bill is structured and which scopes you can use in Cost Management. Most organizations buy Azure in one of four ways: pay-as-you-go, an Enterprise Agreement (EA), a Microsoft Customer Agreement (MCA), or a Cloud Solution Provider (CSP) partner. Some pay-as-you-go accounts use an MCA too, so check your [billing account type](https://learn.microsoft.com/azure/cost-management-billing/manage/view-all-accounts) in the Azure portal.
| Agreement | Billing hierarchy |
| --- | --- |
| Enterprise Agreement | Enrollment > departments > enrollment accounts > subscriptions |
| Microsoft Customer Agreement | Billing account > billing profiles > invoice sections > subscriptions |
Cost Management also works on Azure resource [scopes](https://learn.microsoft.com/azure/cost-management-billing/costs/understand-work-scopes): management groups, subscriptions and resource groups. Billing scopes use billing roles. Resource scopes use [Azure roles](https://learn.microsoft.com/azure/cost-management-billing/costs/assign-access-acm-data) such as Cost Management Reader and Cost Management Contributor. Give finance access at the billing level, and give each team read access to its own scopes.
If you're moving from EA to MCA, plan the FinOps work as well. Budgets, alerts, exports, cost allocation rules and saved views don't move with the agreement, so you [recreate them](https://learn.microsoft.com/azure/cost-management-billing/microsoft-customer-agreement/checklist-microsoft-customer-agreement-billing-migration) on the new billing scopes. Azure role assignments on subscriptions and resources stay as they are, but check who has which billing role.
---
## Step 2: See your costs
Start with **[cost analysis](https://learn.microsoft.com/azure/cost-management-billing/costs/quick-acm-cost-analysis)** in the Azure portal. Its smart views, such as the Services view, summarize your costs, point out unusual changes and show the biggest contributors. Then automate:
- **Export the data.** Schedule [exports](https://learn.microsoft.com/azure/cost-management-billing/costs/tutorial-improved-exports) of cost and usage details to a storage account, in the FOCUS format. FOCUS, the FinOps Open Cost and Usage Specification, is an [open standard](https://focus.finops.org/what-is-focus/) that gives billing data from different clouds and SaaS vendors the same columns. FOCUS exports aren't available for classic pay-as-you-go (MOSP) accounts.
- **Know actual and amortized cost.** Actual cost shows charges as they're billed, so a reservation or savings plan that you pay for upfront shows up as one large charge. [Amortized cost](https://learn.microsoft.com/azure/cost-management-billing/costs/customize-cost-analysis-views) spreads that charge across the term and assigns it to the resources that used the discount. Use amortized cost for team reports and actual cost to match the invoice.
- **Expect a delay.** On EA and MCA, [cost data](https://learn.microsoft.com/azure/cost-management-billing/costs/understand-cost-mgt-data) usually arrives within 8 to 24 hours. On pay-as-you-go, it can take up to 72 hours. Numbers for the current month are estimates until the invoice is final.
- **Use the FinOps toolkit.** Microsoft's open-source [FinOps toolkit](https://learn.microsoft.com/cloud-computing/finops/toolkit/finops-toolkit-overview) adds FinOps hubs (a data platform for your exports), Power BI reports, workbooks and the Azure Optimization Engine.
Start with one shared report that every team can open, and improve it over time.
---
## Step 3: Give every cost an owner
Allocation is the base for everything else. If a cost has no owner, nobody acts on it.
- **Agree on a few required tags,** such as owner, cost center, application and environment. Keep the list short and the values consistent. Tags appear in cost data only from the day you add them, so start early.
- **Enforce them with [Azure Policy](https://learn.microsoft.com/azure/azure-resource-manager/management/tag-policies).** Built-in policies can require a tag, add or replace a tag, and inherit a tag from the resource group or subscription.
- **Turn on [tag inheritance](https://learn.microsoft.com/azure/cost-management-billing/costs/enable-tag-inheritance) in Cost Management.** It applies subscription and resource group tags to the usage records of the resources inside, without changing the resources.
- **Know the gaps.** Some resource types [don't support tags](https://learn.microsoft.com/azure/azure-resource-manager/management/tag-support) or don't pass them into cost data. Allocate those by subscription or resource group instead.
- **Split shared costs with rules.** [Cost allocation rules](https://learn.microsoft.com/azure/cost-management-billing/costs/allocate-costs) (EA and MCA) move the cost of shared subscriptions, resource groups or tags to the teams that use them: evenly, in proportion to their cost, or by fixed percentages. They change how costs appear in reports. The invoice stays the same.
- **Show costs before you charge them.** Showback means teams see their costs. Chargeback moves those costs into their own budgets. Start with showback, agree on the rules, then decide about chargeback.
Shared platforms need extra care. For example, on Standard and Premium tier Azure Kubernetes Service (AKS) clusters, the [AKS cost analysis add-on](https://learn.microsoft.com/azure/aks/cost-analysis) breaks a cluster's cost down by namespace, so teams that share a cluster can still see their part.
Track the share of cost that has a known owner. It shows how ready you are for the next steps.
---
## Step 4: Set guardrails and alerts
- **[Budgets](https://learn.microsoft.com/azure/cost-management-billing/costs/tutorial-acm-create-budgets)** on subscriptions, resource groups or billing scopes send alerts at thresholds you choose, for actual and forecasted cost. Forecast alerts warn you before you go over. A budget doesn't stop spending by itself. On subscription and resource group budgets, you can add an action group to run automation.
- **[Anomaly alerts](https://learn.microsoft.com/azure/cost-management-billing/understand/analyze-unexpected-charges)** tell you when the daily cost of a subscription moves outside its normal pattern.
- **Advisor alerts and digests** send new cost recommendations to the people who can act on them.
- **Azure Policy** sets guardrails, such as required tags, allowed regions and allowed VM sizes.
Send each alert to the team that owns the cost. Alerts that land in a shared mailbox are easy to ignore.
---
## Step 5: Optimize usage first
![[finops-101-two-levers.webp]]
Cloud spend is usage times rate, so you have two levers: use less, and pay less for what you use. Start with usage. Remove waste, right-size and turn off what you don't need. Then commit to the steady usage that's left, so you don't lock waste into a long-term discount.
**Quick wins**
- **Remove waste.** Unattached disks, unattached public IP addresses and old snapshots keep costing money. The [Cost Optimization workbook](https://learn.microsoft.com/azure/advisor/advisor-workbook-cost-optimization) in Azure Advisor, in preview, helps you find idle and inefficient resources.
- **Deallocate idle VMs.** A VM stopped from inside the operating system still pays for compute. Stop it from Azure so it's [deallocated](https://learn.microsoft.com/azure/virtual-machines/states-billing), which ends the compute charge. Its disks are still billed.
- **Act on [Azure Advisor](https://learn.microsoft.com/azure/advisor/advisor-reference-cost-recommendations).** It recommends resizing or shutting down underused VMs, and it suggests reservations and savings plans.
- **Treat non-production differently.** Turn dev and test systems off at night and on weekends. [Dev/Test pricing](https://azure.microsoft.com/pricing/offers/dev-test/) gives Visual Studio subscribers discounted rates on non-production subscriptions, and Windows VMs are billed at Linux rates. Production workloads aren't allowed.
**Next, by workload**
- **Virtual machines:** right-size, autoscale, and use [Spot VMs](https://learn.microsoft.com/azure/virtual-machines/spot-vms) for work that can be interrupted. Azure can evict a Spot VM with 30 seconds' notice. Prices also differ by region and VM series.
- **Storage:** move data to cooler [access tiers](https://learn.microsoft.com/azure/storage/blobs/access-tiers-overview) (hot, cool, cold and archive), and let lifecycle management policies move or delete old blobs automatically.
- **[AKS](https://learn.microsoft.com/azure/aks/best-practices-cost):** use the cluster autoscaler, stop clusters you don't need, and run interruptible work on Spot node pools.
- **Monitoring:** log ingestion and retention costs can grow without anyone noticing. Review what you collect and how long you keep it.
**Long term: design for cost.** The earlier you think about cost, the more you can change. Teams new to FinOps often look at cost only after go-live, when the design is fixed. More mature teams make cost choices while they build: IaaS, PaaS or SaaS, and VMs, containers or serverless. The most mature teams set cost and value targets during [product design](https://www.finops.org/insights/cost-aware-product-decisions/), with a unit metric that defines success. The Cost Optimization pillar of the Azure Well-Architected Framework helps you [weigh cost against](https://learn.microsoft.com/azure/well-architected/cost-optimization/tradeoffs) reliability, security, operational excellence and performance.
---
## Step 6: Then optimize rates
Once usage is stable, lower the price you pay for it:
| Option | How it works | Good for |
| --- | --- | --- |
| [Reservations](https://learn.microsoft.com/azure/cost-management-billing/reservations/save-compute-costs-reservations) | Commit to a specific resource type and region, usually for 1 or 3 years, paid upfront or monthly | Steady workloads that won't change much |
| [Savings plan for compute](https://learn.microsoft.com/azure/cost-management-billing/savings-plan/savings-plan-compute-overview) | Commit to a fixed hourly spend for 1 or 3 years, across eligible compute services and regions | Steady spend on workloads that change size, type or region |
| [Azure Hybrid Benefit](https://azure.microsoft.com/pricing/hybrid-benefit/) | Use Windows Server and SQL Server licenses you already own, with Software Assurance or qualifying subscriptions | Organizations that already own Microsoft licenses |
| [Azure consumption commitment (MACC)](https://learn.microsoft.com/azure/cost-management-billing/benefits/macc/track-consumption-commitment) | Agree to spend an amount on Azure over a period | Large organizations with predictable growth |
When a reservation and a savings plan could both apply, Azure [uses the reservation first](https://learn.microsoft.com/azure/cost-management-billing/savings-plan/discount-application). Buy commitments centrally, share their benefit across subscriptions, and check their utilization every month. An unused commitment is waste too.
The KPI to watch here is the **[Effective Savings Rate (ESR)](https://www.finops.org/wg/how-to-calculate-effective-savings-rate-esr/)**: the savings you actually get, divided by what the same usage would cost at on-demand prices. Unused commitments lower it.
---
## Step 7: Make it a habit
![[finops-101-personas.webp]]
Lasting savings come from people and routines, with tools in support.
- **Start a central FinOps team, even a small one.** It owns the data, reports, commitment purchases, policies and training. Product teams own their usage, and the FinOps team helps them improve it.
- **Write down who does what.** A simple RACI chart (who is Responsible, Accountable, Consulted and Informed) that maps tasks such as tagging, budgets, commitment purchases, anomaly response and forecasting to the personas prevents gaps.
- **Roll it out in stages.** The FinOps Foundation's guide to [adopting FinOps](https://www.finops.org/wg/adopting-finops/) has four stages: research, propose, prepare and launch. Find a sponsor in leadership early.
- **Pick a few KPIs.** For example: cost with a known owner, tag compliance, commitment utilization and coverage, Effective Savings Rate, forecast accuracy, and one unit cost such as cost per customer or per transaction. If the business grows, total cost may grow too, but unit cost should fall.
- **Forecast every month.** Start from the current run rate, add known changes such as new projects, migrations and commitments, and track how close you were.
- **Plan capacity too.** A quota only says what you're allowed to deploy. It doesn't guarantee that the capacity is there. Reservations and savings plans don't guarantee it either, because they only lower the price. For critical workloads, [on-demand capacity reservations](https://learn.microsoft.com/azure/virtual-machines/capacity-reservation-overview) guarantee VM capacity. You pay for them at pay-as-you-go rates whether you use them or not, and reservation discounts can apply.
- **Meet once a month.** Engineering, finance, product and leadership review the numbers for 30 minutes, celebrate wins and agree on next steps.
---
## FinOps for AI
The FinOps Foundation reports that [98% of FinOps teams](https://www.finops.org/topic/ai-value/) now manage AI spend, up from 31% two years earlier. The same practice applies. Cost is still usage times rate, and tags, budgets and commitments still matter. A few things are different:
- **The units are tokens.** Input and output tokens are priced separately, and you pay for system prompts, chat history and retrieved documents as well as what the user typed. Some models charge less for cached input tokens.
- **Pricing models differ.** On [Azure OpenAI](https://azure.microsoft.com/pricing/details/azure-openai/), standard deployments bill per token. Provisioned throughput (PTU) reserves capacity that's billed by the hour and can use reservations. Batch jobs, which aim to finish within 24 hours, cost 50% less than Global Standard.
- **The invoice can't tell you who used what.** A shared AI endpoint shows up as one line. Put an AI gateway such as Azure API Management in front of it. Its [AI gateway policies](https://learn.microsoft.com/azure/api-management/api-management-policies#ai-gateway) can limit tokens per consumer (`llm-token-limit`) and record token use by team or app (`llm-emit-token-metric`).
- **Some controls stop spend, and others only warn.** Quotas, rate limits and token limits stop usage. Budgets only notify. Use both.
- **Quality is part of cost.** The right model is the least expensive one that still meets the quality bar. Trim prompts, cache repeated answers, send simple requests to smaller models, and commit to capacity only when usage is steady.
- **Measure cost per outcome.** Cost per token is a start. Cost per resolved ticket or per completed task is what the business cares about.
---
## Where AI assistants fit
![[finops-101-github-copilot.webp]]
AI assistants make FinOps analysis faster. With [GitHub Copilot](https://docs.github.com/copilot), you can ask for a query over your FOCUS exports, get each step explained, and check the result before you act. With the [Azure MCP Server](https://learn.microsoft.com/azure/developer/azure-mcp-server/tools/), which connects AI agents to Azure through the Model Context Protocol, Copilot can also look up Azure retail prices and work with Azure Advisor cost recommendations. In the Azure portal, [Azure Copilot](https://learn.microsoft.com/azure/copilot/analyze-cost-management) answers cost questions in plain language and can estimate how changes in usage affect your costs.
Treat their output as a draft to review. People still own the decision.
---
## Your first month
1. Find a sponsor in leadership.
2. Give finance and each team access to the right scopes.
3. Export cost data in FOCUS format and share one report.
4. Agree on required tags, enforce them with policy, and turn on tag inheritance.
5. Set budgets with forecast alerts, and turn on anomaly alerts.
6. Pick three quick wins from Azure Advisor and your waste list.
7. Choose one unit metric, such as cost per customer.
8. Hold the first monthly review, then go around the loop again.
## Sources and further reading
The framework content in this post comes from the [FinOps Foundation](https://www.finops.org/), which publishes it under CC BY 4.0. Each Azure detail links to its Microsoft documentation in the steps above. Contoso Pixel, its people and its numbers are fictional.
- [What is FinOps?](https://www.finops.org/introduction/what-is-finops/) and [the FinOps Framework](https://www.finops.org/framework/) from the FinOps Foundation
- [FinOps for AI overview](https://www.finops.org/wg/finops-for-ai-overview/) from the FinOps Foundation
- [Microsoft Learn: What is FinOps?](https://learn.microsoft.com/cloud-computing/finops/overview)
- [Azure Well-Architected Framework: Cost Optimization](https://learn.microsoft.com/azure/well-architected/cost-optimization/)
- [GitHub Copilot documentation](https://docs.github.com/copilot)
If this helped, subscribe to [Building Apps with AI](https://www.youtube.com/@starspak) on YouTube for more.
---
## Related Notes
- [[Beyond the Assistant - Integrating AI Agents Across the Enterprise Software Lifecycle]]: how AI agents like GitHub Copilot fit into each stage of building software