Link to home
Start Free TrialLog in
Avatar of roy_sanu
roy_sanuFlag for India

asked on

scalable web application

Hi,

As per my boss advice, i would like to give a blueprint on Architecture  layers.The requirements is there are 60,000 users who would using this application. There would be concurrent users, might be initially 5000 concurrent  user at the peak time. The user should able to browser the application and do the credit on it, The application would be scalable to handle request. and there are 300 GB of data on Oracle.
what I am proposing is a JSF UI, with apache server to handle multithread model, Then an application server like Jboss, and Hibernate as an persistence layer, and for scalibility Load Balancer which will replicate the sessions on the no of the servers if the load increases. The caching option of hibernate.. and also we need to make this application deployed at various location.

Is this the right approach i am taking, Please  suggest

Thanks
Avatar of giltjr
giltjr
Flag of United States of America image

I want to make sure I understand, you are going to have:

Load Balancer
        /\
         |
        \/
  Apache Servers
        /\
        |
       \/
   JBOSS Servers
        /\
        |
       \/
   Oracle DB

One issue with scalability is what does your application do?  A single JBOSS server could handle 5000 concurrent users if the application is simple.  Or it may take 100 JBOSS servers handing 50 concurrent users each.

Is there any reason you want to have load balancers and Apache servers?  Too many parts can make things more complicated.  Again depending on your application you may be able to get by with either load balancers or Apache servers, which simplifies the environment.

We use WebSphere as our J2EE server and instead of using the Apache that comes with WebSphere for distributing the work to the WebSphere servers running the actual application code  we use F5 load balancers.
Avatar of roy_sanu

ASKER

we will be developing an web based application where client would be doing shopping and adding items to the carts. and finally doing the transaction on the shopping. we have planned for jboss , but i would also like to know
 how many web sphere server required for 5000 concurrent users ? Pls let me know.
Thanks
Again, it's hard to tell, there is no hard and fast rule for number servers-to-users ratio.  There are a lot factors.

I have never worked with a shopping program, but I would assume that it would be more memory intensive than CPU intensive on the JBOSS server side.  I am assuming this because most of the work would be looking up items in a data base and then store the results temporarily.

Now the data base server would be doing a lot of work, so depending on the number of items and options for each item that might have to be decent size server

What are the specs of the servers you are planning to run JBOSS on.  Are they physical or virtual?
What are the specs of the server(s) you are planning to run Oracle on?  Is it physical or virtual?

How many different items are you planning to sell?  Are their a lot of "options" for those items?  By options I mean something like if you are going go sell clothes you would have: mens vs. ladies, vs. youth, then colors, then sizes.

Have you done any proof of concept testing?  Meaning have you written the program and created a data base and done any testing?
We are planning for dual Xeon E5310 Quad Core (Clovertown)
- 4 Gig of Ram
- 4 x 73GB SCSI Hardware Raid 10 as it will be database intense system .
 we will be selling clothes ,software and hardware accessories . Team has written a small program and tested  with the oracle database ....
Thx
Those specs aren't bad for the JBOSS servers, but I don't think they will work for the Oracle server.

You do realize that with 4x73GB drives in a RAID 10 setup that you will have less than 73GB of disk space?  How do you plan to have a 300GB database on a system with less than 73GB of usable disk?

IMHO 4GB of RAM is not nearly enough for "intense" system with a 300GB database.  The more RAM, the more you can buffer in memory, the better the performance.

How many JBOSS servers were you planning to start off with?   Personally, once you get the Oracle server sized a little better, I would do performance testing and see how many users you can get simulated until response time get bad.   What software are you using for your load testing?

If you plan to have 5000 concurrent users, you can also plan that at MAX 1000 (20%) will be "clicking" at the same time.   Typically I think these days, the ROT for "active" processes on a web site is about 5%, so 5000 concurrent users means only 250 or so will be "clicking", thus only 250 active tasks.
yes, you are right ,300 gb disk size with 64 gb ram what we needs  Presently added with 5 instance of the jboss server on test environment,  and testing with jmeter for load testing  with lower database server size like 70 gb size and 4 gb ram  in the test environment. looks like there is some bottle neck on the performance... it shows out of memory......
No load balancer will replicate sessions - that has to be done by application server.
Load balancer CAN detect sessions and keep directing them to specific backend, but you still need to synchronize sessions between backends.
Among load balancers are nginx, apache, etc, running on FreeBSD or Linux. Nothing fancy or expensive.

4GB is very little RAM for any use. Rule of thumb (i.e if you dont know better) is to keep database read cache to 10% of data size.

Reverse proxy will need some RAM to cache static content.
Actually with a 300GB DB, you need more.  Depending on your OS will make a difference on how much more.  I personally would say at least 600GB of usable disk space.  However with how inexpensive disks are today, you could get a few TB's.

You need to know which memory you are out of.  It could mean physical RAM, or if this from JBOSS, it could mean HEAP space.

Which sever OS are you running?  Is it 32-bit or 64-bit?  If you are running 64-bit OS, are you running JBOSS with 32- bit or 64-bit JVM.
jboss of 6000 connections will easily exceed 4GB architectural limitation of any 32bit java...
There are some issues on heap size, it has been taken care... What kind of server confirguration do you suggest.in terms of CPUs ..
Other wise we will go for Microsoft azure in the future..
SOLUTION
Avatar of gheist
gheist
Flag of Belgium image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
ASKER CERTIFIED SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
At least 2 instances for each layer to address all architectural issues now...
Could be DB and JBOSS on same 2 machines, but each of them well clustered for future growth.
Thank you all of your support... I will try to close this issue as of now. Let me see how things goes in the future... If there will be any issue I try post it...