Scalability

Scalability is the ability of a system to handle an increasing amount of work by adding resources, generally hardware resources and bandwidth. An application requires increased processing power and memory as the number of users of the application increases or the volume of data it has to process increases. If an application works over a network, it also needs increased bandwidth.

There are two ways in which a system can scale:

  • Vertical Scaling: In this type of scaling, the processing power and/or the memory in the existing servers is increased. There is a limit to how much both can be increased and there will be a point at which the application will not be able to take any additional load on the servers. The only option to further scale in that case is horizontal scaling.

  • Horizontal Scaling: In this type of scaling, new servers are added to the system. The servers now form what is known as a "cluster" and distribute the application processing workload between them. If this type of scaling is used, the application must be designed to work in a manner that it can use the cluster of servers by distributing the workload. If the application is designed to work on a single server then horizontal scaling is not an option. There is no limit to horizontal scaling.

A Blockchain solution needs a network of participants, each with their copy of the Blockchain, which needs to be synchronized in real-time. While the network is small, scalability may not be a problem, but as it grows, unless computing power and network bandwidth are increased the system will start to perform slowly.

While this is a technical scalability challenge, there is also a soft factor challenge in scaling the number of participants in a Blockchain solution. Since a Blockchain solution needs agreement and consensus between participants, achieving that becomes a challenge as the number of participants grows.