Patterns / 5. Changing the Flows
Pattern 5.3
Allocate by Tag, Not by Topology
Split a shared bill by tagging resources and agreeing percentages for the rest, so that nobody has to change the architecture to get an accurate bill.

In This Context
Once a shared cost has to be charged out, someone needs to know who incurred it. The quickest way to get a precise answer is to give every payer its own resources. At Connector, that’s what happened: services were isolated so that each team’s costs could be measured, and shared VPCs were split one per team. Traffic between the new VPCs cost more than traffic within the old ones, and services were opened up to the internet to keep them talking. The architecture was redrawn to fit the bill.
You notice this when networks, accounts, or services are being split for reasons nobody can explain technically, and cost reporting turns out to be the reason.
- Finance wants a bill for each payer.
- Physical isolation produces a precise bill fastest.
- Shared resources are cheaper to run, and easier to help each other on.
Therefore
Use the cloud provider’s tagging to attribute resources to the units that use them, and split whatever can’t be tagged by percentages agreed in advance. Accept a less precise bill in exchange for leaving the architecture alone.
- Agree the percentages for untaggable shared costs with finance before the first bill goes out.
- Combine with Charge the Unit, Not the Team, so there are fewer boundaries to tag.
Consequently
- Nobody has to change the architecture to produce the bill.
- Shared resources stay shared, and teams have no billing reason to split them.
- The bill is less precise, and the agreed percentages become something to argue over (see Choose the Key Carefully).
Seen In
Chapter 17, “Designing a Chargeback That Doesn’t Become Connector’s”; Chapter 14, figure “Connector’s VPCs before and after chargeback, and whose budget pays for each part”; Chapter 17, “Chargeback” (the summary of what chargeback did at Connector).