This is a guest repost by Sriram Devadas, Engineer at Vistaprint, Web platform group. A fun and well written analogy of how to scale web applications using a familiar coffee shop as an example. No coffee was harmed during the making of this post.
I own a small coffee shop.
My expense is proportional to resources
100 square feet of built up area with utilities, 1 barista, 1 cup coffee maker.
My shop's capacity
Serves 1 customer at a time, takes 3 minutes to brew a cup of coffee, a total of 5 minutes to serve a customer.
Since my barista works without breaks and the German made coffee maker never breaks down,
my shop's maximum throughput = 12 customers per hour.
Customers walk away during peak hours. We only serve one customer at a time. There is no space to wait.
I upgrade shop. My new setup is better!
Same area and utilities, 3 baristas, 2 cup coffee maker, 2 chairs
3 minutes to brew 2 cups of coffee, ~7 minutes to serve 3 concurrent customers, 2 additional customers can wait in queue on chairs.
Concurrent customers = 3, Customer capacity = 5
Business is booming. Time to upgrade again. Bigger is better!...