When test results show that the current throughput is restricted by the capacity of the server but target workloads are not yet met, this is a situation where you can achieve higher scalability of your web apps by implementing clusters to your environment. Clustering achieves higher scalability by introducing more servers or nodes to expand the capacity of the environment. Obviously, the benefits of adding hardware include higher capacity, reliability, availability, and scalability. But also consider that clustering adds complexity to your deployment by requiring added maintenance and an increased need for deployment/upgrade automation. To ensure quality of the environment you must always validate your clustered environment and prove out the increased scalability. Find out how here. It’s not as easy as “3 nodes in a cluster will support 3x the workload.”
- Posted by: Rebecca Clinard
- Posted on: August 28 2012 21:42 EDT
I thought for sure that the "find out how here" would reference Yahoo's open source contribution of a platform benchmarking system .... but its worse. "To ensure quality of the environment you must always validate your clustered environment and prove out the increased scalability." Actually folks, the first thing you have to do is validate your validation scenario ... on the existing system. And preferably one step the opposite direction also. Note that the steps put forward are appropriate for nothing more than a validation test. They fall far short of gathering the information necessary for architects, system engineers and dev experts to identify opportunities and rabbit holes with respect to moving not just up the hardware ladder, but planning next revisions of software systems. The purpose being to leverage knowledge about the domain, rather than blindly accept a singular validation step. There is for example, no reference to industry applications of queueing theory which markedly track accuracy with capacity planning in distributed or cluster environments.
Bringing in additional hardware or software should be looked as the last option for load testing any application / architecture. There are lot number of correction steps that are involved in validating the application against the given / specified non functional requirements.
Usually during the development phases the more focus is put on meeting the functional aspects which abide by the architecture underlayed. But usually not enough time is spent initially to validate fully on non functional aspects.
For every hardware / softwares (application servers) there are lot number of configuration parmaters that can affect the system performance drastically. All these should be properly tunned in and validated before reaching to the final conclusion of adding extra hardwares.
Also across nodes syncronization factor should also be kept in mind while deciding on the clustered approach as it will also going to eat up system time.