76
Apache Con Leading the Wave of Open Source A little REST and Relaxation Roy T. Fielding, Ph.D. Chief Scientist, Day Software V.P., Apache HTTP Server http://roy.gbiv.com/talks/200804_REST_ApacheCon.pdf

A little REST and Relaxation - Roy T. Fielding

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: A little REST and Relaxation - Roy T. Fielding

Apach

eCon

Leading the Waveof Open Source

A little REST and Relaxation

Roy T. Fielding, Ph.D.Chief Scientist, Day Software

V.P., Apache HTTP Server

http://roy.gbiv.com/talks/200804_REST_ApacheCon.pdf

Page 2: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008 2

Representational State Transfer

Web retrospective

Understanding Architecture

What is REST?

Why REST?

REST at Day

Q & A

Between us, we cover all knowledge;he knows all that can be known and I know the REST. [Mark Twain]

Page 3: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008

Jun 93 Dec 93 Jun 94 Dec 94 Jun 95

130623

2,738

10,022

23,517

Context

Public WWW servers [Matthew Gray]

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

Mar 08 = 162,662,052 (6,917x)

3

Page 4: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008

Jun 93 Dec 93 Jun 94 Dec 94 Jun 95

130623

2,738

10,022

23,517

Context

Public WWW servers [Matthew Gray]

Using XMosaic

www.ics.uci.edu

wwwstat

MOMspider

Conditional GET

1st WWW

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

Mar 08 = 162,662,052 (6,917x)

3

Page 5: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008

Jun 93 Dec 93 Jun 94 Dec 94 Jun 95

130623

2,738

10,022

23,517

Context

Public WWW servers [Matthew Gray]

Using XMosaic

www.ics.uci.edu

wwwstat

MOMspider

Conditional GET

1st WWW

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

Mar 08 = 162,662,052 (6,917x)

3

Page 6: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008

Jun 93 Dec 93 Jun 94 Dec 94 Jun 95

130623

2,738

10,022

23,517

Context

Public WWW servers [Matthew Gray]

Using XMosaic

www.ics.uci.edu

wwwstat

MOMspider

Conditional GET

1st WWW

Relative URLs

HTML 2.0

2nd WWW

libwww-perl

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

Mar 08 = 162,662,052 (6,917x)

3

Page 7: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008

Jun 93 Dec 93 Jun 94 Dec 94 Jun 95

130623

2,738

10,022

23,517

Context

Public WWW servers [Matthew Gray]

Using XMosaic

www.ics.uci.edu

wwwstat

MOMspider

Conditional GET

1st WWW

Relative URLs

HTML 2.0

2nd WWW

HTTP editor

SJ IETF

libwww-perl

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

Mar 08 = 162,662,052 (6,917x)

3RES

T BEG

INS

AS

HTT

P O

BJE

CT M

ODEL

Page 8: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008

Early architecture 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

Emerging awareness of the Web‣ exponential growth threatened the Internet

commercialization meant new stakeholders with new (selfish) requirements

A modern Web architecture was needed‣ but how do we avoid breaking the Web in the process?

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

The Web Problem (circa 1994)

4

Page 9: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008 5

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

Web Requirements & Properties

Page 10: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008 5

Low entry barrier Hypermedia User Interface

Simple protocols for authoring and data transfer

‣must be Simple and Reusable; want Extensible

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

Web Requirements & Properties

Page 11: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008 5

Low entry barrier Hypermedia User Interface

Simple protocols for authoring and data transfer

‣must be Simple and Reusable; want Extensible

Distributed Hypermedia System Large data transfers

Sensitive to user-perceived latency

‣must be Data-driven and Streamable; want Performant

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

Web Requirements & Properties

Page 12: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008 5

Low entry barrier Hypermedia User Interface

Simple protocols for authoring and data transfer

‣must be Simple and Reusable; want Extensible

Distributed Hypermedia System Large data transfers

Sensitive to user-perceived latency

‣must be Data-driven and Streamable; want Performant

Multiple organizational boundaries Anarchic scalability

Gradual and fragmented change (deployment)

‣must be Scalable, Portable, Evolvable; want Reliable, Visible, Customizable, Configurable, Extensible, ...

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

Web Requirements & Properties

Page 13: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008

What is the Web, really?

Browsers

Information

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

6

http://www.w3.org/TR/html4/

4/2/08 12:09 AM

next table of contents elements attributes index

HTML 4.01 Specification

W3C Recommendation 24 December 1999

This version:

http://www.w3.org/TR/1999/REC-html401-19991224

(plain text [794Kb], gzip'ed tar archive of HTML files [371Kb], a .zip archive of HTML files

[405Kb], gzip'ed Postscript file [746Kb, 389 pages], gzip'ed PDF file [963Kb])

Latest version of HTML 4.01:

http://www.w3.org/TR/html401

Latest version of HTML 4:

http://www.w3.org/TR/html4

Latest version of HTML:

http://www.w3.org/TR/html

Previous version of HTML 4.01:

http://www.w3.org/TR/1999/PR-html40-19990824

Previous HTML 4 Recommendation:

http://www.w3.org/TR/1998/REC-html40-19980424

Editors:

Dave Raggett <[email protected]>

Arnaud Le Hors, W3C

Ian Jacobs, W3C

Copyright ©1997-1999 W3C® (MIT, INRIA, Keio), All Rights Reserved. W3C liability, trademark, document use

and software licensing rules apply.

Abstract

This specification defines the HyperText Markup Language (HTML), the publishing language of the

World Wide Web. This specification defines HTML 4.01, which is a subversion of HTML 4. In addition

to the text, multimedia, and hyperlink features of the previous versions of HTML (HTML 3.2 [HTML32]

and HTML 2.0 [RFC1866]), HTML 4 supports more multimedia options, scripting languages, style

sheets, better printing facilities, and documents that are more accessible to users with disabilities.

HTML 4 also takes great strides towards the internationalization of documents, with the goal of making

the Web truly World Wide.

HTML 4 is an SGML application conforming to International Standard ISO 8879 -- Standard

Generalized Markup Language [ISO8879].

Status of this document

This section describes the status of this document at the time of its publication. Other documents maysupersede this document. The latest status of this document series is maintained at the W3C.

Fielding, et al Standards Track [Page 1]

Network Working Group R. FieldingRequest for Comments: 2068 UC IrvineCategory: Standards Track J. Gettys J. C. Mogul DEC H. Frystyk T. Berners-Lee MIT/LCS January 1997

Hypertext Transfer Protocol -- HTTP/1.1

Status of this MemoThis document specifies an Internet standards track protocol for the Internet community, and requests

discussion and suggestions for improvements. Please refer to the current edition of the "Internet Official

Protocol Standards" (STD 1) for the standardization state and status of this protocol. Distribution of this

memo is unlimited.

AbstractThe Hypertext Transfer Protocol (HTTP) is an application-level protocol for distributed, collaborative,

hypermedia information systems. It is a generic, stateless, object-oriented protocol which can be used for

many tasks, such as name servers and distributed object management systems, through extension of its

request methods. A feature of HTTP is the typing and negotiation of data representation, allowing systems

to be built independently of the data being transferred.

HTTP has been in use by the World-Wide Web global information initiative since 1990. This specification

defines the protocol referred to as “HTTP/1.1”.

file://localhost/Users/fielding/ws/labs-webarch/uri/rfc/rfc3986.html

4/2/08 12:16 AM

Network Working Group T. Berners-Lee

Request for Comments: 3986 W3C/MIT

Obsoletes: 2732, 2396, 1808 R. Fielding

STD: 66 Day Software

Updates: 1738 L. Masinter

Category: Standards Track Adobe Systems

January 2005

Uniform Resource Identifier (URI): Generic Syntax

Status of this Memo

This document specifies an Internet standards track protocol for the Internet community,and requests discussion and suggestions for improvements. Please refer to the currentedition of the “Internet Official Protocol Standards” (STD 1) for the standardization stateand status of this protocol. Distribution of this memo is unlimited.

Copyright Notice

Copyright © The Internet Society (2005). All Rights Reserved.

Abstract

A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme.

Protocols

Page 14: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008

Web Implementation (user view)... And some seek wealth and ease--the common quest; ...

7

Page 15: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008

Web Implementation (user view)... And some seek wealth and ease--the common quest; ...

7

Page 16: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008

Web Implementation (user view)... And some seek wealth and ease--the common quest; ...

7

Page 17: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008

Web Implementation (user view)... And some seek wealth and ease--the common quest; ...

7

Page 18: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008

Web Implementation (user view)... And some seek wealth and ease--the common quest; ...

7

Page 19: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008

Web Implementation (user view)... And some seek wealth and ease--the common quest; ...

7

Page 20: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008

Web Implementation (origin view)

8

Application ServersDynamic Content

Centralized DataRDBMS, NFS, SAN

Webservers/GatewaysAccelerator Cache

User Agents

IntermediaryProxy Cache

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

Page 21: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008

A vertical abstraction on implementation

Web Architecture

9

$

$

$

$

$

$

$

$User Agents

Proxies Gateways Origin Servers

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

Page 22: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008

A vertical abstraction on implementation

Web Architecture

10

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

http://www.w3.org/TR/html4/

4/2/08 12:09 AM

next table of contents elements attributes index

HTML 4.01 Specification

W3C Recommendation 24 December 1999

This version:

http://www.w3.org/TR/1999/REC-html401-19991224

(plain text [794Kb], gzip'ed tar archive of HTML files [371Kb], a .zip archive of HTML files

[405Kb], gzip'ed Postscript file [746Kb, 389 pages], gzip'ed PDF file [963Kb])

Latest version of HTML 4.01:

http://www.w3.org/TR/html401

Latest version of HTML 4:

http://www.w3.org/TR/html4

Latest version of HTML:

http://www.w3.org/TR/html

Previous version of HTML 4.01:

http://www.w3.org/TR/1999/PR-html40-19990824

Previous HTML 4 Recommendation:

http://www.w3.org/TR/1998/REC-html40-19980424

Editors:

Dave Raggett <[email protected]>

Arnaud Le Hors, W3C

Ian Jacobs, W3C

Copyright ©1997-1999 W3C® (MIT, INRIA, Keio), All Rights Reserved. W3C liability, trademark, document use

and software licensing rules apply.

Abstract

This specification defines the HyperText Markup Language (HTML), the publishing language of the

World Wide Web. This specification defines HTML 4.01, which is a subversion of HTML 4. In addition

to the text, multimedia, and hyperlink features of the previous versions of HTML (HTML 3.2 [HTML32]

and HTML 2.0 [RFC1866]), HTML 4 supports more multimedia options, scripting languages, style

sheets, better printing facilities, and documents that are more accessible to users with disabilities.

HTML 4 also takes great strides towards the internationalization of documents, with the goal of making

the Web truly World Wide.

HTML 4 is an SGML application conforming to International Standard ISO 8879 -- Standard

Generalized Markup Language [ISO8879].

Status of this document

This section describes the status of this document at the time of its publication. Other documents maysupersede this document. The latest status of this document series is maintained at the W3C.

Fielding, et al Standards Track [Page 1]

Network Working Group R. FieldingRequest for Comments: 2068 UC IrvineCategory: Standards Track J. Gettys J. C. Mogul DEC H. Frystyk T. Berners-Lee MIT/LCS January 1997

Hypertext Transfer Protocol -- HTTP/1.1

Status of this MemoThis document specifies an Internet standards track protocol for the Internet community, and requests

discussion and suggestions for improvements. Please refer to the current edition of the "Internet Official

Protocol Standards" (STD 1) for the standardization state and status of this protocol. Distribution of this

memo is unlimited.

AbstractThe Hypertext Transfer Protocol (HTTP) is an application-level protocol for distributed, collaborative,

hypermedia information systems. It is a generic, stateless, object-oriented protocol which can be used for

many tasks, such as name servers and distributed object management systems, through extension of its

request methods. A feature of HTTP is the typing and negotiation of data representation, allowing systems

to be built independently of the data being transferred.

HTTP has been in use by the World-Wide Web global information initiative since 1990. This specification

defines the protocol referred to as “HTTP/1.1”.

file://localhost/Users/fielding/ws/labs-webarch/uri/rfc/rfc3986.html

4/2/08 12:16 AM

Network Working Group T. Berners-Lee

Request for Comments: 3986 W3C/MIT

Obsoletes: 2732, 2396, 1808 R. Fielding

STD: 66 Day Software

Updates: 1738 L. Masinter

Category: Standards Track Adobe Systems

January 2005

Uniform Resource Identifier (URI): Generic Syntax

Status of this Memo

This document specifies an Internet standards track protocol for the Internet community,and requests discussion and suggestions for improvements. Please refer to the currentedition of the “Internet Official Protocol Standards” (STD 1) for the standardization stateand status of this protocol. Distribution of this memo is unlimited.

Copyright Notice

Copyright © The Internet Society (2005). All Rights Reserved.

Abstract

A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme.

Protocols

Page 23: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008

A vertical abstraction on 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, PDF, JPEG, JSON, ...

common representation formats to describe and bind resources

Web Architecture

11

Page 24: A little REST and Relaxation - Roy T. Fielding

Web retrospective

Understanding Architecture

What is REST?

Why REST?

REST at Day

Q & A

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008 12

Agenda

Page 25: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008

NOT “Enterprise Architecture”

Half of what you read about Architecture in Software Industry trade rags is WRONG‣ it usually isn’t even about architecture

strategic vision

resource planning

requirements analysis

stakeholder reviews

staffing & purchasing

software structure

libraries/frameworks

buzzword-compliance

The same folks will be selling REST‣ there will be lots of miscommunication (in and out)

13

Page 26: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008

NOT “Enterprise Architecture”

Half of what you read about Architecture in Software Industry trade rags is WRONG‣ it usually isn’t even about architecture

strategic vision

resource planning

requirements analysis

stakeholder reviews

staffing & purchasing

software structure

libraries/frameworks

buzzword-compliance

The same folks will be selling REST‣ there will be lots of miscommunication (in and out)

13

This MSDN site panders in the worst way...

“Solutions Architect”“Infrastructure Architect” (CTO/sysadmins)

“Enterprise Architect” (CIO/manager)

Page 27: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008

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.

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

Software Architecture

14

Page 28: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008

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.

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

Architectural Styles

15

Page 29: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008 16

Architectural Design Process

Page 30: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008 16

Architectural Design Process

think, think, think, think, think, think,

still thinking ...

Maybe there’s a template in Visio

Page 31: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008 16

Architectural Design Process

think, think, think, think, think, think,

still thinking ...

Maybe there’s a template in Visio

Look at what works in practice,

identify styles, and see how they can be combined to

obtain properties

Page 32: A little REST and Relaxation - Roy T. Fielding
Page 33: A little REST and Relaxation - Roy T. Fielding
Page 34: A little REST and Relaxation - Roy T. Fielding
Page 35: A little REST and Relaxation - Roy T. Fielding
Page 36: A little REST and Relaxation - Roy T. Fielding
Page 37: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008

A horizontal abstraction on architecture‣ that’s one too many abstractions for most folks‣ a way of naming architectural patterns in implementation

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

‣ and they are voluntary there are no architecture police, but there are many architecture critics

Constraints induce architectural properties‣ both desirable and undesirable properties

a.k.a., software qualities and design trade-offs

Architectural Styles

22

Page 38: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008

Styles of Architectural Design

Design at the right level of abstraction‣ Styles help architects communicate architecture‣ Architecture determines potential system properties‣ Implementation determines actual system properties

Sometimes known by other names‣ Systems Engineering (when it includes software)‣ Architectural Patterns (styles with common recipes)

Just because it’s called architecture ...

23

Page 39: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008 24

Agenda

Web retrospective

Understanding Architecture

What is REST?

Why REST?

REST at Day

Q & A

Page 40: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008

REST on a slide

85

the disadvantages) of the optional constraints when they are known to be in effect for some

realm of the overall system. For example, if all of the client software within an

organization is known to support Java applets [45], then services within that organization

can be constructed such that they gain the benefit of enhanced functionality via

downloadable Java classes. At the same time, however, the organization’s firewall may

prevent the transfer of Java applets from external sources, and thus to the rest of the Web

it will appear as if those clients do not support code-on-demand. An optional constraint

allows us to design an architecture that supports the desired behavior in the general case,

but with the understanding that it may be disabled within some contexts.

5.1.8 Style Derivation Summary

REST consists of a set of architectural constraints chosen for the properties they induce on

candidate architectures. Although each of these constraints can be considered in isolation,

describing them in terms of their derivation from common architectural styles makes it

Figure 5-9. REST Derivation by Style Constraints

RR CS LS VM U

CSS LCS COD$

C$SS LC$SS LCODC$SS REST

replicated

on-demand

separated

layered

mobile

uniform interface

stateless

shared

intermediate

processing

cacheable

extensible

simple

reusable

scalable

reliable

multi-org.

visible

programmable

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

25

Page 41: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008 26

WWW

Starting from a condition of no constraints…

How beautiful it is to do nothing,and then REST afterward. [Spanish Proverb]

Style = nil

Page 42: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008 27

Apply separation of concerns: Client-Server

improves UI portability simplifies server

enables multiple organizational domains

REST is not idleness, ...

Style += Client/Server

Page 43: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008 28

Constrain interaction to be stateless…

simplifies server

improves scalability

improves reliability

degrades efficiency

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

Style += Stateless

Page 44: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008 29

Add optional non-shared caching

reduces average latency

improves efficiency

improves scalability

degrades reliability

$

$

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

Style += Caching

Page 45: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008 30

Apply generality: uniform interface constraint

$

$

$

decouples implementation

improves visibility

degrades efficiency independent evolvability

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

Style += Uniform Interface

Page 46: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008 31

Apply info hiding: layered system constraints

shared caching legacy encapsulationadds latency

$

$

$

$

$

$

$

$

load balancingimproves scalabilitysimplifies clients

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

Style += Layered System

Page 47: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008 32

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

reduces visibilityimproves extensibilitysimplifies clients

$

$

$

$

$

$

$

$

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

REST Style

Page 48: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008

All important resources are identified by one (uniform) 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 throughthe exchange of representations

simple, visible, reusable, cacheable, and stateless communication

Exchanged as self-descriptive messages layered system, cacheable, and shared caches

REST Uniform Interface

33

Page 49: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008

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 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) embodiesthe current application state simple, visible, scalable, reliable, reusable, and cacheable

‣ All application state (not resource state) is kept on client

‣ All shared state (not session state) is kept on origin server

REST Uniform Interface

34

Page 50: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008

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 understandthe data format and relationship types

Hypertext Clarification

35

Page 51: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008

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 understandthe data format and relationship types

Hypertext Clarification

35

Hypertext = non-linear documents

Page 52: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008

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 understandthe data format and relationship types

Hypertext Clarification

35

Hypertext = non-linear documents

Hypertext = selectable GUI controls

Page 53: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008

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 understandthe data format and relationship types

Hypertext Clarification

35

Hypertext = non-linear documents

Hypertext = selectable GUI controls

Hypertext = data-guided controls

Page 54: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008 36

Agenda

Web retrospective

Understanding Architecture

What is REST?

Why REST?

REST at Day

Q & A

Page 55: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008

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

Benefits of REST-based Architecture

37

Page 56: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008

Simplifies‣ hypertext is standardized (fewer UIs)

Simplifies‣ identification is standardized (less communication)

Simplifies‣ exchange protocols are standardized (fewer integrations)

Simplifies‣ interactions are standardized (fewer semantics)

Simplifies‣ data formats are standardized (fewer translations)

Benefits of REST-based Architecture

38

Page 57: A little REST and Relaxation - Roy T. Fielding

Web retrospective

Understanding Architecture

What is REST?

Why REST?

Relaxation

REST at Day

Q & ARoy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008 39

Agenda

Page 58: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008

Meanwhile, in a parallel universe ...‣Monty Python’s Architect Sketch

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 flooras 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-argumentto multi-billions in advertising

Client: Excuse me. Did you say knives?Architect: Rotating knives, yes. [Monty Python’s Flying Circus]

Industry Practice

40

Page 59: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008

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

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

Industry Reaction?

41

Page 60: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008

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 an industry buzzword

Yikes!

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

Industry Acceptance

42

Page 61: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008

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 if we relax a given constraint?‣ Is it really the end of the world?‣ Should waka have its own style?

43

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

Page 62: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008

If the interface would 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 mashups must be defined per interface

services become tightly coupled

44

What if: Non-Uniform Interface ?

Page 63: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008

If the interface would 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 mashups must be defined per interface

services become tightly coupled

44

Why would anyone

seriously suggest this would

be good for the Web?

What if: Non-Uniform Interface ?

Page 64: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008

What if: Relax client/server ?

What if we let servers make requests?‣ lose implementation simplicity‣ potential for confusion with mixed-protocol intermediaries

unknown: does it impact session state?

Trade-offs aren’t as severe. Benefits?‣ peer-to-peer applications‣ shared cache mesh, triggered expiration

Can we compensate for the trade-offs?‣Make message syntax more uniform

Limit server-initiated requests to same-connection

Make response messages truly asynchronous

Make it possible to ignore requests45

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

Page 65: A little REST and Relaxation - Roy T. Fielding

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

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008

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‣ select proven architectural styles where appropriate‣ constrain behavior to induce properties‣ compensate for the design trade-offs

46

Page 66: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008 47

Agenda

Web retrospective

Understanding Architecture

What is REST?

Why REST?

Relaxation

REST at Day

Q & A

Page 67: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008 48

Vision

Everything is Content1

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

Page 68: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008 48

Vision

Everything is Content1

RESTAll important resourceshave uniform identifiers

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

Page 69: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008

Intermediary and Cache Friendly

49

Communiqué AuthorStandalone or AppServer

Centralized DataSourceRDBMS, NFS, SAN

WebserverDispatcher Cache

Users(Authors)

IntermediaryProxy Cache

Page 70: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008

Intermediary and Cache Friendly

49

Communiqué AuthorStandalone or AppServer

Centralized DataSourceRDBMS, NFS, SAN

WebserverDispatcher Cache

Users(Authors)

IntermediaryProxy Cache

RESTLayered Client/Server Design for Intermediate Processing

Page 71: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008 50

Sep-04-07

Standards

Java Content Repository

Web Frontend

Application EApplication DApplication CApplication BApplication A

JCR API (JSR 170 + JSR 283)

Accounting Marketing Legal HR R&D

Page 72: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008 50

Sep-04-07

Standards

Java Content Repository

Web Frontend

Application EApplication DApplication CApplication BApplication A

JCR API (JSR 170 + JSR 283)

Accounting Marketing Legal HR R&D

RESTAll resources

have uniform interface

Page 73: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008

Products

51

Page 74: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008

Products

51

Page 75: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008

Products

51

RESTHypertext is the

Engine of Application State

Page 76: A little REST and Relaxation - Roy T. Fielding

Roy T. Fielding. “A little REST and Relaxation.” ApacheCon Europe, 10 April 2008 52

Agenda

Web retrospective

Understanding Architecture

What is REST?

Why REST?

Relaxation

REST at Day

Q & A

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