Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What does "scalability" mean? [closed]

Tags:

scalability

I read many articles comparing programming languages.

There is a word that comes often: scalability. I actually tried to look for a simple and clear explanation, but haven't found anything.

Can you explain what the scalability term means?

like image 796
Patto Avatar asked Feb 23 '12 19:02

Patto


People also ask

What does scalability indicate?

Scalability is the measure of a system's ability to increase or decrease in performance and cost in response to changes in application and system processing demands.

What are the two types of scalability?

There are two basic types of scalability in cloud computing: vertical and horizontal scaling.

What is an example of scalability?

For example, an application program would be scalable if it could be moved from a smaller to a larger operating system and take full advantage of the larger operating system in terms of performance (user response time and so forth) and the larger number of users that could be handled.

What does scalability mean in business?

Scalability describes an organization's capacity to adapt to increased workload or market demands. A scalable firm is able to quickly ramp up production to meet demand and at the same time benefit from economies of scale.


4 Answers

Scalability is the ability of a program to scale. For example, if you can do something on a small database (say less than 1000 records), a program that is highly scalable would work well on a small set as well as working well on a large set (say millions, or billions of records).

Like gap said, it would have a linear growth of resource requirements. Look up Big-O notation for more details about how programs can require more computation the larger the data input gets. Something parabolic like Big-O(x^2) is far less efficient with large x inputs than something linear like Big-O(x).

like image 127
Furbeenator Avatar answered Oct 01 '22 11:10

Furbeenator


Scalability is the trait where a software solution can handle increased loads of work. This can be larger data-sets, higher request rates, combination of size and velocity etc.

When talking about systems scalability, we usually differentiate between

  • "Scale up" - the ability to grow by using stronger hardware
  • "Scale out"- the ability to grow by adding more hardware

A solution that can scale out can usually grow to lager loads in a more cost effective way. An important thing to know here is Amdahl's law that states that the ability to scale out is limited by the sequential part of the software

like image 27
Arnon Rotem-Gal-Oz Avatar answered Oct 01 '22 10:10

Arnon Rotem-Gal-Oz


Already great answers here, just wanted to add few things here.

Scalability can be achieved in 2 ways:

  1. Vertical - In this way, you add more hardware like more RAM, processor or more nodes. You also introduce load balancer, which will help in routing the incoming calls to various servers based on the routing algorithm used. The application is now able to handle more load as load is being shared across the servers.

  2. Horizontal - In horizontal scaling, you architect/design the application in such a way that it can behave well in case of more parallel traffic. You check how you are managing the memory, sessions , cache & state etc. If you are using the session to maintain the user information, under heavy load single server could be more busy managing the servers, so in this case you can check possibility of going stateless. It can also respond to incoming requests from same user in parallel instead serial replies which happens if sessions are being used.

like image 23
Satinder Sidhu Avatar answered Oct 01 '22 11:10

Satinder Sidhu


My understanding is it means that a linear increase in output requested only demands a linear increase in resources.

like image 33
gap Avatar answered Oct 01 '22 12:10

gap