The requirements of the web are on a different scale than any other application to date. Even calling the web an application sounds weird, because so many people use and contribute to it. Even so, the Fielding dissertation calls the web the worlds largest distributed application. As such, it has unique requirements for its domain.
In addition to the broad requirements needed by network applications, the Fielding dissertation brings attention to four key domain-specific requirements for the web. The web must have a low barrier of entry for newcomers, be extremely extensible, support distributed hypermedia, and be internet-scale. Any architecture designed for the web, such as REST, is designed to obtain these requirements by choosing the appropriate trade-offs accordingly.
When it comes to the web it’s hard not to think of its large scale nature. When you connect something as big as the web into one unified system numerous challenges arise. When thinking of the web as a whole, the enormous load of traffic stands out as an almost insurmountable challenge to software. From the perspective of an individual software component, a design that serves 50 simultaneous connections may work for some levels of popularity but most certainly not others. A more subtle problem is the competing and sometimes political goals accompanying different organizations that want their underlying software to cooperate. The web is a large decentralized authoring platform that must also allow for the various authors with different levels of trust to fail without breaking other parts of the system. This is what the paper calls the internet-scale requirement.
Loosely related to the internet-scale requirement is the requirement for extensibility. With a large user and author base, the desired content will change over time almost assuredly. When the requirements change for some portion of the system that portion will need to change without breaking everything else.
A low barrier of entry was needed to increase adoption of the proposed HTTP standard. The paper maintains that hypermedia was chosen because of its simple nature concerning authoring and its compatibility with search services. Hypermedia could also be made to span multiple locations. Having hypermedia’s controlling information, such as when to cache, in remote locations facilitated user-perceived performance and served the internet-scale requirement as well. Given the relatively large size of distributed hypermedia messages, the web’s architecture needed to be designed for large, coarse grained messages.
Using the network-based application and web requirements as the context, my next article will finally review the REST architecture itself.