Now that you know some of the trade-offs and elements of a web site architecture, you need to decide how to put it all together. There are an infinite number of possible arrangements of web site machines and software, but they fall into a few broad categories, which are easily described. Serving of static content is extremely scalable simply by load balancing across more web servers, so that is not very interesting. Instead, I concentrate on transactional web sites or those composed largely of dynamic content.
A number of exact descriptions of architectures are available by reading the details of vendor performance tests. See the Web Bench tests from http://www.spec.org/ for examples. The following contain some common themes.
Most small web sites run entirely from one box, typically using Linux, Apache, MySQL, and Perl (from which we have the acronym LAMP). One box means there will be no network traffic between server-side components, and perhaps even the use of extremely fast-shared memory communication rather than loopback network communication. Though the single server will have to context-switch between the various processes, the single box may still have better performance than dedicated boxes connected by Ethernet. It’s not clear whether a single box is more reliable, or less.
Larger web sites can also be run from a single box. In fact, Oracle in particular would love it if you ran an Oracle Web Server and executed Java servlets ...