0% found this document useful (0 votes)
207 views32 pages

The Rest of REST

Representational State Transfer (REST) * A little background - WWW history + Roy history = REST context - Why do we need a Web architectural style? * A touch of theory - Principled design - Architectural properties - Constraints that induce properties * What parts of REST are missing from Ruby on Rails? * Industry reactions to REST - and a little bit of Relaxation

Uploaded by

Dmytro Shteflyuk
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
207 views32 pages

The Rest of REST

Representational State Transfer (REST) * A little background - WWW history + Roy history = REST context - Why do we need a Web architectural style? * A touch of theory - Principled design - Architectural properties - Constraints that induce properties * What parts of REST are missing from Ruby on Rails? * Industry reactions to REST - and a little bit of Relaxation

Uploaded by

Dmytro Shteflyuk
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 32

The Rest of REST

Roy T. Fielding, Ph.D.

Chief Scientist, Day Software


V.P., Apache HTTP Server

http://roy.gbiv.com/talks/200709_fielding_rest.pdf
Tuesday, September 18, 2007
Between us, we cover all knowledge;
he knows all that can be known and I know the REST. [Mark Twain]

Overview
Representational State Transfer (REST)
• A little background
- WWW history + Roy history = REST context
- Why do we need a Web architectural style?
• A touch of theory
- Principled design
- Architectural properties
- Constraints that induce properties
• What parts of REST are missing from Ruby on Rails?

• Industry reactions to REST


- and a little bit of Relaxation
2

Tuesday, September 18, 2007


Life's race will run, Life's work well done, Life's victory won,
Now cometh REST. [Dr. Edward Hazen Parker]

Why me? Sep 07 = 135,166,473 (5,748x)

23,517

Using XMosaic

EL
libwww-

OD
perl HTTP editor

M
T
EC
J
OB
www.ics.uci.edu Relative

TP
URLs

HT
AS
NS
wwwstat

GI
BE
ST
HTML 10,022

RE
2.0
MOMspider SJ IETF

Conditional 2nd WWW


GET
2,738

1st WWW
623
130

Jun 93 Dec 93 Jun 94 Dec 94 Jun 95


Public WWW servers [Matthew Gray]

Tuesday, September 18, 2007


Absence of occupation is not REST,
A mind quite vacant is a mind distress'd. [William Cowper]

The Problem (circa 1994)


Early architecture was based on solid principles
• URLs, separation of concerns, simplicity
• lacked architectural description and rationale
Protocols assumed a direct server connection
• no awareness of caching, proxies, or spiders
• many independent extensions
Public awareness of the Web was just beginning
• exponential growth threatened the Internet
• commercialization meant new requirements and
new stakeholders
A modern Web architecture was clearly needed
• but how do we avoid breaking the Web in the process?
4

Tuesday, September 18, 2007


Everywhere I have sought REST and not found it, except
sitting in a corner by myself with a little book. [Thomas Kempis]

Software Architectures
A software architecture is an abstraction of the run-
time elements of a software system during some
phase of its operation. A system may be composed
of many levels of abstraction and many phases of
operation, each with its own software architecture.
• A software architecture is defined by a configuration of
architectural elements—components, connectors, and
data—constrained in their relationships in order to achieve
a desired set of architectural properties.
• A configuration is the structure of architectural relationships
among components, connectors, and data during a period
of system run-time.

Tuesday, September 18, 2007


Da requiem; requietus ager bene credita reddit. [Ovid]
(Take REST; a field that has RESTed gives a bountiful crop.)

Architectural Styles
An architectural style is a coordinated set of
architectural constraints that restricts the roles and
features of architectural elements, and the allowed
relationships among those elements, within any
architecture that conforms to that style.
• A style can be applied to many architectures
• An architecture can consist of many styles
Design at the right level of abstraction
• Styles help architects communicate architecture
• Architecture determines potential system properties
• Implementation determines actual system properties
• Architectural patterns are styles with common recipes

Tuesday, September 18, 2007


Oh, some seek bread--no more--life's mere subsistence, ...

What is the Web, really?


Information

Browsers

Protocols

Tuesday, September 18, 2007


... And some seek wealth and ease--the common quest; ...

Web Implementation

Tuesday, September 18, 2007


... And some seek fame, that hovers in the distance; ...

Web Architecture
One abstraction level above the implementation

Components
• User agents, Intermediaries, Servers
• Browsers, Spiders, Proxies, Gateways, Origin Servers
Connectors
• HTTP: a standard transfer protocol to prefer over many
Data
• URI: one identifier standard for all resources
• HTML, XML, RDF, ...: common representation formats to
describe and bind resources

Tuesday, September 18, 2007


... But all are seeking REST.
[Rev. Frederick Langbridge]

Web Architectural Style


One abstraction level above Architecture
• two abstraction levels above implementation
• that’s one too many for most folks
An architectural style is a set of constraints
• unfortunately, constraints are hard to visualize
- kind of like gravity or electromagnetism
- observed only by their effect on others
Constraints induce architectural properties
• both desirable and undesirable properties
- a.k.a., software qualities
- a.k.a., design trade-offs
10

Tuesday, September 18, 2007


REST is not quitting the busy career;
REST is the fitting of self to its sphere. [John Sullivan Dwight]

Web Requirements
Low entry barrier
- Hypermedia User Interface
- Simple protocols for authoring and data transfer
• a.k.a., must be Simple, Reusable, and Extensible
Distributed Hypermedia System
- Large data transfers
- Sensitive to user-perceived latency
• a.k.a., must be Data-driven, Streamable, and Cacheable
Multiple organizational boundaries
- Anarchic scalability
- Gradual and fragmented change (deployment)
• a.k.a, must be Scalable, Evolvable, Visible, Reliable, ...

11

Tuesday, September 18, 2007


Sometimes the most urgent and vital thing you can possibly do
is take a complete REST. [Ashleigh Brilliant]

REST on a slide

pro

layered
replicated gra
mm uniform interface
abl
separated e
RR CS LS VM U
i nt
pr erme
on-demand stateless oc d
es iat mobile simple
sin e
g visible
$ CSS LCS COD

reliable shared extensible reusable


cacheable scalable multi-
C$SS LC$SS org. LCODC$SS REST

Figure 5-9. REST Derivation by Style Constraints

the disadvantages) of the optional constraints12when they are known to be in effect for some
Tuesday, September 18, 2007
How beautiful it is to do nothing,
and then REST afterward. [Spanish Proverb]

Style = nil

Starting from a condition of no constraints…

WWW

13

Tuesday, September 18, 2007


REST is not idleness, ...

Style += Client/Server

Apply separation of concerns: Client-Server

improves UI portability simplifies server

enables multiple organizational domains

14

Tuesday, September 18, 2007


... and to lie sometimes on the grass ...

Style += Stateless

Constrain interaction to be stateless…

simplifies server

degrades efficiency improves scalability

improves reliability

15

Tuesday, September 18, 2007


... under the trees on a summer's day, ...

Style += Caching

Add optional non-shared caching

reduces average latency

degrades reliability improves efficiency

improves scalability

16

Tuesday, September 18, 2007


... listening to the murmur of water, ...

Style += Uniform Interface

Apply generality: uniform interface constraint

improves visibility

degrades efficiency independent evolvability

decouples implementation

17

Tuesday, September 18, 2007


... or watching the clouds float across the sky, ...

Style += Layered System

Apply info hiding: layered system constraints

$ $

$ $ $

$ $

adds latency shared caching legacy encapsulation

simplifies clients improves scalability load balancing

18

Tuesday, September 18, 2007


... is by no means a waste of time. [Sir John Lubbock]

REST Style

Finally, allow code-on-demand (applets/js)

$ $

$ $ $

$ $

simplifies clients improves extensibility reduces visibility

19

Tuesday, September 18, 2007


REST Uniform Interface
All important resources are identified by one
resource identifier mechanism
- simple, visible, reusable, stateless communication
Access methods (actions) mean the same for all
resources (universal semantics)
- layered system, cacheable, and shared caches
Resources are manipulated through
the exchange of representations
- simple, visible, reusable, cacheable, and
stateless communication
Exchanges occur in self-descriptive messages
- layered system, cacheable, and shared caches
20

Tuesday, September 18, 2007


REST Uniform Interface
Hypertext as the engine of application state
• A successful response indicates (or contains) a current
representation of the state of the identified resource;
the resource remains hidden behind the server interface.
• Some representations contain links to potential next
application states, including direction on how to transition
to those states when a transition is selected.
• Each steady-state (Web page) embodies
the current application state
- simple, visible, scalable, reliable, reusable, and
cacheable network-based applications
• All application state (not resource state) is kept on client
• All shared state (not session state) is kept on origin server

21

Tuesday, September 18, 2007


Hypertext Clarification
Hypertext has many (old) definitions
• "By 'hypertext,' I mean non-sequential writing — text that branches and allows
choices to the reader, best read at an interactive screen. As popularly conceived,
this is a series of text chunks connected by links which offer the reader different
pathways" [Theodor H. Nelson]
• “Hypertext is a computer-supported medium for information in which many
interlinked documents are displayed with their links on a high-resolution
computer screen.” [Jeffrey Conklin]

When I say Hypertext, I mean ...


• The simultaneous presentation of information and controls
such that the information becomes the affordance through
which the user obtains choices and selects actions.
• Hypertext does not need to be HTML on a browser
- machines can follow links when they understand
the data format and relationship types
22

Tuesday, September 18, 2007


REST Rationale
Maximizes reuse
• uniform resources having identifiers = Bigger WWW
• visibility results in serendipity
Minimizes coupling to enable evolution
• uniform interface hides all implementation details
• hypertext allows late-binding of application control-flow
• gradual and fragmented change across organizations
Eliminates partial failure conditions
• server failure does not befuddle client state
• shared state is recoverable as a resource
Scales without bound
• services can be layered, clustered, and cached
Simplifies, simplifies, simplifies
23

Tuesday, September 18, 2007


REST when you're weary. Refresh and renew yourself, your body,
your mind, your spirit. Then get back to work. [Ralph Marston]

What is missing from Rails?


Just newbie speculation, without looking at edge:
Uniform method semantics?
• Rails support (via CRUD) is outstanding
• but what happens when I add a new HTTP method?
Resource identifiers for important resources?
• Route configs are good, but code-structure dependent
• URI templates would be better, IMO
Resources manipulated as representations?
• Rails has excellent support for alternative data formats
Hypertext as the engine of application state?
• Is this just assumed? Can it be guided by Rails?

24

Tuesday, September 18, 2007


A little relaxation
Roy T. Fielding, Ph.D.

Chief Scientist, Day Software


V.P., Apache HTTP Server

http://roy.gbiv.com/talks/200709_fielding_rest.pdf
Tuesday, September 18, 2007
Client: Excuse me. Did you say knives?
Architect: Rotating knives, yes. [Monty Python’s Flying Circus]

Industry Practice
Meanwhile, in a parallel universe ...
• http://www.youtube.com/watch?v=-RxhkWLJH4Y
• Microsoft was selling COM+/DCOM
• IBM and friends were selling CORBA
• Sun was selling RMI
• W3C was developing XML
Then SOAP was dropped on the shower floor
as an Internet Draft
• and quickly laughed out of the IETF
• only to be picked up by IBM and renamed “Web Services”
and REST became the only counter-argument
to multi-billions in advertising
26

Tuesday, September 18, 2007


Cast off the cares that have so long oppressed;
REST, sweetly REST! [Jane Laurie Borthwick]

Industry Reaction?
Not very constructive
• proponents labeled as RESTafarians
• arguments derided as a “religion”
• excused as “too simple for real services”
Service-Oriented Architecture (SOA)
• a direct response to REST
• attempt at an architectural style for WS
- without any constraints
• What is SOA?
- Wardrobe, Musical Notes, or Legos?
- http://www.youtube.com/profile_videos?
user=richneckyogi

27

Tuesday, September 18, 2007


REST is sweet after strife. [Lord Edward Robert Bulwer Lytton]

Industry Acceptance
Something has changed ...
• People started to talk about the value of URIs
(reusable resources)
• Google maps decided to encourage reuse (Mashups)
• O’Reilly began talking about Web 2.0
• Rails reminded people that frameworks can be simple

and REST(ful) became the next industry buzzword

Yikes!

28

Tuesday, September 18, 2007


Men, in whatever anxiety they may be, if they are men,
sometimes indulge in relaxation. [Marcus Tullius Cicero]

Relaxation
Clearly, it’s time to start messing with minds
• REST is not the only architectural style
• My dissertation is about Principled Design,
not the one true architecture
What do constraints really mean?
• codify a design choice at the level of architecture
• to induce certain (good) architectural properties
• at the expense of certain (bad) trade-offs
What happens when we relax a given constraint?
• Is it really the end of the world?
• Should waka (a replacement for HTTP) have its own style?

29

Tuesday, September 18, 2007


Relax uniform methods ?
What happens when we let the interface be
resource-specific?
• URI is no longer sufficient for resource identification
- lose benefit of URI exchange (assumed GET)
- require resource description language
• Information becomes segregated by resource type
- walled into gardens (loss of power laws / pagerank)
- important information must be replicated
• Intermediaries cannot encapsulate services
- unable to anticipate resource behavior
- too complex to cache based on method semantics
• No more serendipity

30

Tuesday, September 18, 2007


For too much REST itself becomes a pain.
[Homer, The Odyssey]

Relax client/server ?
What happens when we let servers make requests?
• lose implementation simplicity due to listening,
additional parsing requirements
• potential for confusion with mixed-protocol intermediaries
• unknown: does it impact session state?
Trade-offs aren’t as severe as the first example.
Benefits?
• peer-to-peer applications
• shared cache mesh, triggered expiration
Can we find ways to compensate for the trade-offs?
• Make message syntax more uniform
- Limit server-initiated requests to same-connection
31

Tuesday, September 18, 2007


Let the weary at length possess quiet REST.
[Lucius Annaeus Seneca]

Conclusion
Use your brains!
• don’t design-by-buzzword
• don’t believe everything you read
• always keep in mind that change is inevitable
• use principled design
- identify desired architectural properties
- constrain behavior to induce properties
- compensate for the inevitable design trade-offs

32

Tuesday, September 18, 2007

You might also like