Combining Dedicated and Shared Cost
It is common for cost of a SaaS product to include some dedicated resources, used exclusively by the product, and some shared resources, used by many products. In the previous example, Split Shared Costs Using Telemetry, we saw how to split the cost of shared resources proportionally among different products. In this example we'll build on that and make a new dimension that combines the shared and dedicated cost.
Splitting Shared Cost
Here is the CostFormation YAML from the previous telemetry examples. It creates two dimensions, one to isolate the cost of a "Shared Data Lake" and a second to split that cost using telemetry into two elements: Email and Messaging. (Note, the element names are specified by the telemetry records, not shown here.)
Dimensions: SharedRDS: Name: Shared RDS DefaultValue: Not Shared Rules: - Type: Group Name: Shared Data Lake Conditions: - Source: Service Equals: AmazonRDS SplitDataLake: Type: Allocation Name: Split Data Lake AllocateByStreams: Streams: - rds-writes-by-product
Creating a Product Dimension
... Product: Name: Product DefaultValue: Other Rules: - Type: Group Name: Email Conditions: - Source: Tag:Product Equals: email - Type: Group Name: Messaging Conditions: - Source: Tag:Product Equals: messaging - Type: GroupBy Source: User:Defined:SplitDataLake
First we create a
Group rule for each product type. In this example we only have two: Email and Messaging. Each rule uses
Conditions to specify the resources used exclusively by that product. In this simple case these resources are identified simply by an AWS tag -- in a real world case this would most likely be more complex.
The final rule is a
GroupBy used to add in the shared cost from the
SplitDataLake dimension we created earlier. Since that dimension uses the same element names (Email and Messaging) the result combines the shared and dedicated cost.
The approach is the same for creating a "Product" dimension where the split is done with a Proportional Allocation dimension. The main difference is that the
GroupByrule would be adjusted to reference the Proportional Allocation Dimension.
Updated 2 months ago