Most people will argue that availability is always important. I am not too sure if this is always the case. Availability comes with a high price. This price that must make sense to the business.
Availability in Java EE servers like JBoss AS or Weblogic AS often boils down to very expensive session replication. People don't often even understand the trade-off they are making with yet another important quality requirement: “scalability” (even in the case of optimized replication schemes found in Weblogic or JBoss' “buddy” replication). But that would be the subject of another blog entry.
The value of an application server for web application when it comes to a cluster is session replication. The hardware load balancer does most of the hard work of making sure request end up at the right server. It is only when the software architecture decides to store session state in the volatile member of a sever, that clustering capabilities of an application server becomes relevant. Again if you have the opportunity to store the session state in the browser (for example using hidden fields) the server becomes stateless, and therefore the load balancer can just pick and choose any of the application serve instances available.
Somehow people and in particular software architects seem to find session replication important. Putting architectural alternatives aside, what is the problem if a client session gets lost in the “unlikely” event of a sever failure (“unlikely” does not have the same strength as the flight safety instructions I just had to listen to again)
No but really what is the problem if a client looses its session state and is told “something went wrong”. Keep in mind to solve this “problem” you would have to invest in IT development, Application server capabilities and most important: server and network infrastructure. This kind of availability does not come for free. Servers need to communicate with each other to replicate the session state. And how is the business going to win that IT investment back? What if the lost shopping carts consist of pencils and stationary? Would not loosing the shopping cart session justify the investment needed? (read that again!)
What is wrong with the occasional message: “sorry we were unable to service your request”. Why not show them an error page with a link to your competitor! Or be honest and tell them “here is link to our competitor's site, they invested more in IT for you not to see this message there”, but also add: “therefore you pay more for the same product as we need to make up for that investment”. Ok ok, that's too long and no customer understands that. So make it:
“Sorry something (slightly) expected happened, here are some links to our competitors, but if you can and want to wait 5 minutes and try again, we give you a 10% discount with this coupon code: XJHKA”
You just turned a system failure into a business opportunity