Internet Scale Architectures
The challenge [of the WWW project] was to build a system that would provide a universally consistent interface to this structured information, available on as many platforms as possible, and incrementally deployable as new people and organizations joined the project. — Roy T. Fielding
Latency affects the usability of a system. Latency refers to the physical limitations of communication between geographically distributed parties, such as propagation delay, bandwidth, and disconnection. If the time between a user requesting a resource and obtaining a usable result is unreasonable, a system will not be easily adopted.
Scalability is necessary to handle the large number of users and sudden spikes in access attempts. Users are located around the world and may at any time want to access the same resources, such as a breaking news story.
Extensibility is necessary to avoid being stuck forever with limitations of what's first deployed. As requirements evolve, internet scale systems must evolve to address these requirements.
Decentralized architectures are discussed on our Decentralized Software Architectures page.
Minimize latency and maximize independence and scalability through connectors. Constraining connector semantics to cache and reuse interactions between components supports dynamically substituting components with, and intermediary processing by, connectors. This distributes the work of handling sudden spikes in access by caching results throughout the internet and reduces latency by using (faster, closer) caches rather than overloading the original source.
Make interactions between components stateless, i.e. each request contains all the information necessary to understand the request independent of request that have proceeded it. This has many benefits: it allows requests to be viewed and understood in isolation, removes the need for connectors to retain application state, allows parallel processing of interactions without the needing to understand the interaction semantics, and supports caching of responses by forcing all information that might be used for this purpose to be present in the request.
Transfer data representations rather than the data itself. The types of data representation will be dynamically determined from a set of (evolving) standard data types based on the desires of the recipient and the nature of the data. This has many benefits: it hides all information about the true nature of the data is hidden within the sender, it prevents the client from making assumptions about the data structure, it enables specialized processing by requesting data to be represented using a (new) data type, allows the client and sender to be simple and scalable while minimizing the bytes transferred.
Refer to resources abstractly. This allows resources to be referenced without artificially distinguishing them by type or implementation, and allow a resource to be moved without needing to update all of the references.
- REST - REpresentational State Transfer, an architectural style for distributed hypermedia systems. The architectural style of the modern WWW.
- HTTP - Hypertext Transfer Protocol, a family of protocols designed specifically for the transfer of resource representations
- WebDAV - Web-based Distributed Authoring and Versioning, an extension to the HTTP protocol to allow distributed authoring
- Apache HTTP Server - The best general-purpose HTTP server that money can't buy
- SIENA - Scalable Internet Event Notification Architectures
- mod_pubsub - Publish/subscribe messaging for the web
- Architectural Styles and the Design of Network-based Software Architectures - Roy T. Fielding
- An Analysis of the Hypertext Versioning Domain - Jim Whitehead
- Extending the REpresentational State Transfer Architectural Style for Decentralized Systems - Rohit Khare
- More about Decentralized Software Architectures.
- Extending the Representational State Transfer (REST) Architectural Style for Decentralized Systems (ICSE 2004)
- Principled Design of the Modern Web Architecture (ICSE 2000)
- Web-Based Development of Complex Information Products (Communications of the ACM, 1998)