Like most enterprises, you are probably managing your Azure resources and services centrally and need a way to distribute and “showback” or reallocate the cost of services back to the organizational units that use those services.
Sharing cloud services provides greater flexibility and scalability when they can be dynamically allocated. But as your cloud adoption grows, the quantity of billing and usage data and the speed at which it is delivered can make allocation and reporting a challenge without a strategy and a system to efficiently assign the costs of cloud resources to their specific users.
What is cost allocation?
Cost allocation, according the FinOps Foundation, is “a process of identifying, categorizing, and assigning the costs of cloud computing resources to specific users, departments, projects, or any other relevant grouping within an organization using structural hierarchies, tags, and labels available from cloud service providers or third-party tooling platforms.
When you allocate costs, you divide up a consolidated cloud invoice to align usage costs with the different business units, engineering environments, or cost departments. In essence, you are assigning costs to different groupings within your organization based on their consumption of resources and application of benefits to more accurately report costs and drive accountability.
To be clear, cost allocation doesn’t affect your cloud provider invoice, but it is a great source of data for cost analysis and optimization. Your invoices can be analyzed, using a combination of hierarchy and metadata to allocate costs to various organizational, functional, or financial targets within your company. Resources and hierarchy groupings that can be directly attributed to an internal target can then be mapped to that target. Shared resources can be identified as shared costs, and then various models of distributing those costs can be applied.
How cost allocation works in Azure
You start by defining your resource and billing hierarchy, including management groups, subscriptions and resources groups.
- Management groups are logical containers that hold subscriptions and other management groups, forming a hierarchy that can be used to apply policies and access controls across multiple subscriptions. They facilitate cost allocation when you can group your subscriptions according to business units, environments of other criteria that reflect your unique cost structure.
- Subscriptions help group your Azure resources that may or may not have a billing relationship and can be used to implement access control, governance, and cost allocation policies. You can view and manage your subscriptions in the Azure portal, PowerShell, CLI, or REST API.
- A resource group is a logical container that holds related resources for an Azure solution and can be organized by category, project, environment, or other criteria.
Develop your tagging strategy
Tags are a great way to augment your resource and usage data with more context related to your business. Tagging–the use of tags or labels–can be applied as metadata to most resources and groups, and then appear in the usage data to provide the visibility to manage and allocate costs across the different groups.
You can create Azure policies to ensure that all your resources are tagged in a certain way to comply with your tagging strategy. Be aware that not all Azure resources emit tags in their usage. To ensure all usage records are tagged, use tag inheritance in Cost Management to apply resource group and subscription tags to child resources, so you don't have to tag every resource manually. You can also apply billing tags to MCA billing entities, including billing profiles and invoice sections.
To maintain consistency, you can standardize and automate your metadata conventions for cost allocation to help enforce a consistent hierarchy and naming strategy for logical groupings of resources along with resource-level metadata.
Cost allocation rules
You can create cost allocation rules in the Azure Portal to split the costs of shared services by moving costs between subscriptions, resource groups, and tags. You can elect to split costs by percentages or proportionally based on your current usage of compute, storage, or network resources across the specified targets. Configure the allocation percentage to create an allocation rule. When the rule is active, all the selected source's costs are allocated to the specified targets.
The goal of cloud cost allocation is to achieve greater financial transparency and accountability. When you connect your usage data to performance and other KPIs, the resulting cost awareness and spending control can improve business outcomes and help prioritize your cloud investments. The immediate payoff is your ability to quickly view the impact of allocated costs in the cost analysis section of Azure Cost Management to get a breakdown of the cost generated by lays the foundation for more accurate forecasting and insights to inform business objectives and opportunities for cost optimization.
Why cost allocation matters for FinOps
Cloud billing and usage data is aggregated into a few data sources, often with millions of lines of data, delivered multiple times per day. There are many layers of cost allocation and multiple ways that you can view and analyze the data. Some teams may need more granular breakdowns, while others will want to see costs divided by cost center, or production versus research and development costs.
FinOps solutions and cloud providers are adding the capability to more flexibly manage resource metadata and hierarchy groupings, either within the cloud provider or in the cost and usage data delivered by the cloud provider. Tools provide mechanisms for distributing shared cost items, but it’s up to you to use those capabilities to develop a metadata strategy for consistently listing and applying values, including all details governing the allocation process, compliance requirements, and metadata mappings. And then, as with any FinOps capability, you will want to solidify and automate your KPIs to benchmark and forecast costs and track improvement and drive accountability.
The data collected and the financial transparency achieved can also enable other FinOps capabilities such as forecasting, budget management. And benchmarking your usage is a prerequisite for managing anomalies.
To learn more about this connection please visit this article: Cost Allocation (Metadata & Hierarchy) (finops.org)
Learn even more about implementing FinOps best practices at aka.ms/finops/solutions.