2 min lesson
Splitting shared costs
Match each case in "Splitting shared costs" to the signal and response that fit it.
Step 1 of 2
Splitting shared coststhe honest-hard part
Some spend won't tag cleanly: a shared EKS control plane, a multi-tenant cluster, the NAT gateway every service egresses through. Pretending these are free hides real money. The move is to pick a defensible allocation key and be transparent that it's an approximation, not a measurement.
Allocate by each team's requested CPU/memory (or actual usage).
Kubecost or OpenCost reads this straight from pod requests.
A fixed "platform tax" spread proportionally to consumption.
Name it explicitly so teams see the cost of the paved road.
Attribute by source service from VPC flow logs where you can.
What you can't split, pool - and make the pool visible, not hidden.
Split by log volume per service or namespace.
Often a surprise line item worth attributing on its own.
"Attribution has to be enforced where the cost is born, so I gate the required tags in CI - an untagged resource fails the plan, not next quarter's audit. Then I turn the bill into unit economics: not '$640K on inference' but cost per 1,000 completions, so we can tell whether spend grew from more users or a more wasteful path. The shared spend that won't tag cleanly - a control plane, the NAT gateway everything egresses through - I split by one honest, named allocation key, and I say out loud that it's an approximation."