Many people outside the knitting world probably don’t think about the fact that knitters have conferences too, where they register for classes taught by famous people at some venue. Recently a famous knitter (Stephanie Pearl-McPhee, aka Yarnharlot) organised such an event. I think she got some bad advice from her IT people, whoever they were, about what would be required to run the online registration system.
To be fair, the IT people thought the organisers were being optimistic about how many people would show up. I’m going to summarise the salient numbers; if you want more details, read the blog post. With 12000 on the mailing list, they figured 5000 people was the number to expect, competing for about 4000 spots. The organisers “built a huge server and a pretty good system” for those expected 5000 people. In the event, they had over 30,000 simultaneous connections, and the server couldn’t handle it.
It seems to me that these requirements are precisely what cloud computing should be able to handle. For this particular event, it was possible that only 1000 people would try to register at once, or that lots more would. The load could have been spread over a couple of months if the conference seats sold slowly, or over an hour if they sold fast. Buying a server big enough to handle the maximum expected in this actual case resulted in a server and system that were too small; it could have also happened that money was wasted on something that was far too powerful for what was needed.
What I’d like to know is how, in general terms, should such a system be architected? If you were using this as a case study on how to do cloud computing, what would you propose? Some more requirements: People can register for more than one class. Class sizes are limited, and the size depends on the class. The system has to include an online payment system.
I’m not looking for lots of details, just a broad-brush outline of a paragraph or two, like “put X on one virtual server that can scale up, and Y on another”. My personal experience so far of “the cloud” has been for storage rather than these sorts of systems, and this use case has intrigued me.