Hi
What are the tools for achieving high availability for Java web application.
Thanks
Hi
What are the tools for achieving high availability for Java web application.
Thanks
The main approach to use is not a tool. It's called "quality software" - i.e. you must handle all your resources (including synchronization) properly.
Apache Hadoop is something you can use for distributing and scaling your system. But that's for huge applications.
Load balancing is something to look into as well.
Maybe you're searching for a clustering solution? There's the OpenSource version of Terracotta's JVM Clustering
Eliminating single points of failure through redundancy at all tiers of the application. You can ask yourself questions along the lines of "what happens if X fails" and then find ways of mitigating that risk.
To start you'll need:
After having the initial setup going, you will need to find other probable points of failure like database servers, the load-balancing server itself, DNS server etc. and then try to add redundancy and fail-over switching at these layers too.
You should also consider hardware solutions like RAID, SAN etc.
There are at least two main aspects you will have to tackle:
Each of these elements are large questions. For instance, there are a couple of good sites dedicated to these (see serverfault.com and stackoverflow.com, respectively).
Operational considerations include: scaling deployments including load balancing, disaster recovery, a CDN if possible, and monitoring. Ongoing deployment considerations also are important.
Architecture -> code considerations are numerous and significant. From the architecture of your solution, to the layout of your code for maintainability, and the hardest to attain: correctness. My best suggestion: hire someone with experience. That failing, read books and the like from someone with experience.
Also, in the Java world, it's very important to come to terms with this one important fact: it's likely been written before. This is great news! So many very very bright folks have spent countless hours writing code for you and have made it freely available in places like [Jakarta] Apache, Google Code, Codehaus, Sourceforge, and numerous other open source sites. The more research you do into your question, the more you will find these players appearing. An important skill is determining which available software is a good fit for you.
Folks have contributed other answers with specific technologies of choice, many of which are good suggestions, but it all boils down to the actual problem you are trying to solve, and only you know what that is (well, the question doesn't tell us anyway :D).