"I'll never need to scale so why bother? We aren't Twitter or Facebook or Google after all." This is the most common email I get, a question in the form of a thinly disguised rationalization for not having to worry about scaling. And in these days of giant transformer-like machines they are probably right. But what if there are Barry Bonds enhancing type forces at work that argue for the chances of your needing to scale being higher than you think?
And if that happens, how will you cross the scalability chasm? Will you want to completely change your architecture or evolve it from a tool-chain that was meant to scale from the start? Architecturally, that's the question you have to answer. Today's tool-chains are making it possible to grow a system from small to large without needing to implement complete architectural phase changes at various scale inflection points, but that's a different topic. We're trying to think about why you may actually need to scale, that is the question.
Tumblr is a good example of a product that grew beyond expectation because they managed both to execute and harness powerful growth factors. Tumblr is a "light" blogging service that probably didn't think they were Twitter or Facebook or Google either, but need to scale they did. From Tumblr:
Frankly, keeping up with growth has presented more work than our small team was prepared for — with traffic now climbing more than 500M pageviews each month. But we are determined and focused on bringing our infrastructure well ahead of capacity as quickly as possible. We’ve nearly quadrupled our engineering team this month alone, and continue to distribute and enhance our architecture to be more resilient to failures like today’s.
500 million pageviews a month is an amazing accomplishment. And that was just the start. Techchrunch reported Tumblr, as of July 2010, had over 6 million users and 1.5 billion pageviews a month, and is now growing by 300 million pageviews per month and 25,000 new users a day. Really stunning growth. And seemingly quite unexpected.
Why did Tumblr grow so fast? An article in ReadWriteWeb identifies several factors:
When Tumblr started in 2007 was there any reason to expect it to take off? I don't think so. My impression of Tumblr at the time was that it did stuff other services already did, which is exactly why I don't make predictions! Tumblr took off by executing and harnessing drivers that lead to fast growth.
Could this happen to you too? We usually don't think so, but applications are being built today in a scaleogenic environment that tends to encourage growth. Scaleogenic is a play on the word obesogenic, which is a term for factors tending to make individuals fat, creating an environment that promotes gaining weight. We have a genetic propensity towards obesity as a survival mechanism, but that's just part of the story, the larger part is how our environment has changed to be one where cheap, high-caloric food and is always available and we need very little exercise to live. Combined, these trends equal a Biggest Loser class obesity problem.
While not quite as powerful a force, we are seeing applications being deployed inside a scaleogenic environment, where a combination of factors can make an a application need to scale and scale quickly. Part of this environment has only recently been created in the form of app stores, social networks, and the explosion of mobile devices. Another part of this environment is quite self-consciously constructed, it has to do with applications using viral loops, gameification, social networking, and other techniques to create and leverage rapid growth factors.
Do any of these factors mean you will need to scale? No. But they do increase the chances and increased chances means taking this part of your architecture seriously could pay off. Let's take a look at some of the components of our new scaleogenic environment in more detail.
We are seeing a perfect storm of conditions for creating a scaleogenic environment that requires thinking about building scalable applications from the start:
This is a bold new world, even when compared to just a few users ago. If you are planning to tap into any of these huge new forces (and why wouldn't you?), then if you can also execute, you will experience an increasing chance of scale.