Cloud Cost Allocation Sankey Diagram: Services to Teams

Follow a monthly cloud bill from the services that generate it to the teams that own it and the environments it runs in. Replace the sample figures with your own billing export.

A cloud cost Sankey follows one invoice three ways: which services cost the most, which teams own that spend, and which environments it runs in. It shows how much of the bill nobody owns.

The example is a 270 thousand euro monthly bill. Compute, database, storage, network and support and licences are the five sources. Each is split between the Platform, Product and Data teams, and the last stream, support and licences, has no owner and goes to a Shared and untagged node. The teams then split their spend between production, staging and development.

A billing export can show each of those cuts as a table, but not how they connect. Here the reader sees at once that compute is the widest source, that Product carries the largest share, and that 20 of the 270 has no tag. For a view of the same money as a company budget, see /sankey/department-budget-allocation; for cost split by overhead rule rather than by service, /sankey/cost-allocation.

How to read this diagram

  • Compute is 120 of the 270 k€ (44%), the widest source.
  • The Product team owns 120 (44%); Platform and Data own 65 each (24%).
  • Production takes 170 (63%), development 65 (24%) and staging 15 (6%).
  • 20 k€ (7%) has no owning team and lands in Needs an owner.

The data behind it

Invented figures for illustration. Not data about any real company, team or system.

Cloud Cost Allocation Sankey Diagram: Services to Teams (k€)
FromToAmount (k€)
ComputePlatform team40
ComputeProduct team60
ComputeData team20
DatabaseProduct team35
DatabaseData team25
StoragePlatform team10
StorageProduct team15
StorageData team20
NetworkPlatform team15
NetworkProduct team10
Support and licencesShared and untagged20
Platform teamProduction45
Platform teamDevelopment20
Product teamProduction85
Product teamStaging15
Product teamDevelopment20
Data teamProduction40
Data teamDevelopment25
Shared and untaggedNeeds an owner20

The same data as CSV

source,target,value
Compute,Platform team,40
Compute,Product team,60
Compute,Data team,20
Database,Product team,35
Database,Data team,25
Storage,Platform team,10
Storage,Product team,15
Storage,Data team,20
Network,Platform team,15
Network,Product team,10
Support and licences,Shared and untagged,20
Platform team,Production,45
Platform team,Development,20
Product team,Production,85
Product team,Staging,15
Product team,Development,20
Data team,Production,40
Data team,Development,25
Shared and untagged,Needs an owner,20

How it works

  1. Export one month of billing

    Use the provider's cost export with tags or labels. Keep one month and one currency.

  2. Total by service and by owning tag

    Sum cost per service, then per team tag within each service. Anything without a tag goes to a Shared and untagged team.

  3. Split each team by environment

    Sum each team's cost per environment tag. Keep untagged cost visible rather than assigning it to production.

  4. Check the balance

    Each team's inflow must equal its outflow, and the total must match the invoice.

Frequently asked questions

What if shared services cost money for everyone?

Either leave them as their own node, as here, or split them by a rule you state, such as headcount or usage. Say which in the data note, because the rule moves the widths.

Can I show the trend over several months?

Not in one diagram: the widths show a single period. Make one chart per month and compare the shares, or use a table for the trend.

Edit this cloud cost Sankey

Open the example as your own chart and enter your monthly cloud costs.

Edit this cloud cost Sankey

More in Sankey diagrams