No matter how well your system is put together, you can’t really know how it will perform under stress until you test it. The dynamics of cloud computing allow you to gauge your system’s limits through capacity planning in a way that was never possible before.
Now, you can go beyond a simple stress test and try different configurations to determine how to gain the best performance from your application. Traditional servers, and even traditional hosting services, hindered capacity testing and planning with exorbitant fees and difficult-to-add server resources.
Once upon a time, you had to have a physical box to run your applications. It was impossible to do any serious scalability testing because of how difficult it was to bring in another server to see what the effects of more resources might be. Web hosting took us a step forward by eliminating the need to have a physical box, but it still lacked the flexibility needed to perform “full-out” capacity planning and testing.
So how are you able to perform this “full-out” capacity planning in the cloud? By using the flexibility of the cloud environment to manipulate your tests. For example, let’s say that use of your application is growing at a rate of 10 percent per month. At the end of two years, you will have nine times the number of visitors. Can your application scale to that extent?
To find out, you can set up a temporary test configuration in the cloud and stress it with some simulated peak traffic to see how it performs. You can double the number of web servers, or you can use larger and more powerful web servers, and see what difference it makes in performance.
Being able to manipulate your environment during testing is the key to identifying any bottlenecks or other issues. In fact, our experiences with capacity planning in the cloud prove that many applications don’t scale, no matter how many web servers are added to handle the workload. So, your test might find the bottleneck in the database or some other aspect of the application.
When you’re doing capacity planning in the cloud, you can also mix and match the resources you use in your test. You can choose a small, medium, large, or even an extra large server; you can add memory; and you can add CPU. By testing every different kind of combination, you can see which server base and which configuration best suits your application.
The flexible nature of the cloud also allows you to create a contingency for any potential high-traffic scenario that you might face in the future. Because of the different combinations of testing you’ve tried, you’ll know when to deploy which plan of action, whether that means adding another web server or more memory to the database server.
So while the cloud has created a golden opportunity, no test will give you a realistic assessment of performance if it hasn’t been set up correctly. But that’s another topic that I’ll address in my next post. Stay tuned.