I am designing architecture for a new web application which relates to travel industry. The application will have around 200 dynamic pages which will be used to search and browse products and be able to book them. Apart from these there will be various static pages which will carry other information.
Currently the website is getting more than 100,000 page views. After the new web application it is expected to go even higher. Current web application is on JDK 1.4, 2.x Jboss, JSP & Servlet with JDBC to Oracle database. Since we are re-designing the site with more features, we want to move to newer technologies also.
I am planning to use JDK 6, JBoss 4 and Spring framework with Ibatis for database layer. For UI I am looking at JSF which will seamlessly integrate with Spring. We will be running multiple jbosses to load balance behind a big ip which will use sticky session.
My doubts are is JSF suitable to such heavy traffic website? Should I look at any other UI layer and why? Secondly how about Ibatis compared to any other database layer.
I have read many other discussions but hopefully here we can discuss the architecture in terms of my scenario.
Let me know if any other information is required.
100,000 page views per day
From an architectural standpoint, what are you reasons for using JBoss? I believe JBoss is a very good app server, however I'm asking for your reasons as to why you are planning to use it (and it's overhead - resources, learning, memory, etc.) over something like Tomcat, Resin, or Glassfish? If you have justifiable reasons, great. However, if it's "because we currently use it", then I think you should re-think its use.
Client is currently using JBoss because they have few session beans in the current application. We are pushing them towards Tomcat as we certainly don't need the overhead of Jboss in the new application. This seems unlikely at present that is why I have kept Jboss but my preference is Tomcat.
Ok, fair enough - I've been in the same situation many times.
I think the question of whether JSF is the best web-tier solution for presentation is a minor issue - most of the popular GUI frameworks are fairly efficient with the rendering time and resource management. I know some folks are all JSF, all Seam, all Struts, etc., but your best to make a rational decision based on which framework suits your needs best. The more important thing to understand is:
1. What percentage of the pages are dynamic? If most, then some form of a templated framework is most likely your best option. If most are static, then you could consider even just plain JSP.
2. Are your JSP pages going to need to be modified by anyone (admin?) at runtime? If so, then some sort of DB interaction would be the best option to allow for dynamic pages as well as load balancing across multiple instances. (I doubt this is your case...)
3. Need to think about caching options (front-end and backend) and evaluate solutions that fit what you're trying to accomplish. Caching will keep your application response time to a minimum.