Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What does it mean to say that a framework "scales well"?

Tags:

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.

like image 306
johnny Avatar asked Jun 01 '09 19:06

johnny


People also ask

How would you ensure a system scale?

The best ways to scale are splitting services, horizontal scaling, separate databases for reading and writing concerns, database sharding, memory caching, and going to the cloud. While each one of those methods is great on its own, combining them will get you to the next level.

What makes a project scalable?

Scalability basically entails that a project idea can be adapted to a bigger scale than just the local context. It also means ideas and concepts that you propose can be used in a different context again. It will thereby affect many more people than the original proposal intends to.

What does it mean for a system to be scalable?

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 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.


2 Answers

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.

like image 108
S.Lott Avatar answered Oct 09 '22 11:10

S.Lott


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.

like image 32
Robert S. Avatar answered Oct 09 '22 11:10

Robert S.