Cloud Computing: Auto-Scaling pros and cons
There is some debate in the world of cloud computing about the value of auto-scaling. Auto-scaling is an option provided by cloud infrastructure providers to allocate additional resources from the cloud when an unexpected increase in operational load occurs.
One of the main selling points of cloud infrastructure is that users only pay for the resources that they actually use. There should be no need to pay for capacity that is not being used. This is precisely why many recent startups ups love the concept of cloud computing. In this current economic climate, the traditional route of setting up an internal IT infrastructure capable of meeting possible exponential growth is prohibitively expensive. Also, it pulls your investment capital in two directions at once. Firstly, explosive growth usually requires major investment in marketing. Secondly, there is a lag time for the procurement and implementation of IT infrastructure, so you have to hope that the marketing budget is being spend wisely and that the expected user growth will follow. If the marketing budget fails to deliver, you now have two problems to deal with. You need a new marketing strategy and you are also paying for a grossly underutilized IT infrastructure. This is a nightmare scenario for any recent IT startup.
What to do? Marketing is, to some extent, a black art with no guarantee of success. However, cloud computing can solve the IT infrastructure procurement problem. At the core of the cloud computing offering is a proposition where the cost can be closely aligned to the revenue derived from the provision of the infrastructure. However, there are scenarios where this is not true.
A common concern is a distributed denial of service attack (DDoS) upon the application from a hostile third party. Some argue that the application provider should cope with the attack and continue to provide normal users with their services. Auto-scale is an obvious solution to this problem, but is the cost justified? This question has to be left to the service provider to answer. Where the case for auto-scaling is dubious, is when the application exceeds its known capacity. In order to know the capacity of the system, it needs to be tested to the maximum expected load. If no load testing has been done, how do you know what capacity you can actually scale to?
Many cloud advocates give scalability as the biggest benefit delivered by cloud infrastructure, but this misses an important point. All software architectures have their limits and you can only truly know that limit when you actually see it occur. This is the reason why you should load test the architecture before deploying to your customers. Not only will there be natural bottlenecks in any given software system, there are also likely to be defects in the construction that are only triggered under operational loads. Simple functional testing will not uncover these problems. They are performance related and only performance testing will uncover them. If you let your cloud service provider auto-scale your application and it hits a performance related bug, you have effectively given your cloud infrastructure provider a blank cheque to spend your money on feeding buggy software, rather than providing the services that you thought the software was delivering.
Auto-scaling has its place in the cloud, but it needs to be used wisely. It is not an alternative to capacity planning and it does not eliminate performance bottlenecks and performance related bugs. If you want to auto-scale your cloud infrastructure, you must know its limits, and that can only be achieved with a rigorous phase of load testing before the system is declared operational.
Tags: cloud testing performance
You can comment below, or link to this permanent URL from your own site.
October 7, 2009 at 2:29 pm
Your blog has nice info on cloud computing. Keep up the good work. I think i can invite you to publish your article
. you will be receiving my invitation soon. All the best