I have tried to get my head around scalability lately and there are some interesting things that I’ve learned.
I think the first thing that I think about when I hear “does it scale?” is something related to StarCraft. For anyone who hasn’t played this game, basically, to grow your “army” you need to have buildings already constructed which play the role of the “chuck wagon”. These chuck wagons support all the soldiers you create and the machines you build. If you don’t have enough chuck wagons, the computer tells you so and you can’t build anything else until you have constructed more. This is kind of the same thing when you don’t “scale” smoothly, which is the ideal. Having enough servers (or whatever) to support your project or business is the ideal.
I like what Wikipedia says about scalability. “Scalability is a desirable property of a system, a network, or a process, which indicates its ability to either handle growing amounts of work in a graceful manner, or to be readily enlarged.” This is something that many people on the web complained about as Twitter had its problems supporting all of its users. I really liked what Robert Scoblewrote about on his blog after he had spoken to Evan, the creator of Twitter. In essence he reported that, “One of the solutions that Evan had come up with (to prevent the system from crashing again) was to set up a server just for the uber-twitterers like myself.” [This is not a direct quote, but, again, the essence of what the conversation was about.]
Basically, Twitter had scalibility problems. They grew really fast (and are still growing) and couldn’t keep up. (If I’m missing the boat in this one, someone please set me straight.) So, scalibility has been one of Twitter’s main issues as it grows.
I’m going to keep learning about this, but just trying to get a basic understanding of scalability was my goal and I hope to learn more and prevent this within my own sphere of influence.
Anyone have any other good sources for me to learn about this?