Scalability 101
Tags: webdev, beginners, scalability
Published: 2020-06-29 14:00:06

## What is scalability?
When people think about scalability they think about an app that can process requests quickly no matter how many requests are being sent. But this isn’t scalability, this is **_performance_**. It’s not uncommon for people to get these mixed up, many people tend to confuse performance with scalability. Performance measures how long a request takes to process or how long it takes to perform a certain task. Scalability on the other hand is how much an app can shrink or grow. 

## How is it different from performance?
For example, let's say you have an app that has 200 regular users. Each user sends a request over a 10 second period, that means on average there are about 20 requests being sent per second. Performance will measure how long each request will take to process, by focusing on performance you will try to find a way to decrease the time intervals of processing requests. By focusing on scalability, you aren’t focused on how fast each request is being processed but the ability to handle all of these requests during a time interval. While scalability will decide how many more requests and users can be handled at a time without affecting the user experience negatively. 

## What does it mean for an app to be scalable?
Scalability is the ability to change the capacity of the system in order to fulfill the new demands. Usually it means to “scale up”, which is basically being able to handle more users, data, requests etc. but it also means being able to scale down quickly and cheaply. Although scaling up is more important than scaling down, you should still be able to get rid of waste and inefficiencies. Scalability issues are usually concerned with:

* Handling more data: as business grows and you have more clients/users your app should be able to handle more data. 
* Handling higher concurrency levels: servers have limited CPU and execution threads, so they can only handle a set amount of requests at a time. With higher concurrency levels you are able to get more active threads and more requests. 
* Handling higher interaction rates: this is the relationship between your system and with your clients/users, the rates measure how often they exchange information. As the interaction between the two grows, your system must be able to respond just as quickly. 

Because scalability also has to do with how much data you are able to store, you need to ask yourself some questions like: What data are you going to be storing and how is it going to be stored now and in the future? Will I need to upgrade my hardware? By doing this you will be able to direct your app in the right direction, whether you need to increase how much data is being stored, or you want to get rid of unnecessary data no longer needed. 

## Why should we care that it is scalable?
When businesses are starting up, they should be able to be as flexible and as resourceful as they can be. They should be able to adapt to changing conditions quickly, in order for them to stay relevant and up to speed with their competitors. If your app is scalable it will enhance your growth, it will offer great user experience and will attract a greater audience. Scalability will allow you to better manage your app, and adapt to the new demands. If you are planning to grow your business, then building a scalable app should be the first thing you plan for. Being prepared in the beginning will save a lot of headaches in the future.