Scalability refers to the ability of a software system to improve its throughput as more resources are allotted to it. This is a crucial nonfunctional requirement for businesses because with a scalable system we can achieve improve in throughput by simply adding more hardware. To support more users or to improve the performance for existing users, it is more economical to provide additional hardware than to do performance tuning on existing code base, or redesign.
This paper tries to bring out some of some common design strategies that have an impact on the scalability of the resulting architecture. It specifically tries to bring out some strategies that may have a negative impact on the same and tries to point out alternative strategies in this case. This is important because some design choices that normally have positive consequences may result in a negative impact on scalability.