my dog learned polymorphism
The moose likes Architect Certification (SCEA/OCMJEA) and the fly likes Vertical Scalability - Decreases: Reliability, Availability Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Certification » Architect Certification (SCEA/OCMJEA)
Bookmark "Vertical Scalability - Decreases: Reliability, Availability" Watch "Vertical Scalability - Decreases: Reliability, Availability" New topic

Vertical Scalability - Decreases: Reliability, Availability

ankur rathi
Ranch Hand

Joined: Oct 11, 2004
Posts: 3830

Vertical Scalability:

Decreases: Reliability, Availability (single failure is more likely to lead to system failure)

Vertical Scalability means running more server instances on same number of physical machine. Right?

I am confused, why it will decrease Reliability and Availability? These two things should be same.

Cameron Wallace McKenzie
author and cow tipper
Saloon Keeper

Joined: Aug 26, 2006
Posts: 4968

Indeed, vertical scaling is when a variety of JVMs or other components are stacked together on a very powerful machine. If that machine goes down, you're through.

Availability is how much it is up, so vertical scaling means you have a problem if your single point of failure is down. Reliability is the fact that your server is up when you need it to be up. A car that breaks down only when you don't need it is still reliable, since it's there when you need it. It's just not always available. Still, they are similar concepts.

Benefits of Horizontal vs. Vertical Scaling

What is a cluster?

A cluster is the term given to two or more JVMs working together to serve up a common set of EJBs and Servlets. If you want to workload manage your applications, which essentially means having redundant JVMs on which your applications are running, what you do is set up a �cluster.�

With a cluster, when you deploy your application, rather than deploying to a single JVM, you deploy your application to the cluster. Then each member of the cluster, each Java Virtual Machine that is, is capable of handling requests from clients.

What is Vertical Scaling?

If a cluster is a collection of JVMs working together to provide a workload managed environment, then �vertical scaling� happens when each of those JVMs are running on the same physical machine.

Now I know what you�re thinking: that doesn�t provide any failover support? Well, if the cleaning staff accidentally kicks out the power cord on your server, then indeed, you�re going to experience some downtime.

So what benefit does vertical scaling provide?

Vertical scaling provides a variety of benefits, especially if your environment is heavy on hardware.

First of all, if one JVM goes offline, whether intentionally or not, the other JVMs can pick up the slack, so you do get a certain degree of failover, although its not exactly the level of failover we usually associate with workload management. With vertical scaling, we are still node dependent.

A more likely reason for implementing a vertically scaled environment is to take advantage of powerful, multiprocessor machines.

The fact is, despite the use of our modern, multithreaded operating systems, there are enough concurrent processes within a JVM to make having one java.exe process running on a multiprocessor system a fairly ineffective endeavor. To take maximum advantage of your multiprocessor machine, you should implement vertical scaling and have n-1 JVMs running, where n is the number of processors in your system, and 1 is the number between zero and two.

What is Horizontal Scaling?

Horizontal scaling occurs when you deploy an application across multiple physical machines. Horizontal scaling is traditionally what we think of when the term �workload management� is thrown around.

WebSphere makes implementing horizontal scaling incredibly easy. The first step is to install the base edition of WebSphere onto a couple of different machines, and then install the Deployment Manager on another machine. Make the base editions part of the deployment manager�s administrative domain, and then use the administrative console to create a cluster.

The WebSphere Administrative Console makes it very easy to set up JVMs on multiple nodes that will act as a cluster. When you subsequently deploy your applications to the cluster, the various JVMs on the multiple nodes will take part in serving up the application. If one node goes down, the other JVMs on other nodes will pick up the slack.
ankur rathi
Ranch Hand

Joined: Oct 11, 2004
Posts: 3830
Thanks Cameraon for nice explaination.
I agree. Here's the link:
subject: Vertical Scalability - Decreases: Reliability, Availability
It's not a secret anymore!