As I have noted in my other posts, it is hard to overstate the benefits of Cloud Computing. However, the ability to scale at the click of a button has downsides: it is too easy to over-provision and waste resources. In this post, I want to explore the “Why” and the ways to identify savings.

In my experience with three companies, I can say that every one had significant cloud overspend, probably in the 10-25% range. Cost control of the Cloud is a generally overlooked aspect of Cloud Computing.

Why Overspend?

Let’s take a simple example: a sandwich shop. For every sandwich order, you opened up a fresh loaf of bread, picked two slices of bread, and then threw the rest of the loaf away. That would be nuts, right? It is obvious that $1 or $2 is wasted on each sandwich.

No company wants waste. However, the key word in the above paragraph is “obvious”.

With Cloud Computing, waste is not obvious. Unless you proactively monitor how your resources are used, it is incredibly easy to overspend.

As a developer, when you are creating new software, you are presented with a myriad of options on the compute size, storage and many other options. It is virtually impossible to figure out your needs when first building the software. The vast majority of developers over-provision the resources for their development.

Cost Analysis Tools

Fortunately, there are many cost analysis tools.

Find the tool that is most applicable your Cloud Provider and suits your needs and use the tool!

These tools can identify underutilized resources. Depending on the specific resource, e.g., compute, they can be very accurate. For other resources, e.g., backup storage, it may be harder to gauge how efficiently those resources are use provisioned.

My experience is primarily with AWS and they have a selection of tools and resources to help you understand your spend. There are also free reports AWS generates (Trusted Advisor) to identify under-utilized resources.

Reducing Cost

I have found there are three levels of Cost Reduction, in order of difficulty.

Unnecessary Resources This is the easiest place for savings. When you look at your overall spend, across all your accounts, there will almost certainly be resources which are unused and can be removed. These maybe from older projects, evaluations, proof of concept (POC) projects, etc.

As a Security Engineer, about a third of the time I have identified resources which needed to be remediated, the project team has said “we don’t really need that” and simply deleted the resource.

It is important to have a periodic review of all your Cloud Resources and remove unnecessary resources.

Over-Provisioned Resources As I have noted, Cloud Providers make it too easy (and painless) to over-provision resources. Do you really need a 100GB database for a simple test environment?

Some of the over-provisioning may be obvious, but not all of it is.

Use a Cost Analysis tool to review and report on all the resources in your environment and identify possible cost savings.

Once over-provisioned resources are identified, it should be possible to re-provision to a smaller footprint with a lower cost. Re-provisioning, may require a few additional steps, e.g., backup the database and restore it.

Cost Engineering This is the most challenging step. In this case, you may institute policies like “turn off all development environments over the weekend” to save costs. Another approach might be to re-engineer parts of the product to run on lower-cost services or delete old data.

For a Cloud based software company, Cost Engineering should be a part of the company’s discipline, just like Quality.

Special note to SaaS Companies

Since your Cloud spend is going to directly affect your cost-per-customer and gross margins, the savings here could have a large effect on the companies valuation.

Conclusion

It is not easy to build a product in the Cloud and I do not want to trivialize the effort. However, it is important to begin looking at how the Cloud resources are being utilized as part of the development cycle.

There are great tools out there, use them!

Secondly, as the Cloud advances, there may be opportunities to re-engineer part of the product to realize savings.

Finally, for mid to large scale SaaS company, the savings from using the Cloud more efficiently could help increase your company’s valuation.


One response to “Controlling Cloud Costs: the Darkside of Infinite Scale”

  1. Practical Application of AWS Tags – Nicki’s Blog Avatar

    […] Tags are critical to any resource management, and therefore any cost management. By adhering to AWS’s recommended Tagging policies, you will find that many of the standard AWS Reports, including AWS Truster Advisor Cost Management, are more useful. See my other blog post on Controlling Cloud Costs. […]

    Like

Leave a comment