Scale Something: How Draw Something Rode Its Rocket Ship Of Growth
gamasutra.com
gamasutra.com
Before all the haters reach for the downvote button: I have apps that routinely go from 2-3 requests/sec to bursts of 500+ requests/sec for hours at a stretch and the only difference is that my bill is a few tens of dollars higher than usual. And there's no reason it couldn't handle 100X that load as long as I keep paying the bill.
You might be surprised what kind of limits you hit and what your invoice looks like when you actually hit 50k reqs/sec for any length of time.
Cloud platforms have bottlenecks, too. The vendors usually handle that by making it comically expensive for you to exceed a certain threshold ("financial back pressure") and/or by throttling you outright.
I really would be surprised. I'm pretty familiar with GAE's limits and pricing structure. Granted, 50k requests/sec is severe, but they would have to actually go out and write special billing code just to charge me more if I hit that rate. I don't see that happening.
IMO these two issues are enough to keep most of the app developers away from App Engine.
Was this Amazon's S3?
Working these kinds of hours (unless I own a large share in the company) just sounds insane to me.
I've been a part of a few multi-million dollar companies. My code made it possible. But, if I wasn't there, someone else would have made it happen.
But the challenge of solving the problems and finding creative ways to overcome an issue seem like crack to me at that time of the night. As long as it is not a consistent (every night) thing, then I don't mind it at all.
I really wonder how many people are capable of making services scale in such a short time frame and such massive pressure. I hope I can learn it one day
I am curious to hear whether the engineers working at this knew at the time that this game was going to be so valuable for the company.
However I doubt all these problems are as unpredictable as the article makes them out to be. There's a whole field of science devoted solely to modeling large systems of interconnected stochastic processes and identifying bottlenecks.
This science is so old a mandatory semester-long class was devoted to it in 2nd year of my comp sci undergrad.
I do wonder how many developers who aren't working on government-backed systems actually use that science though ...
While it is possible to model the large system, usually as a startup you don't have the time to make the model, nor the data to feed the model.
Part of the problem is that you don't know what the inputs to the system will be and which inputs will grow exponentially.
These models need to be fed known inputs and parameters such as component limits.
Neither can be specified in advance for your average, public-facing, constantly changing webapp.
However, I do think the case could be made that trying to roll your own infrastructure in this kind of scenario is perhaps not the best use of your time, when solutions to scalabilty problems already exist and are so well tested.
(Edit: what I mean by that is, if you use something like App Engine, you really don't need to be concerned with scalability all that much -- as long as you're working sensibly and within the constraints of the platform)