Jun 032009
 

Many people out­side the knit­ting world prob­ably don’t think about the fact that knit­ters have con­fer­ences too, where they register for classes taught by fam­ous people at some ven­ue. Recently a fam­ous knit­ter (Stephanie Pearl-McPhee, aka Yarnhar­lot) organ­ised such an event. I think she got some bad advice from her IT people, who­ever they were, about what would be required to run the online regis­tra­tion system.

To be fair, the IT people thought the organ­isers were being optim­ist­ic about how many people would show up. I’m going to sum­mar­ise the sali­ent num­bers; if you want more details, read the blog post. With 12000 on the mail­ing list, they figured 5000 people was the num­ber to expect, com­pet­ing for about 4000 spots. The organ­isers “built a huge serv­er and a pretty good sys­tem” for those expec­ted 5000 people. In the event, they had over 30,000 sim­ul­tan­eous con­nec­tions, and the serv­er could­n’t handle it.

It seems to me that these require­ments are pre­cisely what cloud com­put­ing should be able to handle. For this par­tic­u­lar event, it was pos­sible 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 con­fer­ence seats sold slowly, or over an hour if they sold fast. Buy­ing a serv­er big enough to handle the max­im­um expec­ted in this actu­al case res­ul­ted in a serv­er and sys­tem that were too small; it could have also happened that money was wasted on some­thing that was far too power­ful for what was needed.

What I’d like to know is how, in gen­er­al terms, should such a sys­tem be archi­tec­ted? If you were using this as a case study on how to do cloud com­put­ing, what would you pro­pose? Some more require­ments: People can register for more than one class. Class sizes are lim­ited, and the size depends on the class. The sys­tem has to include an online pay­ment system.

I’m not look­ing for lots of details, just a broad-brush out­line of a para­graph or two, like “put X on one vir­tu­al serv­er that can scale up, and Y on anoth­er”. My per­son­al exper­i­ence so far of “the cloud” has been for stor­age rather than these sorts of sys­tems, and this use case has intrigued me.

/* ]]> */