In the Internet era scalability is the most sensitive issue to most hosted applications. However if one follows the right architecture and other considerations from the beginning, you will have not to worry about this aspect later on.
This session aims to cover some scalability and load distribution considerations we followed while developing application which had to scale to a million users.
It will cover the following considerations:
- Restful Architecture: Heart of horizontal scalability and distributed application.
- Stateless UI: No need to do extra configuration if you do follow simple guideline
- MySQL master/slave replication: Use it to maximum
- Separate read and write layer: Divide and Rule.
- Distribution of load: In horizontal scaling how you can distribute load across your nodes/server. This applies specifically to daemon processes running in background to perform some CPU intensive processes (like data mining) or some low priority non-real time processes (like sending some (non-critical) notifications to users) or batch processing.
- DB sharing: Idea is to divide data physically so that each cluster should have its own users data
The talk will discuss learning from a system GSLab built using java/j2ee technologies. This particular product required to have support of 1 million user and processing packets coming from each user after every two hour to show it on users dashboard.
We will also go through the workload distribution technique we have used which is required for batch processing of data using Quartz library.