Note

If you are new to the blockchain technology, taking our Introduction to Blockchain Technology self-paced course is highly recommended. Also, 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

 

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

Free Webinars on Blockchain

Here is the list of our free webinars that are highly recommended:

 

Free Courses

Here is the list of our 10 free self-paced courses that are highly recommended:

 

Self-Paced Blockchain Courses

If you like to learn more about Hyperledger Fabric, Hyperledger Sawtooth, Ethereum or Corda, taking the following self-paced classes is highly recommended:

  1. Intro to Blockchain Technology
  2. Blockchain Management in Hyperledger for System Admins
  3. Hyperledger Fabric for Developers
  4. Intro to Blockchain Cybersecurity
  5. Learn Solidity Programming by Examples
  6. Introduction to Ethereum Blockchain Development
  7. Learn Blockchain Dev with Corda R3
  8. Intro to Hyperledger Sawtooth for System Admins

 

Live Blockchain Courses

If you want to master Hyperledger Fabric, Ethereum or Corda, taking the following live classes is highly recommended:

 

Articles and Tutorials on Blockchain Technology

If you like to learn more about blockchain technology and how it works, reading the following articles is highly recommended:

 

Articles and Tutorials on Ethereum and Solidity

If you like to learn more about blockchain development in Ethereum with Solidity, reading the following articles and tutorials is highly recommended:

 

Articles and Tutorials on Hyperledger Family

If you like to learn more about blockchain development with Hyperledger, reading the following articles and tutorials is highly recommended:

 

Articles and Tutorials on R3 Corda

If you like to learn more about blockchain development on Corda , reading the following articles and tutorials is highly recommended:

 

Articles and Tutorials on Other Blockchain Platforms

If you like to learn more about blockchain development in other platforms, reading the following articles and tutorials is highly recommended: