200711  R E S T  Apache Con
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here

  • good presentation about rest...

    <b>[Comment posted from</b> http://wso2.org/library/presentations/autoscaling-axis2-web-services-amazon-ec2]
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
3,070
On Slideshare
3,037
From Embeds
33
Number of Embeds
1

Actions

Shares
Downloads
40
Comments
1
Likes
1

Embeds 33

http://dev.day.com 33

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. A little REST and Relaxation ApacheCon Roy T. Fielding, Ph.D. Chief Scientist, Day Software V.P., Apache HTTP Server http://roy.gbiv.com/talks/200711_REST_ApacheCon.pdf Leading the Wave of Open Source
  • 2. Between us, we cover all knowledge; he knows all that can be known and I know the REST. [Mark Twain] Representational State Transfer REST retrospective What is REST? Why REST? REST at Day Q&A Roy T. Fielding. “A little REST and Relaxation.” ApacheCon US, 15 November 2007 2
  • 3. Life's race will run, Life's work well done, Life's victory won, Now cometh REST. [Dr. Edward Hazen Parker] Why me? Oct 07 = 142,805,398 (6,072x) 23,517 Using XMosaic L E libwww-perl OD HTTP editor M CT JE Relative OB www.ics.uci.edu URLs P T HT AS NS wwwstat GI BE HTML ST 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] Roy T. Fielding. “A little REST and Relaxation.” ApacheCon US, 15 November 2007 3
  • 4. Absence of occupation is not REST, A mind quite vacant is a mind distress'd. [William Cowper] The Web Problem (circa 1994) 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? Roy T. Fielding. “A little REST and Relaxation.” ApacheCon US, 15 November 2007 4
  • 5. Everywhere I have sought REST and not found it, except sitting in a corner by myself with a little book. [Thomas Kempis] Software Architecture 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. Roy T. Fielding. “A little REST and Relaxation.” ApacheCon US, 15 November 2007 5
  • 6. 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. Roy T. Fielding. “A little REST and Relaxation.” ApacheCon US, 15 November 2007 6
  • 7. 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 ! Architectural patterns are styles with common recipes Just because it’s called architecture ... S MER TO CUS e ecom Os b I re C Whe Roy T. Fielding. “A little REST and Relaxation.” ApacheCon US, 15 November 2007 7
  • 8. Oh, some seek bread--no more--life's mere subsistence, ... What is the Web, really? Information Browsers Protocols Roy T. Fielding. “A little REST and Relaxation.” ApacheCon US, 15 November 2007 8
  • 9. ... And some seek wealth and ease--the common quest; ... Web Implementation Roy T. Fielding. “A little REST and Relaxation.” ApacheCon US, 15 November 2007 9
  • 10. ... And some seek fame, that hovers in the distance; ... Web Architecture One abstraction 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 Roy T. Fielding. “A little REST and Relaxation.” ApacheCon US, 15 November 2007 10
  • 11. ... 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 Roy T. Fielding. “A little REST and Relaxation.” ApacheCon US, 15 November 2007 11
  • 12. 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, ... Roy T. Fielding. “A little REST and Relaxation.” ApacheCon US, 15 November 2007 12
  • 13. Agenda REST retrospective What is REST? Why REST? REST at Day Q&A Roy T. Fielding. “A little REST and Relaxation.” ApacheCon US, 15 November 2007 13
  • 14. Sometimes the most urgent and vital thing you can possibly do is take a complete REST. [Ashleigh Brilliant] REST on a slide pro layered gra replicated mm uniform interface abl separated e RR CS LS VM U i nt pr erme oc d on-demand stateless es iat mobile simple sin e visible g $ CSS LCS COD reusable reliable shared extensible cacheable scalable multi- C$SS LC$SS org. LCODC$SS REST Figure 5-9. REST Derivation by Style Constraints the disadvantages) of the optional constraints when they are known to be in effect for some Roy T. Fielding. “A little REST and Relaxation.” ApacheCon US, 15 November 2007 14
  • 15. How beautiful it is to do nothing, and then REST afterward. [Spanish Proverb] Style = nil Starting from a condition of no constraints… WWW Roy T. Fielding. “A little REST and Relaxation.” ApacheCon US, 15 November 2007 15
  • 16. REST is not idleness, ... Style += Client/Server Apply separation of concerns: Client-Server improves UI portability simplifies server enables multiple organizational domains Roy T. Fielding. “A little REST and Relaxation.” ApacheCon US, 15 November 2007 16
  • 17. ... and to lie sometimes on the grass ... Style += Stateless Constrain interaction to be stateless… simplifies server degrades efficiency improves scalability improves reliability Roy T. Fielding. “A little REST and Relaxation.” ApacheCon US, 15 November 2007 17
  • 18. ... under the trees on a summer's day, ... Style += Caching Add optional non-shared caching $ $ reduces average latency degrades reliability improves efficiency improves scalability Roy T. Fielding. “A little REST and Relaxation.” ApacheCon US, 15 November 2007 18
  • 19. ... listening to the murmur of water, ... Style += Uniform Interface Apply generality: uniform interface constraint $ $ $ improves visibility degrades efficiency independent evolvability decouples implementation Roy T. Fielding. “A little REST and Relaxation.” ApacheCon US, 15 November 2007 19
  • 20. ... 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 Roy T. Fielding. “A little REST and Relaxation.” ApacheCon US, 15 November 2007 20
  • 21. ... 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 Roy T. Fielding. “A little REST and Relaxation.” ApacheCon US, 15 November 2007 21
  • 22. REST Uniform Interface 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 through the exchange of representations ! simple, visible, reusable, cacheable, and stateless communication Exchanged as self-descriptive messages ! layered system, cacheable, and shared caches Roy T. Fielding. “A little REST and Relaxation.” ApacheCon US, 15 November 2007 22
  • 23. 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 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 ! All application state (not resource state) is kept on client ! All shared state (not session state) is kept on origin server Roy T. Fielding. “A little REST and Relaxation.” ApacheCon US, 15 November 2007 23
  • 24. Hypertext Clarification Hypertext has many (old) definitions ! quot;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 pathwaysquot; [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 Roy T. Fielding. “A little REST and Relaxation.” ApacheCon US, 15 November 2007 24
  • 25. Hypertext Clarification Hypertext has many (old) definitions ! quot;By 'hypertext,' I mean non-sequential writing — text that branches and allows choices Hypertext = non-linear documents 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 pathwaysquot; [Theodor H. Nelson] ! “Hypertext is a computer-supported medium for information in which many interlinked Hypertext = selectable GUI controls 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 Hypertext = data-guided 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 Roy T. Fielding. “A little REST and Relaxation.” ApacheCon US, 15 November 2007 24
  • 26. Agenda REST retrospective What is REST? Why REST? REST at Day Q&A Roy T. Fielding. “A little REST and Relaxation.” ApacheCon US, 15 November 2007 25
  • 27. Benefits of REST-based Architecture 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 Roy T. Fielding. “A little REST and Relaxation.” ApacheCon US, 15 November 2007 26
  • 28. Benefits of REST-based Architecture 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) Roy T. Fielding. “A little REST and Relaxation.” ApacheCon US, 15 November 2007 27
  • 29. What if: Non-Uniform Interface 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 Roy T. Fielding. “A little REST and Relaxation.” ApacheCon US, 15 November 2007 28
  • 30. What if: Non-Uniform Interface se Bu If the interface would be resource-specific... rlonger sufficient for resource identification tw ! URI is no io us ou ob ly ! lose benefit of URI exchange (assumed GET) ld vbecomes segregated by resource type ! require resource description language su ! Information io an us gg yo ly ! walled into gardens (loss of power laws / pagerank) esservicesn ! important information must be replicated du e ! Intermediaries cannot encapsulate t mb suc ! unable to anticipate resource behavior ide h a ! too complex to cache based on method semantics ! No more serendipity a? n ! mashups must be defined per interface ! services become tightly coupled Roy T. Fielding. “A little REST and Relaxation.” ApacheCon US, 15 November 2007 28
  • 31. 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 Roy T. Fielding. “A little REST and Relaxation.” ApacheCon US, 15 November 2007 29
  • 32. 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 Roy T. Fielding. “A little REST and Relaxation.” ApacheCon US, 15 November 2007 30
  • 33. 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 an industry buzzword Yikes! Roy T. Fielding. “A little REST and Relaxation.” ApacheCon US, 15 November 2007 31
  • 34. Agenda REST retrospective What is REST? Why REST? REST at Day Q&A Roy T. Fielding. “A little REST and Relaxation.” ApacheCon US, 15 November 2007 32
  • 35. REST when you're weary. Refresh and renew yourself, your body, your mind, your spirit. Then get back to work. [Ralph Marston] Vision 1 Everything is Content Roy T. Fielding. “A little REST and Relaxation.” ApacheCon US, 15 November 2007 33
  • 36. REST when you're weary. Refresh and renew yourself, your body, your mind, your spirit. Then get back to work. [Ralph Marston] Vision REST All important resources have uniform identifiers 1 Everything is Content Roy T. Fielding. “A little REST and Relaxation.” ApacheCon US, 15 November 2007 33
  • 37. Intermediary and Cache Friendly Intermediary Proxy Cache Users Webserver Communiqué Author (Authors) Dispatcher Cache Standalone or AppServer Centralized DataSource RDBMS, NFS, SAN Roy T. Fielding. “A little REST and Relaxation.” ApacheCon US, 15 November 2007 34
  • 38. Intermediary and Cache Friendly REST Layered Client/Server Design Intermediary Proxy Cache for Intermediate Processing Users Webserver Communiqué Author (Authors) Dispatcher Cache Standalone or AppServer Centralized DataSource RDBMS, NFS, SAN Roy T. Fielding. “A little REST and Relaxation.” ApacheCon US, 15 November 2007 34
  • 39. Sep-04-07 Standards Accounting Marketing Legal HR R&D Web Frontend Application A Application B Application C Application D Application E JSR-170 API Java Content Repository Roy T. Fielding. “A little REST and Relaxation.” ApacheCon US, 15 November 2007 35
  • 40. Sep-04-07 Standards REST All resources Accounting Marketing Legal HR R&D have uniform interface Web Frontend Application A Application B Application C Application D Application E JSR-170 API Java Content Repository Roy T. Fielding. “A little REST and Relaxation.” ApacheCon US, 15 November 2007 35
  • 41. Products Roy T. Fielding. “A little REST and Relaxation.” ApacheCon US, 15 November 2007 36
  • 42. Products REST Hypertext is the Engine of Application State Roy T. Fielding. “A little REST and Relaxation.” ApacheCon US, 15 November 2007 36
  • 43. Let the weary at length possess quiet REST. [Lucius Annaeus Seneca] Agenda REST retrospective What is REST? Why REST? REST at Day Q&A Roy T. Fielding. “A little REST and Relaxation.” ApacheCon US, 15 November 2007 37