'Building powerful web applications in the AWS cloud' is a (fictional) love story about scalability.
Once upon a time, not so very long ago, there was a boy named Andy. Andy, like other 25-year olds, was having a tough time to find a friday-night date. Every Thursday, he used to be frustrated and impatient about the fact that he does not have a confirmed date on Friday. "Necessity is mother of invention". So he decided to build a dating website for himself. He called it Thursdate.com.Thursdate.com is a website that comes alive every Thursday at 4:00 PM and shuts down at 7:00 PM, thereby creating a "Black Friday Effect" where users impatiently and eagerly wait for Thursdays to arrive so that they can put their profiles (audio, video, interests, list their unique strengths and passions) and be whatever they want to be (nerd, philosopher, doctor, engineer...) during that 3-hour time frame to secure a friday night date for themselves. Thursdate.com website was not an ordinary website. It was a dating website built in the cloud leveraging on-demand infrastructure where no compute infrastructure is running prior to 4:00 PM or after 7:00 PM. Hence the cost to run the website in AWS cloud was really low. Also, since it had to massively scale during the 3 hours every Thursday to meet the demand, AWS was a perfect fit.
For rest of the story, see the slide deck below.
Do you like the Thursdate.com idea? (Use the comments section below).
Thursdate.com goes with the punch line of Magical Elastic Dating every Thursday with no past memories - and looked something like this:
The story is about how Andy (our hero) starts small with a single instance application and later grows his web application so that it is highly-scalable, highly available, high-performant, durable and resilient website which is globally deployed and load balanced across multiple regions and availability zones. All in the AWS Cloud and using all various features and services AWS currently provides. Few of them are listed below:
Amazon S3 Static Website feature (when Thursdate.com is "sleeping")
Amazon EC2 Instances and AMIs for hosting the application
Amazon EC2 Elastic IP for remapping between instances when upgrading to newer versions.
Amazon EC2 Auto-Scaling to scale during 3 hour time duration
Amazon S3 buckets to store all static content (audio, video, JS)
Amazon S3 POST mechanism to directly upload content to S3 from the client
Amazon CloudFront download and streaming distributions to edge cache all the static content
Amazon RDS Multi-AZ feature for durability
Amazon Simply Monthly Calculator to estimate AWS Costs
Amazon RDS Read Replicas for scalability and performance
Amazon EC2 Availability Zones for higher availability and fault-tolerance
Amazon Route53 for managing DNS records in a programmatic way
Amazon Elastic Load Balancing for distributing traffic to various EC2 instances
Amazon Reserved Instances to save on long-term
AWS geographical regions for worldwide application deployment
Take a look at the presentation and tell me what you think:
Video:
Its a hypothetical story to inspire developers to build innovative web applications - websites that sleep at night, websites with no karma left-behind, websites that are ephemeral and websites that scale on on-demand infrastructure and that take the full potential of the AWS cloud and all the cool features AWS currently provides.
Its my mission to encourage developers and entice them to think out-of-the-box and build and design elastic cloud architectures that takes the full advantage of what cloud has to offer. I will be psyched to see if someone can actually build this website as I envision it
Comments, suggestions, ideas welcome (Please use the comments section below).
-- Jinesh Varia
p.s. For those who are still wondering whether Andy found his soul mate or not, see the slide deck. :)


That was funny, yet lovely story. Look forward to seeing thursdate this Thursday. ;-)
Posted by: Pothi | March 09, 2011 at 08:28 PM
Here you go Pothi, http://dev.bizo.com/2010/05/improving-global-application.html
Jinesh
Posted by: Jinesh | March 10, 2011 at 11:12 AM
It is nice to know that it building such a highly scalable application with a complex test lifecycle is possible, but it is very difficult replicate this story in real live.
Better documentation and working holistic examples would be helpful.
Posted by: steve | March 10, 2011 at 03:59 PM
Hi Steve,
There are several customers today who successfully run a highly scalable applications along with a complex test lifecycle. With cloud, you have a opportunity to automate with APIs. Large Customers like Zynga, Netflix have invested in automation to maintain their test and production stacks. You can also use CloudFormation Service to automate your complex build test lifecycle using Hudson AMIs. There is lot of documentation already existing and we are continuously adding new and improved documentation.
Thanks for your feedback.
Jin
Posted by: Jinesh | March 11, 2011 at 11:01 AM