We have running application on a server with Apache HTTP server in front and Tomcat server behind it as a servlet engine. When we deploy a new version of the application on Tomcat server, we have to shutdown the site (application context), deploy a new version (DB updates + new WAR) and start the server afterwards. Also, there are some backup things done before each deploy and initial testings after starting the application again, so this all make our site not available from 10 to 30 mins (sometimes even more).
Is there some deployment strategy with the server environment, like I have described above, for deploying a new version, so that we do not have site downtime? (Please, also reconsider of possible data changes in DB during a deployment of a new version, handling open HTTP session which started before deployment...)