• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 268
  • Last Modified:

Achieving application scalability (increasingly more checkout transactions per second).

We are planning to build a online ticket sales system which needs to archieve 500 checkout transactions per second but we do not have a inhouse IT team to provide consulting on scalability.

The online ticketing system will need to achieve scalability (able to process increasingly more checkout transactions as we rollout to more countries).  The software development will be performed by an offshore company, the platforms will be Open source (Redhat Linux, MySQL, JBoss, Apache) and Intel servers (Dell, iSCSI sans, DLink load balancers etc).

In terms of architectural design to achieving scalability (in my simplistic understanding) it is to have the work load shared across many servers i.e. each service performed by a dedicated server e.g. payment gateway, email service, web, JBoss, MySQL. Is there any other approaches to achieving application scalability?  
2 Solutions
Sounds good in terms of loose coupling. You may need to load the system to
see if its really giving 500 transaction/sec - it all depends on kind of
work you are doing on the transactions.
On the side note, you may need to cluster one/more services depending on
more load requirements. For instance, if you see email server is overloaded,
then you may need to add more servers to handle more load.
Expanding on what Ajay-Singh said:

THe most common approach to what you're looking for is to add an application management device like a load balancer.  This would allow you to choose from a couple of different approaches:

1) Have each transaction be *completely* done on a single server.  If you choose this approach, the load balancer will spread the transactions around, each server will complete all of the transactions, and you'll likely need some kind of "back-end" server behind the whole setup which contains the sum of all of the distributed databases.

2) You can have a single database server with many front-end servers (in general, the front-end server applications like the web service are what takes up the majority of the CPU computation time).  You can then use the load balancer to distribute the load to the different web servers, and those will then pass just the database information to your single DB server.

Good luck!

Featured Post

Upgrade your Question Security!

Add Premium security features to your question to ensure its privacy or anonymity. Learn more about your ability to control Question Security today.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now