Tuesday, September 27, 2011

Scale Up vs Scale out vs Scale in

Scalability Types


Scale Up vs Scale out vs Scale in


The general understanding of scalability is that If a system does not denigrates in performance when load or data size on the system increases then it is called scalable system. This definition is quite acceptable. But, what if our business requirement change? Will the system be still of the same scale? This question might trigger a need to define scalability in another way.
If an application or system is able to cope up well not only when many users turn up or data size increases in the system but also when the business requirements changes then the system is called scalable system. Now this definition to scalability not only addresses the change in load to the system but also addresses the business requirements change. There might be other dimensions to consider like administrative measures, functional measures and come up with a truly scalable system.



Scale Up systems:


Scale up systems is also known as vertically scalable systems. The ability of systems to improve its performance when the resources are scaled vertically is known as scale up systems. The resources could be memory, disk capacity, bandwidth etc. These systems traditionally run on top of single server and could possibly enhance its performance when scaled vertically. Examples of these systems are traditional databases, web servers and traditional applications windows applications. Many of scale up systems are single threaded applications but can be multi Threaded too. The computation is centralized.


Scale In Systems:


The ability of systems to run multiple threads upon multi core machines is known as scale in systems. For eg. 10 instances of Mysql running on top of 10 core machine is a scale-in system. The computation in these systems is de-centralized within different cores. Most of the scale-in systems are multi-threaded systems with the ability to run on top of several processors. Eg. Of scale in system is multiple instances of databaseserver running on multi-core server.


Scale Out systems:



Scale out system is also known as horizontally scalable systems. Both scale up and scale in systems face several discrepancies when the overall dataset that the system handles is quite large. Processing such a massive scale dataset could really be a daunting task for those systems. Scaling up means going out from few core single machine to several commodity machines. Each node contributes to scaling out for these systems. Addition of additional nodes increases the overall scalability of the system. These systems could be single or multi threaded and the computation is de-centralized. Massive level of parallelism could be leveraged for distributed processing of huge datasets. Google Map Reduce has been the technology buzz as far as scale-out systems are concerned. Products like Hadoop, GreenPlum, Vertica and TeraData are scale out systems with all of them having support for Map-Reduce style of distributed job processing. Hadoop for example could scale out to several thousand commodity machines. The most noticeable things about these architectures is that all of them are shared nothing architectures. In shared nothing architecture every node is independent to any other node in the cluster and can perform its tasks independently. These systems could be single or multi threaded and the computation is always de-centralized.

1 comment:

Anonymous said...

Does the term scale-in exist ?