Cloud computing is changing the landscape for Technology projects and initiatives in many ways, but today I wanted to take a look at how cloud computing can help reduce risks when doing server capacity planning for a project.
Traditionally, server capacity planning has consisted of gathering application / database / processing specs, talking to the business about growth projections, and balancing initial cost vs. future capacity needs. One constant in many projects is that the initial processing needs are smaller than what is predicted for the future. However, there are many times that it doesn’t make sense to buy the full capacity needed to support the long term growth upfront.
Back In 1999, capacity planning was easy. Take your largest growth estimates, multiply by 3, then disregard the results and buy the biggest server you could find. Cost conscienceless was not an issue (I remember having to track down several $500k servers because there was no justification or documentation needed to get a P.O. cut). But after 2000 / 2001 this all changed.
Capacity planning evolved into (still largely is to this day) the act of balancing the initial project investment with the ability to incrementally scale to meet future growth plans.
There are two basic methodologies for scaling – vertical and horizontal. Vertical scaling is done by adding additional resources (cpu / ram / etc) into an existing server to handle growth. Horizontal scaling is accomplished by adding more distinct servers to the processing mix. Capacity planning for an app that requires vertical scaling tends to be carry more financial risk and is the focus of this post.
An example of vertical capacity planning: For a project that has 1,000 year one users but growth projections predict 1,000,000 in three years, a common vertical capacity planning methodology is to buy a server that fully loaded would be capable of handling your top end user count but initially only spend the money for a minimal base configuration. As the usage grows, you then pay an incremental cost to add more capacity to the server to support the increase in usage.
When you use this approach, one of the main decisions comes down to how big you want your server to be when it is fully loaded. While the cost per additional cpu’s or ram is about the same for any given server family, the upfront cost of buying a server with greater scalability is substantially more (buying base configuration server scalable to 8 cpu’s is more than the base config of a server scalable to 4). To look at some quick numbers, I pulled up the HP store and looked at the Proliant Rack Server line list prices. The base cost for a server scalable to 2 cpu’s is $885, base cost of one scalable to 4 is $8,400 and one scalable to 8 is $17,400.
Basically, you are paying a premium for additional scalability. In our above example, if you had spec’d a long term need for a 4 cpu server, you are paying a $7,500 scalability premium over the base model to be able to eventually scale to 4. This is based on the assumption that your growth predictions are correct and that you have accurately turned user growth into cpu / memory consumption. If you had come up with an 8 cpu box in your capacity planning exercise, your scalability premium would be around $16,500.
Not only are you paying somewhere between 700% – 1600% over the base configuration for a scalability premium, you have increased your risk exposure if your capacity or growth numbers were off. If your capacity numbers were high or the business did not meet growth projections, you have spent more money than is really needed. If you missed low or the product surpassed expectations, you now might have to buy yet a bigger server which makes your initial investment obsolete.
One of the beauties of cloud computing is that it changes this scenario by not forcing customers to pay the scalability premium. If you want to start small, you pay a small rate for the cloud resource and as you grow, you pay for the additional capacity you need, not for the ability to add capacity. For example, I calculated the SoftLayer Cloud Computing scalability premium to be about 4.5% to go from 2 cpu cores to 8 cores: (monthly cost of 8 cpus – (monthly cost of 2 cpus * 4)) / (monthly cost of 2 cpus * 4). From 2 to 16, the premium was actually negative.
Another benefit of cloud computing on vertical capacity planning is that there is no prolonged turnaround time for ordering and installing of new capacity. Your server is virtualized, so if you decide you needed 8 more cpu’s and 8 more GB of ram for your cloud instance, fill out a quick form, pick an upgrade date and go.
While these are just a couple of the ways cloud computing can benefit vertical capacity planning and reduce risk, horizontal capacity planning with cloud computing is even easier. Think: click a button to make a new copy of a cloud computing instance in a hurry… but maybe that will be in another post.