To understand the principles of the cloud and Azure FinOps, I always like to go back in time and understand where we come from.
When working on-premises, from a financial and capacity management perspective, IT equipment was traditionally acquired with the expectation that it would last a few years. It should not only remain operative for at least five years but also accommodate the estimated growth in capacity (mainly storage, but also computing) before reaching its end-of-life date.
This led to the underutilization of virtual machines when growth did not meet expectations, and nonoptimized workloads were not as impactful financially. Unneeded virtual machines were often left unused on servers for months, and poorly optimized workloads or underused servers did not hurt that much if there was spare capacity left.
Being on-premises made it very hard to scale down. Due to this infrastructure purchasing model, once you committed to acquiring new assets, you were expected to keep growing instead of downsizing.
All these issues, if not addressed, carried over to the cloud.
Beyond these factors, a lack of cost accountability from technical teams and the difficulty of keeping up with rapidly evolving technology create the perfect storm for overspending.
What is FinOps?
FinOps is the practice of bringing financial accountability, cost optimization, and governance to cloud spending – so every team knows what they use, what it costs, and how to spend smarter. But let’s take a few steps back and outline the process behind FinOps to explain how it works.
Definition of FinOps
The first thing we need to work on to solve these challenges is cost visibility. With cost visibility, we bring billing information out into the open for everyone to see.
Next, we need to be able to react to the information we see through just-in-time processes. If we only do quarterly cost reviews, for example, we are going to burn a lot of money.
Last but not least, to make sense of all the information we see, we need to bring finance, business, and engineering teams together. With them at the same table, we can interpret the shifts we see in our cloud costs. Some may be reasonable and expected – such as a new release or the deployment of a new application that justifies an increase in spend. But while many changes may be justified, we can also uncover cost anomalies or other issues we need to act on immediately before the problem snowballs. With cost accountability and ownership, we can even venture forward and do proactive cost optimization, which is what we should aim for.
FinOps Core Principles
FinOps is built on three core principles.
The first one is that teams need to take ownership of their cloud usage. It is not just the finance department’s job to worry about costs – engineers and product teams are responsible for the resources they consume. When the people building and running workloads also own the cost, decisions become more efficient.
The second principle is that cost should be treated as a key performance metric. Just like uptime or latency, cloud cost tells us how well a team is performing. It is not about spending less for the sake of it – it is about spending wisely relative to the value delivered.
The third principle is centralized governance with decentralized execution. A central FinOps team sets the standards, tools, and policies, but individual teams are empowered to make day-to-day decisions about their own resources. This balance ensures consistency without creating bottlenecks.
FinOps Lifecycle
According to the FinOps Foundation, the FinOps lifecycle is a continuous loop of three phases: Inform, Optimize, and Operate.
The Inform phase is about visibility – examining your cloud cost, usage, and efficiency data to understand where the money is going. Without accurate and accessible data, any optimization effort is just guesswork.
The Optimize phase focuses on identifying opportunities from two angles: usage optimization (can we achieve the same outcome with fewer resources?) and rate optimization (are we paying the right price for what we use?). Engineering and procurement teams need to work together here: one evaluates rightsizing and refactoring of cloud workloads while the other focuses on RI/SPs provisioning as well as license planning and discounts negotiations with CSPs.
The Operate phase is about governance around FinOps practice, in order to ensure that optimization is not a one-off effort but a continuous discipline. Processes such as periodic cost review, as well as cost optimization initiatives planning with multiple teams involved can be game changing for FinOps to get momentum and buy in.
Understanding Azure Cost Challenges
Based on what we’ve covered, we understand what FinOps is and how it works. Let’s take a look now to the other side of the coin and ask ourselves a key question: why do Azure costs spiral out of control in the first place?
Common Reasons for Azure Overspending
One of the most obvious inefficiency in the cloud is to have idle resources. Virtual machines or databases, for example, are left running when no one is using them. Development and test environments should be addressed first, as they are often running 24/7 while only used in reality during business hours.
Closely related to this is overprovisioning, another foundational inefficiency. Many organizations choose a VM size based on worst-case estimations rather than actual usage, just to be safe. It is not uncommon to find VMs running at 10–20% CPU utilization, which in the cloud means you are paying for Compute capacity you are not using.
Then there is the lack of a tagging strategy. Without consistent tags, it becomes nearly impossible to attribute costs to specific teams, projects, business units or environments. Untagged resources are effectively invisible spend. You know you are paying for it, but you cannot tell who owns the workload and therefore there’s no accountability on that cost.
As organizations get bigger and bigger in the cloud, workloads spread across multiple tenants, subscriptions and resource groups, leading to poor visibility. Without a unified view, cost blind spots multiply and it becomes harder to understand where the money is going.
Finally, data egress and other hidden costs tend to catch teams off guard. Data transfer between cloud regions, availability zones, or out to the internet (egress) can add up quickly. These costs are easy to overlook because they do not appear as standalone resources in your bill.
Organizational Challenges
Beyond the technical aspects of FinOps, there are organizational challenges that make cost management even harder.
Large companies working in the cloud often end up with dozens or even hundreds of subscriptions. This multi-subscription sprawl makes it difficult to have control and oversight on total spend and enforce consistent governance across the board.
There is also the issue of costs accountability. When no one owns the cost of a workload, no one optimizes it. Cost overruns become everyone’s problem – and therefore no one’s priority.
And let’s not forget Azure’s complex pricing model. Between pay-as-you-go rates and discounts, reserved instances, savings plans, spot pricing, and numerous SKU variations, it is genuinely hard for teams to predict costs and choose the most economical option without dedicated expertise.
On top of that, cloud resources are scarce. Teams are often dedicated to building new workloads, applications, or migration projects, which does not leave much time for cost optimization.
Azure Native Cost Management Capabilities
Azure provides a set of native tools out of the box that can help you understand and manage your cloud costs. Let’s do a quick review through the most relevant ones.
Azure Cost Visibility Tools
The first thing to know is that Azure offers Retail Pricing APIs, which are publicly available and allow you to query pricing information for any Azure service without any form of authentication. This API is really useful for building custom cost estimation tools or comparing prices programmatically.
For more detailed billing data, we also have available Price Sheet and Usage APIs. Unlike the Retail Pricing APIs, these APIs require authentication and give you access to your organization’s actual negotiated rates and consumption data. This is where you go when you need to reconcile what you are actually paying.
On a more practical level, the Azure Calculator is the go-to tool for estimating the cost of new workloads before you deploy them. It is straightforward and useful for planning, though it can be hard to use for big projects. It also relies on your ability to accurately predict resource consumption upfront, which may be difficult before even starting the project.
Azure Cost Management is the main tool at your disposal for analyzing your existing spend. It allows you to break down costs by subscription, resource group, service, tags, and more. For most organizations, this is the first tool they interact with when starting their FinOps journey.
Azure Budgets allow you to set spending thresholds on your subscriptions and resource groups and configure alerts when spending approaches or exceeds those thresholds. They are essential for proactive cost control and you can use them to open a ticket in your ITSM tool or to notify the FinOps team.
For optimization recommendations, Azure Advisor and Azure Cost Optimization Workbook provide actionable insights such as identifying underutilized resources, recommending reserved instances, pointing out idle infrastructure. These are reactive by nature – they tell you what you could improve based on historical usage.
Azure Resource Graph is a powerful query engine that lets you explore your resources across subscriptions at scale. While it is not a cost tool per se, it is invaluable for building custom reports and understanding your resource landscape – for example, finding all untagged resources or all VMs of a certain SKU. This tool is an unique offering from Azure that, for once, surpasses its competition in this regard.
Worth mentioning are also the FinOps toolkit and FinOps hubs, open-source solutions from Microsoft that help bridge some of the gaps in native tooling. The FinOps toolkit provides a collection of Power BI reports, bicep templates, and automation scripts for common FinOps scenarios. FinOps hubs, on the other hand, go a step further by offering a centralized data architecture that ingests Cost Management exports into a Data Lake and provides pre-built Power BI dashboards, which is the closest Azure has to AWS’s CUDOS dashboards.
Limitations of Native Tools
While these tools provide a solid foundation, they have notable gaps:
- Limited team-level cost allocation: Azure Cost Management can break down costs by subscription, resource group, resource or tags, but attributing costs to specific teams or projects requires a well-implemented tagging strategy. In order to have one, you will need to implement the strategy and also enforce it, which is not simple for non FinOps experts.
- Forecasting is limited: Azure Cost Management provides really basic forecasting. Undestandable, it also does not account for planned business changes, new projects, or decommissions. For anything beyond simple trend extrapolation, you need to build your own models or use third-party tools.
- Recommendations are reactive: Azure Advisor tells you what you could improve based on historical or current usage, but it does not proactively alert you to emerging waste or suggest actions before costs escalate.
- Anomaly detection is basic: Azure Cost Management’s built-in anomaly detection identifies unusual spending patterns, as long as they are pretty obvious, but the alerting flexibility and granularity are limited compared to what more mature organizations need.
- No single pane of glass for reservations: If you want to see key reservation KPIs – such as effective savings rate, usage, and utilization – aggregated in one place with full visibility at tenant level, you will not find it out of the box. You will be left with the option to build it yourself (not simple at all) or rely on third party tools for this, which involves additional costs.
- No unified cost view for multi-tenant or multi-subscription environments: Azure Cost Management does not support Management Groups outside of Enterprise Agreement and Microsoft Customer Agreement contract types. If you manage costs across multiple tenants, the experience is fragmented, and you are also forced to create your own dashboards if you cannot rely on a tool to provide this visibility for you.
- A lot of manual processes: From building custom dashboards to exporting and reconciling data, much of the work that should be automated still requires hands-on effort, design and planning.
And frankly, Azure is behind the competition when it comes to pre-made FinOps tooling. AWS, for instance, offers CUDOS (Cloud Intelligence Dashboards) – a ready-to-deploy solution with rich, pre-built visualizations. On the other hand, Azure does not have an equivalent, which means organizations often need to invest more time building their own reporting or turn to third-party platforms to fill the gap.
Azure Cost Allocation Strategies
Tagging Best Practices
If there is one thing I cannot stress enough, it is this: tagging is the foundation of cloud governance, and it’s not only for cost allocation. Without proper tagging, you are flying blind – it becomes impossible to allocate costs accurately or understand spending at a more granular level.
In larger organizations, tagging enables two key processes: Chargeback and Showback. These processes consist of charging or reporting cloud spend back to business units when contracts and licensing are centrally managed. In smaller organizations, tags are equally important to determine how much the cloud resources tied to a specific application or project are costing you, so you can assess value versus cost.
I also recommend Owner-type (business Owner/technical Owner) tags to foster cost accountability by making it clear who is responsible for each resource. You would be surprised how quickly behavior changes when people is suddenly accountable of a portion of the cloud costs.
Essential tags: Environment (pro/dev/pre/uat/tst), Department/Business Unit, Project/Application, Owner, Cost Center, and Criticality if needed.
Subscription and Management Group Strategy
In my experience, the simplest path to cost allocation is starting with a good management group and subscriptions structure. With one subscription per business unit/environment and separate subscriptions for shared services. Even though you may end with a lot of subscriptions, this approach lets you directly attribute costs to each unit without needing complex allocation logic. Management Groups sit on top, organizing subscriptions under centralized governance and cascading policies and budgets downward.
For multi-tenant environments – which is very common if you are an MSP – Azure Lighthouse enables cross-tenant management, and Cost Management Exports can centralize billing data into a Storage Account for reusable Power BI dashboards. On multi-cloud scenarios, the FOCUS standard normalizes cost data across Azure, AWS, GCP and even other SaaS platforms or Private Clouds.
Shared Cost Allocation
Shared services – networking, security, monitoring, identity – are usually the trickiest costs to allocate. Everyone is using the services hosted in these central subscriptions but they do not belong to anyone in particular. The main models we can apply to allocate its costs are:
- Direct: Costs attributed to specific owners. The simplest model, and it works well when resources are clearly owned by a single team.
- Proportional: Distributed by usage percentage. If Business Unit A consumes 60% of a shared resource, they bear 60% of the cost.
- Fixed: Divided equally among consumers. Simple to implement but less fair when usage varies significantly.
- Activity-Based: Allocated by actual usage metrics. The most accurate model, but also the most complex to implement.
My advice on this is to always start simple and progress to more advanced models following the FinOps principle of crawl, walk, and run. Do not try to get it perfect from day one, it’s impossible.
Azure Cost Optimization Techniques
Compute is typically the largest cost category in most organizations, so this is where I usually start. Rightsize your VMs using Azure Advisor – I cannot tell you how many times I have found VMs running at 10–20% CPU utilization, paying for capacity nobody uses. Consider AMD-based or ARM-based VMs, which often deliver comparable performance at a lower price point than Intel equivalents, which in my opinion is a no-brainer. For workloads with variable CPU demand and usage peaks, B-series burstable VMs are a great option – they charge a lower base rate and let you burst when needed with a system based on credits. Reserved Instances or Savings Plans may be the way to go for stable workloads (30–72% savings), while auto-scaling is perfect to accomodate variable demand. Additionally, start/stop schedules can help automating workloads shutdown for non-production environments (65%+ savings) and Spot VMs can be used for interruptible workloads (up to 90% discount).
For containerized workloads, AKS node pools and pods rightsizing and Cluster Autoscaler feature can help you trim down your AKS costs. And do not forget managed disk rightsizing – I see this overlooked all the time. Many disks are provisioned at a Premium or high-performance tier when Standard SSD or even Standard HDD would do just fine. Review your IOPS and throughput metrics before choosing a disk SKU, and downgrade where performance requirements allow it. On top of that, make sure to always remember that you cannot reduce a disk size once it’s provisioned so just provision what you need!
Storage costs creep up quietly, and by the time you notice, they can be substantial. Blob costs are especially painful to manage if you don’t know where to look, so you should start by using Data temperature tiers properly and using Lifecycle policies to automate file deletion or transitions between tiers based on usage. Azure Files also supports Hot, Cool, and Transaction Optimized tiers, so picking the right one based on how the data is actually used may yield great savings. Also, making a habit of identifying orphaned disks and snapshots with Azure Resource Graph, and choose the right redundancy level is always a good practice.
Databases also tend to be over-provisioned because no one wants to risk performance issues – I get the idea, but it leads to a lot of waste. Elastic Pools can be used here to share resources across databases, while serverless tiers is a great offering for dev workloads that can auto-pause. Review DTU/vCore utilization regularly – you might be surprised by how much headroom you have, and make sure to purchase RIs on your databases 24/7 in production.
Networking costs are the ones that catch most teams off guard. You can minimize cross-region data egress, use Private Endpoints, right-size your ExpressRoute and VPN Gateway SKUs, and leverage CDNs for static content to optimize your cloud costs in this key area.
Forecasting and Budgeting
One thing I always tell teams and clients: your forecasting will never be accurate if you do not account for new projects being deployed and old ones being decommissioned. These are the blind spots that throw off every forecast. Combine historical analysis (past 3–6 months), growth projections, seasonal adjustments, and planned infrastructure changes with your tickets from your ITSM tools. Use Azure Cost Management’s native forecasting and Azure Calculator for new projects, or third-party platforms for more advanced scenarios if you have those at your disposal.
Set Azure Budgets at multiple levels: department-level budgets for overall business unit accountability, product-level budgets tied to specific applications or workloads, and environment-level budgets to keep non-production spending in check. You may also establish monthly, quarterly, and annual review cadences, and update them when business conditions change.
FinOps Governance
Rather than relying on people to do the right thing every time, make sure to let Azure Policy do the heavy lifting: require mandatory tags, restrict allowed VM SKUs, deny unapproved regions, and audit resources without lifecycle tags. I always recommend starting with audit mode before switching to deny – this gives teams time to adjust without disrupting their work.
Accountability is equally important. Resource Owners optimize day-to-day, Budget Owners manage spending limits, a FinOps Team sets standards and best practices, and Executive Sponsors should resolve conflicts and push the practice forward. If no one owns a workload, then no one will feel compelled to optimize its cost. Some organizations use incentive-based models to avoid these situations, tying cost efficiency improvements to team performance metrics, which can really drive engagement.
You cannot manage what you do not measure, so tracking KPIs like effective savings rate (20–40%), reservation utilization (90%+), tag compliance, budget variance (within 5–10%), cost per business unit, waste percentage (idle or underutilized resources as a share of total spend), forecast accuracy (aim for within 5–10% of actuals), and unit economics such as cost per customer or cost per transaction to connect cloud spend to business value is essential to objectively measure how efficiently you use the cloud.
Advanced Practices
Once you have the foundations in place, the next step is making everything faster and more proactive. Centralizing your cost data through Cost Exports into a Data Lake and build Power BI dashboards on top – gives you a single source of truth that stakeholders can access without asking anyone. Using anomaly detection – Azure’s native ML-based detection or custom Logic Apps – to catch spending spikes and be able to react the same day they happen, not weeks or months later. And last but not least, making FinOps sustainable through automation: start/stop schedules, tagging remediation via Policy modify effects, scheduled reporting, and cost guardrails embedded in your IaC templates. The less manual effort involved, the more likely your FinOps practice will stick.
Role of Third-Party FinOps Platforms
Why Native Tools Are Not Enough
As we covered in Section 4.2, native tools have real gaps. While FinOps hubs and the FinOps toolkit help bridge some of these gaps, they still require deployment, configuration, and ongoing maintenance – effort that only grows as your environment scales.
If you have a simple single-tenant setup, native tools may be enough. But once complexity increases – multiple tenants, hundreds of subscriptions, multi-cloud environments, chargeback requirements – the limitations start to add up. At some point, the time you spend building and maintaining custom export pipelines, Power BI reports, and allocation logic can easily justify the cost of a dedicated platform.
Capabilities to Look For
When evaluating third-party FinOps platforms, focus on the capabilities that fill the native gaps:
- Unified cost dashboard: Aggregate costs across multiple tenants, subscriptions and resource groups and ideally multiple cloud providers in a single view.
- Advanced tagging and allocation: Automated tag compliance monitoring with custom allocation rules and support for complex multi-tenant scenarios.
- Proactive monitoring: AI-powered anomaly detection, customizable alert thresholds and automated optimization recommendations.
- Comprehensive reporting: Branded, client-specific reports (essential for MSPs) with automated review packages and executive-level dashboards.
- Forecasting: ML-based cost forecasting with scenario planning for growth and infrastructure changes.
- Reservation management: A centralized view of effective savings rate and other key KPIS for RIs/SP management and oversight.
- Unit economics: The ability to map cloud costs to business outcomes – cost per customer, per transaction, per revenue dollar – so you can assess the value delivered by your cloud spend and provide tangible and objective KPIs to upper management.
- FOCUS standard support: As the industry moves toward standardized cost data formats, platforms that support FOCUS will make multi-cloud cost management significantly easier.
Common Azure FinOps Mistakes
Let me share the biggest I keep seeing out there: treating FinOps as a one-time project instead of a continuous discipline; ignoring non-production environments that run 24/7 when nobody is using them; over-provisioning out of fear rather than trusting the data; setting budgets with no one actually accountable for them; buying reservations without monitoring their utilization; neglecting tagging until retroactive cleanup becomes a nightmare; focusing only on rate optimization while ignoring usage waste (a 30% discount on something you do not need is still waste); optimizing only compute while overlooking storage, networking, and database costs; relying too heavily on manual processes instead of automating governance and reporting; and keeping FinOps siloed in one team without cross-functional collaboration.
Future Trends
- AI-driven optimization is moving from experimental to production-ready, with models that automatically rightsize resources, predict anomalies, and recommend reservation purchases.
- FinOps for Kubernetes and serverless is maturing as organizations need granular cost attribution for container-based and event-driven workloads.
- The FOCUS standard is making multi-cloud cost normalization easier across Azure, AWS, GCP and other clouds and SaaS platforms.
- FinOps-as-Code brings version control and automation to cost policies, budgets, and optimization rules.
- Sustainability metrics are converging with cost metrics as GreenOps matures – expect cost and carbon optimization to become dual objectives.
- FinOps embedded into developer workflows – surfacing cost data in CI/CD pipelines and pull requests – is shifting cost awareness left.
- Unit economics – cost per transaction, per user, per revenue dollar – is where the most advanced practices are heading.
Conclusion
If there is one takeaway from this guide, it is that FinOps is not a destination – it is a journey. Start with the fundamentals: achieve some basic quick wins to increase FinOps buy-in, get your tagging strategy right, establish cost visibility through proper tooling, and create accountability by assigning cost ownership to the teams that make spending decisions. From there, layer on more advanced and elaborate optimization techniques and build the automation needed to sustain it all over time.
The “Prius effect” is real – once teams can see their cloud costs clearly, they naturally become more cost-conscious and make better decisions. Your job is to give them that visibility and the tools to act on it. Whether you use native Azure tools, third-party platforms, or a combination of both, the principles remain the same: inform, optimize, operate – and keep the cycle going.
