We currently have a Java based web application that runs on WebSphere and accesses SQL Server 2008.
The application requires frequent code and file changes and hence we update the EAR files in WebSphere at least once in a month, but typically more often. It is a database intensive application.
Downtimes are extremely expensive for us and right now we try to do it during our least load times (around 3am on weekdays). Going forward it looks like this isn't going to be an option (especially considering the frequent updates to our application) and we are looking for a better hosting setup like a cluster. We are hoping to resolve some of our other problems as well through the new setup (for which, till now, we have been resorting to workarounds).
We have a multi-node cluster in mind. My understanding of clusters is primitive, so if any assumption below is wrong, please let me know.
The following are our new requirements:
- We should be able to deploy new versions of the application without any (or just a few seconds) downtime.
- Load balancing of web requests.
- Capable of handling a failover.
Here are a few questions I have:
- What kind of server setup would you recommend?
- Considering we have a database, is it really possible to ensure near zero downtime unless we have two clusters - one for the DB and one for the web layer of the application?
- If we had just one cluster for the web layer (and the DB on a dedicated server), would that enable us to deploy new versions of the application without downtimes on WebSphere?
- Our Java application was written to be run on a single JVM. If we deploy it on WebSphere, would WS automatically make the application run on a cluster? Or would we have to make use of a cluster-aware JVM like Terracota?