Infinite isn’t Infinite…

Sutro Tower at Sunrise | Credit: David Yu | Official Site: SutroTower.com

At first, I thought to myself; with all the flexibility that comes with Public Cloud, what is the point of Capacity Planning when your resource pool is effectively infinite…

When I first started using AWS, I was blown away by the contrast…

There was no longer a contract enforced need to make a business case to support the purchase of hardware with a 3–5-year replacement cycle.

The cost of failure was all but eliminated, as was the (non-monetary) cost of undersizing the resources to the load.

I could easily upgrade in place by taking a snapshot and redeploying on new hardware.  Environments could be configured to allow for Horizontal AutoScaling.  We could embrace the deployment of Cattle instead of Pets.

At first, I thought to myself; with all the flexibility that comes with Public Cloud, what is the point of Capacity Planning when your resource pool is effectively infinite.

But it isn’t truly infinite.  Somebody still needs to pay for those resources at the end of the month.  There’s a cost to everything and it’s not always measured in money.

Then I noticed a parallel in another industry…

Efficient provisioning of resources in the Public Cloud is very similar to Energy Production in the Utility Industry.  There’s a desire to not to pay for more resources than are necessary to meet the load.  Likewise, Utilities need to match production to load.

So, what can we learn from the Utility Industry?

In the Utility Industry, Energy Generation was historically split into Baseline and Peaker Plants.

Power to satisfy the baseline load is produced using plants that tend to be less expensive, but can’t be easily throttled.  The Peaker Plants are there to handle the load when demand “Peaks” above the baseline, but there’s a higher cost per kWh.

If we were to draw a parallel with AWS EC2 in particular, the On-Demand Instances are typically more expensive, like the Peaker Plants.  The Reserved Instances or Private Cloud Resources would be similar to the Baseline load Power Plants.

So where does Capacity Planning come into play with the Public Cloud?

The Purpose of Capacity Planning in a Public Cloud world is to allow us to identify the baseline load that we should be handing off to the Reserved Instances.  If we’re operating in a Hybrid environment, we might even hand it off to our Colo hosted Private Cloud resources.

That’s not to say that we’ve been “doing it all wrong.”  We don’t need to start with Capacity Planning.  But it might be a “good idea” to revisit our resource utilization assumptions on a routine basis and validate that we’re using the right blend to optimize our spending. 🤔

You might also like

Starting the Process

Confucius said that a journey of a thousand miles begins with a single step. After starting and restarting a few books from my Safari Bookshelf,

Parameters vs. Properties

Parameters and Properties are different in Puppet. A Parameter defines HOW a Resource should be managed, but NOT the value. (i.e.  Use init instead of