views:

382

answers:

9

When reading about frameworks (.net. ruby on rails, django, spring, etc.), I keep seeing so and so does or doesn't scale well.

What does it mean when someone says that a framework "scales well" and what does it mean to say a framework "doesn't scale well"?

Thank you.

+6  A: 

It means that a particular framework does (or does not) meet the increased demand that more users put on it. If you have an application written in VBScript, it might not do a good job of handling the 40,000,000 users of Facebook, for example.

This blog post explains some of the scalability pains Twitter experienced a year or so ago. It could provide some more insight into the answer to your question.

Sometimes lack of scalability is used to denigrate a language or framework, so watch out for that. Stick to studies that show real metrics. This applies to my VBScript example in the previous paragraph as well.

Robert S.
+3  A: 

If a framework or an application scales well, it means that it can handle larger loads. As your site becomes more popular with more visitors and more hits per day, a framework that scales well will handle the larger load the same as it handles a smaller load. A framework that scales well will act the same when it receives 200,000 hits an hour as it does when it gets 1 hit an hour. Not only hits, but being deployed across multiple servers, possibly behind load balancing, possibly with several different database servers. A framework that scales well can handle these increasing demands well.

For instance, twitter exploded almost overnight last year. It was developed using Ruby On Rails, and it was hotly featured in the ongoing debate on whether Rails scales well or not.

Hooray Im Helping
So what happened? Did they continue with Rails?
johnny
They're partly on Rails and partly switching to Scala.http://www.theregister.co.uk/2009/04/01/twitter_on_scala/
Hooray Im Helping
+1  A: 

substitute the phrase "handle expansion" for "scale"

belgariontheking
+1  A: 

There are a few elements to it in my mind. The first is the obvious one -- performance scaling. Can your framework be used to build hight capacity, high throughput system or can it just be used to build smaller applications. Will it scale vertically on hardware (parallel libraries for example) and will it scale horizontally (web farms, for example).

The second is can it scale to larger teams or the enterprise. That is, does it work well with large code bases? Large development teams? Does it have good tool support? How easy is it to deploy? Can you roll out to tens or hundreds or even thousands of users? All the way down to is it easy to hire people that have this skill. Think of trying to put together a development team of 20 or 50 people that all work on this framework. Would it be easy or next to impossible?

JP Alioto
+10  A: 

When you plot some resource use (memory, time, disk space, network bandwidth) against concurrent users, you get a function that describes how the application works at different scale factors.

Small-scale -- a few users -- uses a few resources.

Large-scale -- a large number of users -- uses a large number of resources.

The critical question is "how close to linear is the scaling?" If it scales linearly, then serving 2,000 concurrent users costs 2 times as much as serving 1,000 users and 4 times as much as serving 500 users. This is a tool/framework/language/platform/os that scales well. It's predictable, and the prediction is linear.

If it does not scale linearly, then serving 4,000 users costs 1,000 times as much as serving 2,000 users which cost 100 times serving 500 users. This did not scale well. Something went wrong as usage went up; it does not appear predictable and it is not linear.

S.Lott
And linear isn't always good either. Ideally you would want it to plateau or level off as the number of users reaches a critical volume. However, this is not always possible and probably isn't possible a lot of times ... just ideal.
Brian T Hannan
A: 

IMHO, saying that a framework "scales well" usually means that someone in the hearsay chain was able to use it to handle lots of volume.

In parallel programming scalability is usually used to describe how an algorithm performs as it is parallelized. An algorithm that has a 1:1 speedup is a rare beast but will double in performance on twice the hardware/cpu, treble on three times the hardware/cpu, etc...

In my experience practically any framework can be made to scale given sufficient expertise.

The easier the framework is to use the greater the chance that a developer with insufficient expertise will run into scalability problems.

Arnshea
A: 

It means that some respected company is doing something serious with it and isn't having any problems with it.

GreenieMeanie
A: 

Scaling means how easy it is to satisfy more demand by using more hardware.

Example: You have a website written in some language that gets 1000 visits a day. You get featured in some prominent magazin and your number of users grows. Suddenly you have 1000000 visits a day, thats 1000 times as much. If you can just use 1000 more servers to satisfy the grown need of resources, your website scales well. If on the other hand you add 2000 servers but still users can't connect, because your database can only handle 1000 requests per day, than your website does not scale well.

Richard Durr
A: 

Does the framework scale well or the architecture should scale well... Somebody mentioned Languages, libraries and frameworks don't scale. Architectures do.

cherry