paper

Architectural Styles and the Design of Network-based Software Architectures

  • Authors:

📜 Abstract

The World Wide Web has succeeded in large part because its software architecture has been designed to meet the needs of an Internet-scale distributed hypermedia system. The Web has been iteratively developed over the past ten years through a series of modifications to the standards that define its architecture. In order to identify those aspects of the Web that needed improvement and avoid undesirable modifications, a model for the modern Web architecture was needed to guide its design, definition, and deployment. Software architecture research investigates methods for determining how best to partition a system, how components identify and communicate with each other, how information is communicated, how elements of a system can evolve independently, and how all of the above can be described using formal and informal notations. My work is motivated by the desire to understand and evaluate the architectural design of network-based application software through principled use of architectural constraints, thereby obtaining the functional, performance, and social properties desired of an architecture. An architectural style is a named, coordinated set of architectural constraints. This dissertation defines a framework for understanding software architecture via architectural styles and demonstrates how styles can be used to guide the architectural design of network-based application software. A survey of architectural styles for network-based applications is used to classify styles according to the architectural properties they induce on an architecture for distributed hypermedia. I then introduce the Representational State Transfer (REST) architectural style and describe how REST has been used to guide the design and development of the architecture for the modern Web. REST emphasizes scalability of component interactions, generality of interfaces, independent deployment of components, and intermediary components to reduce interaction latency, enforce security, and encapsulate legacy systems. I describe the software engineering principles guiding REST and the interaction constraints chosen to retain those principles, contrasting them to the constraints of other architectural styles. Finally, I describe the lessons learned from applying REST to the design of the Hypertext Transfer Protocol and Uniform Resource Identifier standards, and from their subsequent deployment in Web client and server software.

✨ Summary

Overview

Fielding presents a framework for analyzing software architecture as a set of run-time components, connectors, data elements, configurations, and architectural constraints. Architectural styles are treated as named sets of coordinated constraints whose effects can be evaluated through the properties they induce, such as scalability, performance, simplicity, modifiability, visibility, portability, and reliability.

The dissertation surveys network-based architectural styles—including pipe-and-filter, replication, client-server, layered systems, mobile code, event-based integration, and distributed objects—and evaluates their trade-offs for distributed hypermedia. It argues that architecture should be selected according to application requirements rather than adopted as a universal solution.

The central contribution is Representational State Transfer (REST), derived incrementally from client-server separation, stateless communication, caching, a uniform interface, layered systems, and optional code-on-demand. REST’s uniform interface is defined through four constraints: identification of resources, manipulation of resources through representations, self-descriptive messages, and hypermedia as the engine of application state. The resource abstraction separates a conceptual target from its potentially changing representations, allowing implementations to evolve behind a stable interface. Stateless interactions and cacheable responses support scalability and efficiency, while layered intermediaries enable caching, security enforcement, protocol translation, load balancing, and legacy-system encapsulation.

The dissertation applies REST as a design and evaluation model to URI and HTTP standardization and to deployed Web software, including Apache and libwww-perl. It also identifies architectural mismatches, including URI-embedded session identifiers and cookie-based state, where deployed mechanisms conflict with REST’s goals of statelessness, visibility, cacheability, and independent evolution.

Influence

The dissertation is widely recognized as the work that introduced and formally articulated REST as an architectural style for distributed hypermedia. A later ESEC/FSE paper by Fielding and collaborators describes REST as continuing to guide understanding of the Web and traces related architectural styles inspired by its principles. (research.google) The University of California, Irvine dissertation archive identifies the work as a dissertation defining the REST architecture, while the University of Pennsylvania’s Online Books Page describes it as the dissertation that introduced REST. (ics.uci.edu)