Scalability

Learn what scalability is and the different types of scalability.

We have discussed available and reliable systems in the last two lessons. Achieving these properties is hard—it requires a lot of effort to be put into development.

But once you have built the system and achieved both these properties, are you done?

Well, not always.

Note: A system that is available and reliable today won’t necessarily be the same tomorrow.

Maybe the My Cool App currently has 100 concurrent users (users connected to your system at the same time), but what if it has 10k or 100k concurrent users tomorrow? Will the system still remain reliable and available?

The answer is most likely no.

This is why we want to learn about scalability.

What is scalability?

Scalability is the ability of a system to handle the increased load of its usage.

If the system of the My Cool App is capable of handling a concurrent user count of 100 to 10k, we can say that the system is scalable. Of course, a system cannot just magically handle more users. It requires dedicated effort.

Usually, we would like to think of scalability as an answer to certain questions:

  • If the user base increases, how does that affect our system?
  • Can the system cope with the increased count of users, i.e. the increased load?
  • How can we add computing resources to handle the load?
  • Can we add resources seamlessly so that there is no visible impact from the users’ perspective?

As a system owner, answering the above questions is critical for you.

How to achieve scalability?

Now that we have discussed what, now let’s talk about how.

There are two common techniques to achieve scalability.

Vertical scaling aka scaling up

The idea of vertical scaling is to replace the existing machine with a more powerful machine.

Get hands-on with 1400+ tech skills courses.