It's both. The performance improves because you split workload between servers in your cluster. The availability improves because fault-tolerance of two boxes is astronomically higher than one. More than that, modern app servers replicate state information of servlets and some beans so in case of one box failure the second one should seamlessly take over so user won't even know what happened. However , this is more of Part III question. When they ask you how your system improves availability and perrformance you can proudly say - I designed for clusters!!!
Actually Clusters increase scalability but not necessarily performance. In other words adding nodes to your cluster will definitely increase the maximum number of concurrent users but may or may not decrease the average response time per user.
I never said no to availability. Clustering definitely increases both the availability and reliablity of the Application. You are reading too much into things. Just because someone writes an article that says "Clustering good, better Availability", doesn't mean that this is the only benefit. It just happens to be the focus of the article. Don't forget that there are two types of Scalability: Vertical and Horizontal. Clustering is a form of Horizontal Scalability. Most J2EE Application Servers support both. Regardless, you are getting into too much detail. The exam itself is very high level when it deals with these things. Questions are very straightforward.
Performance: the speed that the 'application' serves up pages and performs tasks. Availabilty: use serial/parallel calculations. 2 independent ISP's increase availabilty, 2 (serial) firewalls (i.e. for a DMZ) decrease availabilty. Scalability: Vertical - adding RAM, number of hard disks etc. Horizontal - adding JVM's, adding boxes to the cluster, adding webservers. Clustering increases availability, is an example of horizontal scaling, may increase performance since it will distribute load (since performance is usually a function of load). Was that the last word? I doubt it...! Simon
Since the specification states that there are 2 web servers I assume that there exists a Load Balancer, that sits in front of the 2 web servers. what type of load balancer should be used ? Software / Hardware Does the Load Balancer perform addtional jobs like , decrypt the HTTPS requests from the client and send only the HTTP request to each web server ? Is the session state shared across the 2 web servers ? If we are using a load balancer, doesnt it become a single point of failure ? Or do we have clustered LoadBalancers ? In order to maintain the user session the does the Load Balancer read the information in the http request header, Cookies, URL readings and based on the information read, the load balancer sends the request to the appropriate web server ? Vivek