Tag vs Resource-Based Cost Allocation
by Joe Kinsella
As cloud cost allocation becomes mainstream, there are two distinct models that have emerged: tag-based and resource-based cost allocation. While both models have the potential to meet the needs of an organization, the differences warrants a deeper understanding in order to select the right solution for you. This article will explore the two different approaches, and outline the relative advantages and disadvantages of tag versus resource-based cost allocation.
About Cloud Cost Allocation
Most organizations will have several different ways they want to report their costs. These perspectives will likely change over time and vary by stakeholder. For example, finance may want a monthly breakdown of costs by product line or shared environment; operations may need a cost breakdown by project or team; and engineering may want a cost breakdown by application role. While cost allocation of IT infrastructure has been a common and well understood practice for decades, its application to the cloud has been challenging due to the dynamic infrastructure, delegation of control, consumption-based pricing, and the increased scale of resources being managed.
What Are Tags?
Tagging was introduced by Amazon in 2010 as a way for customers to label AWS resources for organizational purposes. Using tagging, a customer might assign labels for categories such as department (e.g. marketing), product, environment (e.g. production), application (e.g. HRIS), customer, or application role (e.g. Cassandra). Once a resource is tagged, Amazon ensures usage associated with this resource is reported by this tag, allowing customers to more easily associate costs to different business perspectives.
Since the introduction of tags, Amazon has continued to expand its support for additional resources, and has added some higher level features that take advantage tags (e.g Cost Explorer). While tagging is almost always a core building block in any cost allocation solution, it does have some limitations you should be aware of. These include:
- Not available on all resources - While the availability of tag support across Amazon resources has increased over the last couple years, there are still many resources that are not taggable (e.g. CloudFront distributions, elastic IPs, S3 object).
- Not retroactive - When you tag an AWS resource (e.g. an instance), all usage related to this resource is permanently marked with your user defined tags. For example, if you turn an instance on but do not tag it until a month later, all prior usage associated with that resource will remain untagged.
- Point in time - When you tag an AWS resource, all usage associated with this resource is permanently marked with your tags. If you later change the tags for this resource, the usage prior to the change will continue to reflect its previous tags.
- Limit of 10 tags - AWS limits the number of tags associated with a resource to ten. While this is sufficient for many cases, it sometimes is not, resulting in customers being creative in assigning tag names in order to workaround the hard limit.
Two Approaches To Cost Allocation
In spite of these limitations, tags are almost certainly going to be a core building block in any cost allocation strategy. So the question is not whether to tag your resources (you should), but whether your allocation of costs should be driven by tags or resources.
Tag-based cost allocation involves analyzing one or more of the Amazon detailed billing reports to associate costs with specific categories (e.g. department). By adding up all charges for a particular tag, you can report the allocation of costs for all unique values for that tag (e.g. marketing, sales, engineering, IT). Tag-based cost allocation has the advantage of being quick and easy - but has the disadvantage of being less precise.
Resource-based cost allocation involves defining rules by which you partition your resources into business groups. These rules can utilize but are not limited to tags, and are automatically applied as new resources are launched and existing resources shutdown. To perform a cost allocation analysis by resources, you need to associate charges in the Amazon detailed billing reports (specifically the Detailed Billing Record or DBR) to resources, and then assign charges based on the membership of those resources in specific business groups. This approach has the advantage of being precise and able to compensate for the limitations of tags - but the disadvantage of being much more complex perform the analysis.
Resource-based cost allocation has a long history in corporate IT, where asset management systems are utilized to track the lifecycle of physical resources in support of reporting on their depreciating costs.
Which Is Right For You?
If you are looking for a quick and easy way to get a directionally correct sense of your allocation of costs, a tag-based approach is a great way to start. A great example of a quick and easy tool for tag-based cost allocation is the Amazon Cost Explorer, which is available for free from the AWS Console. This solution may also be sufficient for organizations running a relatively static infrastructure, with limited needs for cost reporting, and/or those that have infrastructure they changes infrequently.
For organizations that are larger, have infrastructure that changes more frequently, need to support compliance requirements, and/or have a need for more detailed cost reporting, a resource-based solution such as that provided by CloudHealth is often essential.
If you’d like to learn more about the industry’s first resource-based cost allocation solution, contact us at email@example.com