Brain Storm to sustain load by Software Systems
I am always been bothered by one of the Questions. How would one scale is j2ee application to cater to more and more load/user requests.
I suppose these kind of thoughts would pave paths to Design patterns.
In this context let me tell you some thing about different scaling techniques.
The Basic one:
- Use the Firewall, Loadbalancer and couple of servers and manage to run your applications. Handle the static content to web-servers or Loadbalancers. DB servers, Internal cache mechanism
- If situation worsens then run profilers, change GC algorithms.
- still not in good form? resort to next technique
Vertical Scaling:
- Add power to your machines in terms of CPU, RAM. This would incur more cost to the business.
- if situation worsens then implement above steps and also think on mechanism to cache static content by using more load balancers , install squids with white and black lists etc.,
- DB servers scale up add power to them, so the full table scan is possible seamlessly with proper page size available for the DB query results. I am not convinced by the question people ask me ""Why can't we use Horizontal scaling for DB servers?". I am not sure, how can one scale the MYSql horizontally as these traditional DBs are not designed for that. Apache Casandra is kind of DB which perimits this horizontal scaling distrubutedly.
- DB partition. I will focus on DB partition in next blog. We can discuss on Row level , Vertical partitioning and Column level , Horizontal DB partition.
- still not in good form? resort to next technique
Horizontal scaling:
- Add more Machines/Servers to process requests.
- DB partition into READ/ WRITE SANs.
- Optimize code.
- Partition you server prototype to different geo graphics.
- Use User clusters to deploy the features of the app relevant only to those users
- Manage a Master DB Table to route which user belongs to which cluster.
- Still not in good form? resort to CLOUD the future.
No comments:
Post a Comment