views:

198

answers:

7
+5  Q: 

What is Scaling?

I always get this argument against RoR that it dont scale but I never get any appropriate answer wtf it really means? So here is novice asking, what the hell is this " scaling " and how you measure it?

+1  A: 

Scalability refers to the ability for a system to accomodate a changing number of users. This can be an increasing or decreasing number of users as we now try to plan our systems around cloud computing and rented computing time.

Think about what is involved in making an order entry system designed for 1000 reps scale to accomodate 100,000 reps. What hardware needs to be added? What about the databases? In a nutshell, this is scalability.

Scott
It doesn't necessarily refer to a number of users. For example, imagine a single-user system that tracks cars on the road. It might have been tested in town of population 10,000, but will it scale to a town with a population in the millions?
Bryan Oakley
True but I was giving an example that I think anyone on SO can relate to
Scott
+8  A: 

Scaling or scalability refers to how a project can grow or expand to respond to the demand:

http://en.wikipedia.org/wiki/Scalability

Mike Gleason jr Couturier
A: 

Scalability of an application refers to how it is able to perform as the load on the application changes. This is often affected by the number of connected users, amount of data in a database, etc.

jheddings
+2  A: 

Scalability has a wide variety of uses as indicated by Wikipedia:

Scalability can be measured in various dimensions, such as:

  • Load scalability: The ability for a distributed system to easily expand and contract its resource pool to accommodate heavier or lighter loads. Alternatively, the ease with which a system or component can be modified, added, or removed, to accommodate changing load.
  • Geographic scalability: The ability to maintain performance, usefulness, or usability regardless of expansion from concentration in a local area to a more distributed geographic pattern.
  • Administrative scalability: The ability for an increasing number of organizations to easily share a single distributed system.
  • Functional scalability: The ability to enhance the system by adding new functionality at minimal effort.

In one area where I work we are concerned with the performance of high-throughput and parallel computing as the number of processors is increased.

More generally it is often found that increasing the problem by (say) one or two orders of magnitude throws up a completely new set of challenges which are not easily predictable from the smaller system

peter.murray.rust
So can we say that is all about how many people get through the tunnel in one sec?
itsaboutcode
It's more about saying that if there are 10 times more people the answer may not be to build nine more tunnels but to find a different way acrosss the mountains.
peter.murray.rust
A: 

It is the ability for a system to accept an increased workload, more functionality, changing database, ... without impacting the original design or system.

Colour Blend
+9  A: 

What the hell is this "scaling"...

As a general term, scalability means the responsiveness of a project to different kinds of demand. A project that scales well is one that doesn't have any trouble keeping up with requests for more of its services -- or, at the least, doesn't have to start turning away requests because it can't handle them.

It's often the case that simply increasing the size of a problem by an order of magnitude or two exposes weaknesses in the strategies that were used to solve it. When such weaknesses are exposed, it might be said that the solution to the problem doesn't "scale well".

For example, bogo sort is easy to implement, but as soon as you're sorting more than a handful of things, it starts taking a very long time to get the answer you want. It would be fair to say that bogo sort doesn't scale well.

... and how you measure it?

That's a harder question to answer. In general, there aren't units associated with scalability; statements like "that system is N times as scalable as this one is" at best would be an apples-to-oranges comparison.

Scalability is most frequently measured by seeing how well a system stands up to different kinds of demand in test conditions. People might say a system scales well if, over a wide range of demand of different kinds, it can keep up. This is especially true if it stands up to demand that it doesn't currently experience, but might be expected to if there's a sudden surge in popularity. (Think of the Slashdot/Digg/Reddit effects.)

John Feminella
+1  A: 

It is a term for expressing the ability of a system to keep its performance as it grows over time.

Ideally what you want, is a system to reach linear scalability. It means that by adding new units of resources, the system equally grows in its ability to perform.

For example: It means, that when three webapp servers can handle a thousand concurrent users, that by adding three more servers, it can handle double the amount, two thousand concurrent users in this case and no less.

If a system does not have the property of linear scalability, there is a point where adding more resources, e.g. hardware, will not bring any additional benefit, performance, for instance, converges to zero: As more and more servers are put to the task. In the above example, the additional benefit of each new server becomes smaller and smaller until it reaches zero.

Thus, scalability is the factor that tells you what you get as output from a given input. It's value range lies between 0 and positive infinity, in theory. In practice, anything equal to 1 is most desirable...

raoulsson