So what would a small-time web-tech blogger all of a sudden need Amazon EC2 or Google App Engine expertise for? For his real job, that’s why!
On Thursday, May 12th someone pretty high up in the company hierarchy decided we had to have a web application ready on the 19th. The catch: it had to be able to handle a shitload of traffic in only 2 days time. After consulting with a couple of specialists and reviewing our options, we decided to go for it with our existing web-development partner. Because of available expertise and resources however, we decided to switch from J2EE to .Net and to deploy the application on Microsoft’s “platform as a service” offering, called Azure.
In 5 days time (what weekend was that?), using a shared Google Docs spreadsheet as project hub (for bug-list, todo’s, translation strings and in document IM) the application was developed, tested and hammered upon with a huge load-test and on Wednesday-evening the final version was deployed on Azure.
The most interesting technical tidbits (as designed by a smart and very motivated lead-developer):
- the architecture is based on Azure’s Compute “web role” and “worker role” instances, with the “web role” instances taking care of capturing user data and putting it on a queue and the “worker role” instances asynchronously picking up, processing and storing the data
- data relevant for the “web role” instances is available in distributed cache
- processed data is stored in Azure Storage’s blobs & tables (i.e. not in Azure SQL)
- static files are offloaded to Azure’s CDN
The application handled a huge amount of traffic the first two days. Due to circumstances the load was especially high on Thursday morning (with over 800 HTTP-requests/second), but performance and availability remained perfect. It was like walking on this fluffy cloud, really: