Beyond Boundaries — Unveiling the Art of Scalability

Gokul Menon
3 min readDec 4, 2023

--

Scalability

As the system grows (in data volume, traffic volume, or complexity), there should be reasonable ways of dealing with that growth. A service is said to be scalable if when we increase the resources in a system, it results in increased performance in a manner proportional to resources added.

Perfrormance vs scalability 📈

Performance and scalability are two related but distinct aspects of a system.

Another way to look at performance vs scalability:

  • If you have a performance problem, your system is slow for a single user.
  • If you have a scalability problem, your system is fast for a single user but slow under heavy load.

Performance

Factors such as network latency, bandwidth, and other elements also affect performance.Everything works on trade-offs. For instance inorder to increase performance , we could optimzie the code, database, or network can improve performance, but it can also reduce flexibility, modularity, or maintainability.

Scalability

Scalability is the ability of system to handle large amount of work when the system is under heavy load by adding more resources to the problem.
Scalability is not a 1D label means its pointless to say X is scalable , but rather it means asking questions like , “if a system grows in a particular way , what are our options for coping up with this grown without reducing the performance ?” There are two ways of scaling basically , Vertical (Scaling up) and horizontal (Scaling out).

Two steps which are basic and should be considered are :

Describe the load 📚 — What kind of load are we expecyting ? it can be anything , could be request per second for a web server or read and write per second for a Data base , to define what we exopect and how we can design a system to handle this.
Describe the performance — Now that we have an increased load m What is the scope of performance , would this load make an impact directly to user interface , or would it be okay to be handled like a back office. depends on various situation the decisions has to be considered and made.

Horizontal Scaling and Vertical Scaling

Vertical scaling 🚦 is generally used in monolith architecture where the service (Existing) is scaled up by increasing CPU power, memory, or storage capacity to accommodate the increased demands of your application.

Horizontal scalability 🚥, or “scaling out,” refers to the expansion of an application by adding more hardware or nodes to distribute the workload. This is achieved by adding physical or virtual machines, which work in parallel to increase processing power and capacity. Also one importrat aspect to keep in mind with respect to Horizontal scalability is that our a system is not horizontally scalable if the code design does not allow multiple servers to respond to requests.A good example of a system that is horizontally scalable but not vertically scalable is a distributed NoSQL database like Cassandra or MongoDB.

Some resources that might help to understand the problem of scalabilty better :

--

--

Gokul Menon
Gokul Menon

Written by Gokul Menon

Engineering at FreeNow Tech.

No responses yet