Anti-Patterns in Tech Cost Management: Can’t Attribute Costs

Series Index

Introduction
Anti-Pattern 1: Not considering scale
Anti-Pattern 2: Bad cloud strategy
Anti-Pattern 3: Inability to assign/attribute costs
Anti-Pattern 4: No metrics or bad metrics
Anti-Pattern 5: Not designing it in
Anti-Pattern 6: Cost management as a standalone
Anti-Pattern 7/8: No ongoing reviews (current and potential)
Anti-Pattern 9: Across the board cuts
Anti-Pattern 10: “A tool will solve the problem!”
Anti-Pattern Bonus: Don’t do rewards programs!
A few thoughts: Three things you can do right now, for yourself and your team
Wrap up

In the ancient times, attributing costs was not an issue. The IBM mainframe was designed around the assumption that there would be a small number of computers and that the computational work of the world would be time-sliced among them. [Thomas Watson never said that there would only be a market for five computers1, but they certainly didn’t envision thousands, let alone billions.] Cost tracking was built in to the design of these beasts, and into the operating system that ran on them. Applications and administrators could make use of this. It wasn’t perfect, but it existed.

Current computing models emerged from the personal computer revolution, and were then scaled up into small, and eventually much larger servers. DOS, Windows, Mac, even Linux, had no built-in concepts of tracking costs. These were added on later, by third parties, in an inconsistent manner.

The first modern cloud provider, AWS, emerged from an organization that did not believe in internal cost attribution as a core way of doing things. They needed to build that capability, but it too was somewhat an afterthought. Speaking as somebody who worked at AWS for close to five years, a year of it in the billing org, I think that to much of AWS, billing what they run is still an afterthought.

Some cloud providers do somewhat better. And all have added a lot of capabilities for fine-grained cost attribution. The modern cloud can now allow us to set, enforce, and manage cost attribution as effectively as an IBM mainframe could 50 years ago.

The legacy remains

Many enterprises have adopted these practices: use of multiple accounts with established organization structures, use of consistent tagging, and above all having the discussion of who exactly should pay for what. But I still routinely encounter fairly sizeable enterprises that are still using a single AWS account (because that was the de-facto recommendation for a long time), that is still tied to the long-departed founder’s Amazon retail account.

Shifting to good attribution is difficult, and not making an effort to do it up-front is wrong. Doing it later is a politically difficult thing to do in large enterprises, and can take months of experimentation as the enterprise moves from no good data at all, to good directional data, to hard, agreed upon numbers that everybody can work to.

Internal platforms and systems make it hard

It’s even harder when internal customers are using shared platforms or systems. Even if these platforms are built on top of cloud products, and the precise cost of each platform can be known, it’s very challenging to decide how to further attribute the costs of the resources of the shared platform. As with anything else in cost accounting, “who owns what” is a political one.

It can be even harder if those internal platforms and systems are not built on top of cloud products and infrastructures, and instead you need to determine for yourself how much they cost to run in the first place, let alone how to split up the costs among consuming applications.

High “cloudiness” can make this easier. If you treat the cloud as a data center, there are more layers of attribution than if your application service owners can work more directly with cloud-native services.

Data is especially hard

The cost of data platforms is especially hard. Every piece of data will have a creator, at least one consumer, and usually that one guy running a horribly crafted query that consumes 90% of the database CPU and I/O for 12 hours of every day. Who owns the cost? There are many recommendations, and I’ve often made some. But for the purpose of this presentation the answer is “it depends.” Which is what’s so hard about it.

Start now

If there is some kind of attribution mechanism in place, you should be thinking about how it can be improved, and how it might need to change given expected changes in your environment. If there isn’t a good one, you should start thinking about what it should look like, because eventually somebody will. You should also be thinking about the best tool to use to do it. All cloud providers have a lot of overlapping capabilities. Knowing them and understanding how to use them will put you ahead of others in any discussions.

Attribution is one of the many spaces in cost management where you can either do it, or have it done to you. The former is far less unpleasant.


  1. Contrary to popular belief, Thomas Watson never said that he believed there was only a market for five computers. It is possible that one of his other statements was taken well out of context, or that the statement was simply made up many years later by one of the many people happy to discredit IBM and the mainframe idea in general. ↩︎