I am not sure if this is the right forum to discuss. If not please suggest which forum I should post my question to.
The below is not at all related to
SCEA certification.
I have to design a heavy traffic web application and would like to discuss the technical architecture of same.
The requirement is as below:
Design a retail mart which wants to get into business of selling products online. The retail mart has a variety of products and it has 2 main geographies to serve (US and Japan). The web application should provide localized content based on the geography from where the user is accessing the web application.
The application needs to have online payment functionality and the purchased items should be shipped to customers within 5 working days.
The application needs to be have following NFRs
- Scalable. There is likelihood that the application usage would grow over time and thus the architecture should be scalable to attend to increasing volmes
- Performance: The application should have quick response time. The reponse time should be equivalent in both geographies(USA and Japan)
- High availability application
- DR: In case of a server failure the DR site should be up and running with latest data within 1 hr
Can you help me propose an effective architecture for this application.
Below is my take on the architecture:
Logical architecture:
Web application with following tiers:
Presentation Tier:
Comprises of Servlets/JSP with Strut2
Would use
Struts capability to give localized content based on resource bundles
Middle Tier
Consist of Application Layer and DAO layer
The application layer would contain all the business logic.The layer would be implemented using Spring with POJOs
The DAO tier would integrate with Oracle database. The DAO objects would use Hibernate for interacting with database. We would utilize Hibernate's 2nd level cache (using
JBoss Tree cache) to cache very frequently purchased items data so that same item can be fetched from cache 2nd time around.
The cache would be "transactional" cache and would be refreshed whenever an item is updated or deleted.
The DAO would use stored procedures for specific functions which require quicker response.(Not clear here)
Database Tier
Would use stored procedures
For delivery module:
The module will be responsible for taking orders and then ensuring that items are shipped to customer address
This module would be designed as a asynchronous application as it is a offline activity. The billing module would send orders as JMS messages which the delivery module would pick up and process. Please comment on this.
To handle the NFRs below is the proposal:
- Scalable. There is likelihood that the application usage would grow over time and thus the architecture should be scalable to attend to increasing volmes
Soln: The application would be multi-clustered deployment which would be front ended by a load balancer. This would ensure that we can add a new cluster as and when a need arises
- Performance: The application should have quick response time. The reponse time should be equivalent in both geographies(USA and Japan)
Soln: I would like to have physical server in each of these locations(ie one in USA and one in Japan). My question is how would I divert the trafic from japan to the physical server located in Japan
Is there any reference material which I can read to understand this aspect of deployment more.
- High availability application
Soln: Would be handled through multi-cluster deployment
- DR: In case of a server failure the DR site should be up and running with latest data within 1 hr
Soln: I am at a loss wrt solution for this requirement
I would like to know if there are any suggestions/opinions/recommendation anyone has on the above architecture