'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:
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. :)