Horizontal Scaling versus Vertical Scaling in Distributed Systems

Note

For a comprehensive coverage of blockchain development in Ethereum or mastering Solidity programming, taking our below self paced courses is highly recommended:

 

Recap

In our previous article (Review of Cap Theorem in Distributed Systems), we covered the three properties of the CAP theorem and how they were used in different distributed database systems.

In this article, we learn about differences between horizontal and vertical scaling in distributed systems.

 

Horizontal scaling versus vertical scaling

One of the most difficult and most challenging problems in a distributed system is scalability. Scalability refers to the capability that a distributed system can handle a growing amount of workload without degrading the overall system performance, and has the potential to accommodate that growth.

In case of a typical three-tier application, as shown is the following diagram, the web server accepts the requests coming from the users. Depending upon the request, the application server will process the same, and the final state will be updated in the underlying database of the database server. When users increase drastically, let’s say 5-10 concurrent users suddenly access the system, how do you scale the multi-tier applications and meet the required service level agreement?

Blockchain and Ethereum development

 

One-to-One Live Blockchain Classes

Coding Bootcamps school offers One-to-One Live Blockchain Classes for Beginners.

 

There are two ways to scale the system, and so this means the designer or architect of the multi-tier application needs to ensure each tier can scale independently and, as a whole, it can meet the desired performance when the number of concurrent users increases. One technique is vertical scaling. In this case, you can increase the computing capacity in each layer, by increasing memory, storage, using a more advanced CPU, and so on. Another technique is horizontal scaling, where additional servers can be provisioned and added to the server farm in each layer:

There are trade-offs between these two techniques. Vertical scaling makes the server management straightforward, while horizontal scaling increases the server management complexity. Horizontal scaling is considered to be more advantageous, since with today’s cloud and virtualization technology, it is possible to scale the system up and down, based on the user traffic. However, in the vertical scaling case, it is not easy to increase or decrease the system capacity.
In the case of a distributed database, with both an RDBMS and NoSQL type database, a number of different approaches, like partitions and shading, and design trade-offs, enable them to grow to a very large size while being able to scale out, up, and down.

Many of the scaling techniques were applied to solve the scalability challenges in the Ethereum blockchain too. Now it is time for us to go over the different Ethereum salability solutions and proposals, and get an understanding of how the Ethereum community addresses the scalability issues.

 

Next Article

In our next article (How to Scale up Ethereum Blockchain Applications), we discuss how to scale up Ethereum blockchain applications.

This article is written in collaboration with Brian Wu who is a leading author of “Learn Ethereum: Build your own decentralized applications with Ethereum and smart contracts” book. He has written 7 books on blockchain development.

 

Resources

coming soon