Web Architecture
While I'm thinking about web architecture, I might as well link to some classics, for my programming-languages friends who are less familiar with the web as a system.
The web is made up of URIs, servers, clients, intermediaries, media types, entities, auto-negotiation, messages, fragments, request methods, and a bunch of other things. Lots of systems are designed on top of the web in complete ignorance of the features and constraints given by the web as an infrastructure.
These documents discuss the details of this architecture and how applications should harness them:
- Architectural Styles and the Design of Network-based Software Architectures, Fielding, Roy Thomas. This one talks about a style of web archicture called REST, which is arguably the "right way" to think about the use of HTTP as an application infrastructure. There is some controversy, but Fielding makes a compelling case.
- Architecture of the World Wide Web 1.0. A document by the W3C that "defines" the glue that holds the web together. It's a bit pedantic, and I think the nitty-gritty here is largely ignored by the designers of web protocols and systems. Better than that is:
- Web Architecture from 50,000 Feet, also by the W3C but more readable and useful.