Questions tagged [scalability]

Scalability is the ability of a system, network, or process, to handle growing amount of work in a capable manner or its ability to be enlarged to accommodate that growth.

Scalability is the capability to increase resources to yield a linear (ideally) increase in service capacity. The key characteristic of a scalable application is that additional load only requires additional resources rather than extensive modification of the application itself.

Although raw performance makes a difference in determining the number of users that an application can support, scalability and performance are two separate entities. In fact, performance efforts can sometimes be opposed to scalability efforts.
/msdn/

A system whose performance improves after adding hardware, proportionally to the capacity added, is said to be a scalable system. An algorithm, design, networking protocol, program, or other system is said to scale, if it is suitably efficient and practical when applied to large situations (e.g. a large input data set or a large number of participating nodes in the case of a distributed system). If the design fails when the quantity increases, it does not scale.
/wikipedia/

Scalability is a general quality that holds when the system continues to satisfy its requirements when various usage parameters are increased.

E.g., a file server might be scalable to a high number of users, or to very large files or very high capacity disks.

Scalability goals:

  • Performance under load
    This is a specific type of scalability goal dealing with the performance of the system at times when it is servicing many requests from many users.
  • Large data volume
    This is a specific type of scalability goal dealing with the ability for the system to handle large data sets. Operations should continue to be correct and efficient as data set size increases. Furthermore, the user interface should still be usable as the data presented to users increases in length.
2237 questions
31
votes
1 answer

How scalable is distributed Erlang?

Part A: Erlang has a lot of success stories about running concurrent agents e.g. the millions of simultaneous Facebook chats. That's millions of agents, but of course it's not millions of CPUs across a network. I'm having trouble finding metrics on…
G__
  • 6,688
  • 5
  • 33
  • 51
30
votes
8 answers

Where does Redis store the data

I am using redis for pub/sub as well as for server side cache. I mean my app server has redis server running as one process (functioning as a cache as well) . I have several thin clients (running redis client) connected to this app server in…
user3364247
  • 1,187
  • 3
  • 12
  • 20
29
votes
6 answers

C++ Socket Server - Unable to saturate CPU

I've developed a mini HTTP server in C++, using boost::asio, and now I'm load testing it with multiple clients and I've been unable to get close to saturating the CPU. I'm testing on a Amazon EC2 instance, and getting about 50% usage of one cpu,…
Alex Black
  • 12,895
  • 15
  • 73
  • 97
28
votes
3 answers

How does I/O work in Akka?

How does the actor model (in Akka) work when you need to perform I/O (ie. a database operation)? It is my understanding that a blocking operation will throw an exception (and essentially ruin all concurrency due to the evented nature of Netty, which…
laurencer
  • 1,670
  • 1
  • 19
  • 28
28
votes
1 answer

Websockets and scalability

Am a beginner with websockets. Have a need in my application where server needs to notify clients when something changes and am planning to use websockets. Single server instance and single client ==> How many websockets will be created and how…
user3216514
  • 465
  • 1
  • 8
  • 11
28
votes
4 answers

Achievements / Badges system

I have been browsing this site for the answer but I'm still a little unsure how to plan a similar system in its database structure and implementation. In PHP and MySQL it would be clear that some achievements are earned immediately (when a…
bluedaniel
  • 2,027
  • 5
  • 31
  • 47
27
votes
3 answers

Failed requests by length in my ApacheBench load test result

I have a website in PHP, Lighttpd. It uses also MySQL on Centos 5. I've tested my PHP with code below with Apache Bench (ab). It resulted in some errors (Failed Requests) indicating other length than normal. I'm absolutely sure that my PHP result…
Tomasz Smykowski
  • 24,175
  • 51
  • 149
  • 222
27
votes
1 answer

Why are some websites spread across www2, www3 sub-domains whilst others manage scaling without it?

I know it's to do with having a variety of load balancing servers, but why do some sites make use of differently named "www" sub domains (www2.somesite.com, www3.somesite.com etc) where as other can be perfectly massive without doing this - ie all…
Ray
  • 3,188
  • 8
  • 23
  • 27
26
votes
6 answers

Java + NodeJS communicating via socket: Bad Idea?

I like some features of NodeJS, particularly JQuerification, websocket compatibility via socket.io, view and css engines that I cannot use with JSP (and of course, asynchronous calls). At least, as far as I know. So I plan on creating my application…
HyderA
  • 18,174
  • 41
  • 103
  • 169
26
votes
2 answers

Neo4j sharding aspect

I was looking on the scalability of Neo4j, and read a document written by David Montag in January 2013. Concerning the sharding aspect, he said the 1st release of 2014 would come with a first solution. Does anyone know if it was done or its status…
Monta
  • 851
  • 1
  • 9
  • 21
26
votes
7 answers

What is the best architecture for tracking field changes on objects?

We have a web application that is built on top of a SQL database. Several different types of objects can have comments added to them, and some of these objects need field-level tracking, similar to how field changes are tracked on most…
Nicole
  • 30,999
  • 11
  • 69
  • 94
25
votes
5 answers

Java's Mahout equivalent in Python

Java based Mahout's goal is to build scalable machine learning libraries. Are there any equivalent libraries in Python ?
Srikar Appalaraju
  • 66,073
  • 51
  • 206
  • 260
25
votes
4 answers

SocketIO scaling architecture and large rooms requirements

We are using socketIO on a large chat application. At some points we want to dispatch "presence" (user availability) to all other users. io.in('room1').emit('availability:update', {userid='xxx', isAvailable: false}); room1 may contains a lot of…
coulix
  • 3,178
  • 5
  • 50
  • 77
25
votes
5 answers

Design Patterns (or techniques) for Scalability

What design patterns or techniques have you used that are specifically geared toward scalability? Patterns such as the Flyweight pattern seem to me to be a specialized version of the Factory Pattern, to promote high scalability or when working…
Chris Ballance
  • 32,056
  • 25
  • 101
  • 147
25
votes
8 answers

How do I speed up deletes from a large database table?

Here's the problem I am trying to solve: I have recently completed a data layer re-design that allows me to load-balance my database across multiple shards. In order to keep shards balanced, I need to be able to migrate data from one shard to…
Eric Z Beard
  • 35,488
  • 25
  • 97
  • 144