Solved

scalable web application

Posted on 2014-12-18
14
233 Views
Last Modified: 2015-01-10
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
0
Comment
Question by:roy_sanu
  • 5
  • 5
  • 4
14 Comments
 
LVL 57

Expert Comment

by:giltjr
ID: 40527788
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.
0
 

Author Comment

by:roy_sanu
ID: 40528835
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
0
 
LVL 57

Expert Comment

by:giltjr
ID: 40529154
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?
0
Microsoft Certification Exam 74-409

Veeam® is happy to provide the Microsoft community with a study guide prepared by MVP and MCT, Orin Thomas. This guide will take you through each of the exam objectives, helping you to prepare for and pass the examination.

 

Author Comment

by:roy_sanu
ID: 40529964
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
0
 
LVL 57

Expert Comment

by:giltjr
ID: 40530262
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.
0
 

Author Comment

by:roy_sanu
ID: 40533216
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......
0
 
LVL 62

Expert Comment

by:gheist
ID: 40533316
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.
0
 
LVL 57

Expert Comment

by:giltjr
ID: 40533444
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.
0
 
LVL 62

Expert Comment

by:gheist
ID: 40533739
jboss of 6000 connections will easily exceed 4GB architectural limitation of any 32bit java...
0
 

Author Comment

by:roy_sanu
ID: 40537451
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..
0
 
LVL 62

Assisted Solution

by:gheist
gheist earned 250 total points
ID: 40537615
For resilience you need at least 2 servers, then you can grow to azure, rackspace, amazon, 2nd datacenter as you application grows. 1 huge machine will be outscaled sooner or later.
0
 
LVL 57

Accepted Solution

by:
giltjr earned 250 total points
ID: 40537631
I would say 4 smaller machines, two for the DB and two for JBOSS.

All four should start with at least 16 GB of RAM but have the option to go to 128GB.  Something that can go to 16 cores, but start off with at least 4 cores.  Of course after you get further down the road and can do more performance testing you may find you need more servers and/or more RAM/Cores.

This will get you started and hopefully support you until you can do testing in a cloud environment.
0
 
LVL 62

Expert Comment

by:gheist
ID: 40537668
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.
0
 

Author Comment

by:roy_sanu
ID: 40541720
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...
0

Featured Post

3 Use Cases for Connected Systems

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, testing some more, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Excel Hyperlink Question 4 48
ebay seller html tags 2 25
hibernate jars 4 26
Shopping Cart 2 64
Learn by example how to specify CSS selectors for Selenium WebDriver test automation software.
Password hashing is better than message digests or encryption, and you should be using it instead of message digests or encryption.  Find out why and how in this article, which supplements the original article on PHP Client Registration, Login, Logo…
This tutorial covers a practical example of lazy loading technique and early loading technique in a Singleton Design Pattern.
The is a quite short video tutorial. In this video, I'm going to show you how to create self-host WordPress blog with free hosting service.

813 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now