Modern websites are web services with an html front end. Web services need to be easy to manage and easy to scale. The variety of ways to architect these features is a never ending playground of possibilities. Below is a description of features and current thinking on how to achieve those features.
Easily scale up or down the group of virtual machines that provides the service. Any one server should be able to be removed without affecting the service. tool: libcloud Add more compute nodes programatically, even across different VPS providers.
Rather than handling an HTTP request, the request goes into a queue. Workers on different VMs pull jobs off the queue. Different VMs are united by access to a common distributed datastore. tools: redis, mozilla circus