UNIVERSITY OF CALIFORNIA IRVINE Architectural Styles and the design of Network-based Software Architectures DISSERTATION submitted in partial satisfaction of the requirements for the degree of DOCTOR OF PHILOSOPHY in Information and Computer Science b Roy Thomas Fielding Dissertation committee Professor Richard n. Taylor, Chair Professor mark s. ackerman Professor david s. rosenblum 2000
UNIVERSITY OF CALIFORNIA, IRVINE Architectural Styles and the Design of Network-based Software Architectures DISSERTATION submitted in partial satisfaction of the requirements for the degree of DOCTOR OF PHILOSOPHY in Information and Computer Science by Roy Thomas Fielding Dissertation Committee: Professor Richard N. Taylor, Chair Professor Mark S. Ackerman Professor David S. Rosenblum 2000
o Roy Thomas Fielding, 2000. All rights reserved
© Roy Thomas Fielding, 2000. All rights reserved
The dissertation of Roy Thomas Fielding is approved and is acceptable in quality and form for publication on microfilm Committee chair University of California, Irvine 2000
ii The dissertation of Roy Thomas Fielding is approved and is acceptable in quality and form for publication on microfilm: ____________________________________ ____________________________________ ____________________________________ Committee Chair University of California, Irvine 2000
DEDICATION Pete and Kathleen Fielding, who made all of this possible, for their endless encouragement and patience And also to Tim Berners -Lee for making the World wide web an open, collaborative project What is life? It is the flash of a firefly in the night It is the breath of a buffalo in the wintertime. It is the little shadow which runs across the grass and loses itself in the sunset. Crowfoot's last words(1890), Blackfoot warrior and orator. Almost everybody feels at peace with nature: listening to the ocean waves against the shore, by a still lake, in a field of grass, on a windblown heath. One day, when we have learned the timeless way igain, we shall feel the same about our towns, and we shall feel as much at peace in them, as we do today walking by the ocean, or of a Christopher Alexander, The Timeless Way of Building(1979)
iii DEDICATION To my parents, Pete and Kathleen Fielding, who made all of this possible, for their endless encouragement and patience. And also to Tim Berners-Lee, for making the World Wide Web an open, collaborative project. What is life? It is the flash of a firefly in the night. It is the breath of a buffalo in the wintertime. It is the little shadow which runs across the grass and loses itself in the sunset. — Crowfoot's last words (1890), Blackfoot warrior and orator. Almost everybody feels at peace with nature: listening to the ocean waves against the shore, by a still lake, in a field of grass, on a windblown heath. One day, when we have learned the timeless way again, we shall feel the same about our towns, and we shall feel as much at peace in them, as we do today walking by the ocean, or stretched out in the long grass of a meadow. — Christopher Alexander, The Timeless Way of Building (1979)
TABLE OF CONTENTS LIST OF FIGURES LIST OF TABLES ACKNOWLEDGMENTS 111 CURRICULUM VITAE ABSTRACT OF THE DISSERTATION INTRODUCTION CHAPTER 1: Software Architecture 1.1 Run-time abstraction 1. 2 Elements 1.3 Configurations.................2 1. 4 Properties 12 1.5 Styles 13 1.6 Patterns and Pattern Languages 16 1.7 Views 1 8 Related Work 1.9 Summary CHAPTER 2: Network-based Application Architectures 2.1 Scope 2.2 Evaluating the Design of Application Architectures 2.3 Architectural Properties of Key Interest 24 Summary……
iv TABLE OF CONTENTS Page LIST OF FIGURES .......................................................................................vi LIST OF TABLES........................................................................................vii ACKNOWLEDGMENTS ...........................................................................viii CURRICULUM VITAE.................................................................................x ABSTRACT OF THE DISSERTATION ....................................................xvi INTRODUCTION ..........................................................................................1 CHAPTER 1: Software Architecture ..............................................................5 1.1 Run-time Abstraction............................................................................................5 1.2 Elements................................................................................................................7 1.3 Configurations ....................................................................................................12 1.4 Properties ............................................................................................................12 1.5 Styles...................................................................................................................13 1.6 Patterns and Pattern Languages ..........................................................................16 1.7 Views ..................................................................................................................17 1.8 Related Work ......................................................................................................18 1.9 Summary.............................................................................................................23 CHAPTER 2: Network-based Application Architectures.............................24 2.1 Scope...................................................................................................................24 2.2 Evaluating the Design of Application Architectures ..........................................26 2.3 Architectural Properties of Key Interest .............................................................28 2.4 Summary.............................................................................................................37
CHAPTER 3: Network-based Architectural Styles 3.1 Classification Methodology 3.2 Data-flow Styles 3.3 Replication Styles 3.4 Hierarchical Styles 45 3.5 Mobile Code Styles 3.6 Peer-to-Peer Styles 3.7 Limitations 3.8 Related Work 3.9 Summary CHAPTER 4: Designing the web architecture: Problems and insights .....66 4.1 WWw Application Domain Requirements 4.2 Problem 4.3 Approach 4.4 Summary…… CHAPTER 5: Representational State Transfer (RESt) 76 5.1 Deriving REST 5.2 REST Architectural elements 5.3 REST Architectural Views 667 5.4 Related Work 5.5 Summary CHAPTER 6: Experience and Evaluation 107 6.1 Standardizing the web 62 REST Applied to URI…… 6.3RestappLiedtohttp .116 6. 4 Technology Transfer 134 6.5 Architectural Lessons 6.6 Summary. CONCLUSIONS 148 REFERENCES 152
v CHAPTER 3: Network-based Architectural Styles ......................................38 3.1 Classification Methodology................................................................................38 3.2 Data-flow Styles .................................................................................................41 3.3 Replication Styles ...............................................................................................43 3.4 Hierarchical Styles..............................................................................................45 3.5 Mobile Code Styles.............................................................................................50 3.6 Peer-to-Peer Styles..............................................................................................55 3.7 Limitations ..........................................................................................................59 3.8 Related Work ......................................................................................................60 3.9 Summary.............................................................................................................64 CHAPTER 4: Designing the Web Architecture: Problems and Insights......66 4.1 WWW Application Domain Requirements ........................................................66 4.2 Problem...............................................................................................................71 4.3 Approach.............................................................................................................72 4.4 Summary.............................................................................................................75 CHAPTER 5: Representational State Transfer (REST)................................76 5.1 Deriving REST ...................................................................................................76 5.2 REST Architectural Elements.............................................................................86 5.3 REST Architectural Views .................................................................................97 5.4 Related Work ....................................................................................................103 5.5 Summary...........................................................................................................105 CHAPTER 6: Experience and Evaluation ..................................................107 6.1 Standardizing the Web......................................................................................107 6.2 REST Applied to URI.......................................................................................109 6.3 REST Applied to HTTP....................................................................................116 6.4 Technology Transfer.........................................................................................134 6.5 Architectural Lessons .......................................................................................138 6.6 Summary...........................................................................................................147 CONCLUSIONS.........................................................................................148 REFERENCES............................................................................................152
LIST OF FIGURES Page Figure 5-1. Null style Figure 5-2. Client-Server Figure 5-3. Client-Stateless-Server igure 5-4. Client-Cache-Stateless-Server igure 5-5. Early WWw Architecture Diagram 81 Figure 5-6. Uniform-Client-Cache-Stateless-Server Figure 5-7. Uniform-Layered-Client-Cache-Stateless-Server figure 5-8. REST Figure 5-9. REST Derivation by Style Constraints 85 Figure 5-10. Process View of a rest-based Architecture
vi LIST OF FIGURES Page Figure 5-1. Null Style 77 Figure 5-2. Client-Server 78 Figure 5-3. Client-Stateless-Server 78 Figure 5-4. Client-Cache-Stateless-Server 80 Figure 5-5. Early WWW Architecture Diagram 81 Figure 5-6. Uniform-Client-Cache-Stateless-Server 82 Figure 5-7. Uniform-Layered-Client-Cache-Stateless-Server 83 Figure 5-8. REST 84 Figure 5-9. REST Derivation by Style Constraints 85 Figure 5-10. Process View of a REST-based Architecture 98
LIST OF TABLES Page Table 3-1. Evaluation of Data-flow Styles for Network-based hypermedia 41 Table 3-2. Evaluation of Replication Styles for Network-based Hypermedia Table 3-3. Evaluation of hierarchical Styles for Network-based hypermedia 45 Table 3-4. Evaluation of Mobile Code Styles for Network-based Hypermedia Table 3-5. Evaluation of Peer-to-Peer Styles for Network-based Hypermedia 55 Table 3-6. Evaluation Summary Table 5-1. REST Data elements Table 5-2. rest Connectors Table 5-3. REST Components
vii LIST OF TABLES Page Table 3-1. Evaluation of Data-flow Styles for Network-based Hypermedia 41 Table 3-2. Evaluation of Replication Styles for Network-based Hypermedia 43 Table 3-3. Evaluation of Hierarchical Styles for Network-based Hypermedia 45 Table 3-4. Evaluation of Mobile Code Styles for Network-based Hypermedia 51 Table 3-5. Evaluation of Peer-to-Peer Styles for Network-based Hypermedia 55 Table 3-6. Evaluation Summary 65 Table 5-1. REST Data Elements 88 Table 5-2. REST Connectors 93 Table 5-3. REST Components 96
ACKNOWLEDGMENTS It has been a great pleasure working with the faculty, staff, and students at the University of California, Irvine, during my tenure as a doctoral student. This work would never have been possible if it were not for the freedom I was given to pursue my own research interests, thanks in large part to the kindness and considerable mentoring provided by Dick Taylor, my long-time advisor and committee chair. Mark Ackerman also deserves a great deal of thanks, for it was his class on distributed information services in 1993 that introduced me to the Web developer community and led to all of the design work described in this dissertation Likewise. it was david rosenblum's work on Internet-scale software architectures that convinced me to think of my own research in terms of architecture, rather than simply hypermedia or application-layer protocol design The Web's architectural style was developed iteratively over a six year period, but primarily during the first six months of 1995. It has been influenced by countless discussions with researchers at uCl, staff at the world wide web Consortium(w3C), and engineerswithinthehttpanduriworkinggroupsoftheInternetEngineering Taskforce(ETF). I would particularly like to thank Tim Berners-Lee, Henrik Frystyk Nielsen, Dan Connolly, Dave Raggett, Rohit Khare, Jim Whitehead, Larry Masinter, and Dan Laliberte for many thoughtful conversations regarding the nature and goals of the www architecture. Id also like to thank Ken Anderson for his insight into the open hypertext community and for trailblazing the path for hypermedia research at UCI. Thanks also to my fellow architecture researchers at UCl, all of whom finished before me including Peyman Oreizy, Neno Medvidovic, Jason Robbins, and David Hilbert The Web architecture is based on the collaborative work of dozens of volunteer software developers, many of whom rarely receive the credit they deserve for pioneering the Web ecame a commercial phenomenon. In addition to the w3c folks above, recognition should go to the server developers that enabled much of the Web's rapid growth in 1993-1994(more so, I believe, than did the browsers). That includes RobMccool(nCsahttpd),AriLuotonen(cernhttpd/proxy),andTonySanders (Plexus). Thanks also to"Mr Content", Kevin Hughes, for being the first to implement most of the interesting ways to show information on the Web beyond hypertext. The early client developers also deserve thanks: Nicola Pellow (line-mode), Pei Wei (viola), Tony Johnson(Midas), Lou Montulli (Lynx), Bill Perry (W3), and Marc Andreessen and Eric Bina(Mosaic for X). Finally, my personal thanks go to my libwww-perl collaborators, Oscar Nierstrasz, Martijn Koster, and Gisle Aas. Cheers!
viii ACKNOWLEDGMENTS It has been a great pleasure working with the faculty, staff, and students at the University of California, Irvine, during my tenure as a doctoral student. This work would never have been possible if it were not for the freedom I was given to pursue my own research interests, thanks in large part to the kindness and considerable mentoring provided by Dick Taylor, my long-time advisor and committee chair. Mark Ackerman also deserves a great deal of thanks, for it was his class on distributed information services in 1993 that introduced me to the Web developer community and led to all of the design work described in this dissertation. Likewise, it was David Rosenblum’s work on Internet-scale software architectures that convinced me to think of my own research in terms of architecture, rather than simply hypermedia or application-layer protocol design. The Web’s architectural style was developed iteratively over a six year period, but primarily during the first six months of 1995. It has been influenced by countless discussions with researchers at UCI, staff at the World Wide Web Consortium (W3C), and engineers within the HTTP and URI working groups of the Internet Engineering Taskforce (IETF). I would particularly like to thank Tim Berners-Lee, Henrik Frystyk Nielsen, Dan Connolly, Dave Raggett, Rohit Khare, Jim Whitehead, Larry Masinter, and Dan LaLiberte for many thoughtful conversations regarding the nature and goals of the WWW architecture. I’d also like to thank Ken Anderson for his insight into the open hypertext community and for trailblazing the path for hypermedia research at UCI. Thanks also to my fellow architecture researchers at UCI, all of whom finished before me, including Peyman Oreizy, Neno Medvidovic, Jason Robbins, and David Hilbert. The Web architecture is based on the collaborative work of dozens of volunteer software developers, many of whom rarely receive the credit they deserve for pioneering the Web before it became a commercial phenomenon. In addition to the W3C folks above, recognition should go to the server developers that enabled much of the Web’s rapid growth in 1993-1994 (more so, I believe, than did the browsers). That includes Rob McCool (NCSA httpd), Ari Luotonen (CERN httpd/proxy), and Tony Sanders (Plexus). Thanks also to “Mr. Content”, Kevin Hughes, for being the first to implement most of the interesting ways to show information on the Web beyond hypertext. The early client developers also deserve thanks: Nicola Pellow (line-mode), Pei Wei (Viola), Tony Johnson (Midas), Lou Montulli (Lynx), Bill Perry (W3), and Marc Andreessen and Eric Bina (Mosaic for X). Finally, my personal thanks go to my libwww-perl collaborators, Oscar Nierstrasz, Martijn Koster, and Gisle Aas. Cheers!
The modern Web architecture is still defined more by the work of individual volunteer than by any single company. Chief among them are the members of the Apache Software Foundation. Special thanks go to robert S. Thau for the incredibly robust Shambhala design that led to Apache 1.0, as well as ior man discussions on desirable(and undesirable)Web extensions, to Dean Gaudet for teaching me more about detailed system performance evaluation than I thought I needed to know, and to Alexei Kosut for being the firsttoimplementmostofhttp:/l.1inapacheAdditionalthankstotherestofthe Apache Group founders, including Brian Behlendorf, Rob Hartill, David Robinson Cliff Skolnick, Randy Terbush, and Andrew Wilson, for building a community that we can all be proud of and changing the world one more time Id also like to thank all of the people at bUilt who have made it such a great place to work. Particular thanks go to the four technical founders- Joe Lindsay, Phil Lindsay, Jim Hayes, and Joe Manna- for creating(and defending) a culture that makes engineering fun. Thanks also to Mike Dewey, Jeff Lenardson, Charlie Bunten, and Linda Dailing, for being the glue that holds us all togethe Ving fun. And special thanks to Ted Lavoie, for making it possible to earn money while hay Thanks and good luck go out to the team at Endeavors Technology, including Greg Bolcer, Clay Cover, Art Hitomi, and Peter Kammer. Finally, Id like to thank my three muses-Laura, Nikki, and Ling-for their inspiration while writing this dissertatio In large part, my dissertation research has been sponsored by the Defense Advanced Research Projects Agency, and Airforce Research Laboratory, Air Force Materiel Command USAF, under agreement number F30602-97-2-0021. The u.s. Government is authorized to reproduce and distribute reprints for Governmental purposes notwithstanding any copyright annotation thereon. The views and conclusions contained herein are those of the authors and should not be interpreted as necessarily representing the official policies or endorsements, either expressed or implied, of the Defense Advanced Research Projects Agency, Airforce Research Laboratory or the U.s Government
ix The modern Web architecture is still defined more by the work of individual volunteers than by any single company. Chief among them are the members of the Apache Software Foundation. Special thanks go to Robert S. Thau for the incredibly robust Shambhala design that led to Apache 1.0, as well as for many discussions on desirable (and undesirable) Web extensions, to Dean Gaudet for teaching me more about detailed system performance evaluation than I thought I needed to know, and to Alexei Kosut for being the first to implement most of HTTP/1.1 in Apache. Additional thanks to the rest of the Apache Group founders, including Brian Behlendorf, Rob Hartill, David Robinson, Cliff Skolnick, Randy Terbush, and Andrew Wilson, for building a community that we can all be proud of and changing the world one more time. I’d also like to thank all of the people at eBuilt who have made it such a great place to work. Particular thanks go to the four technical founders — Joe Lindsay, Phil Lindsay, Jim Hayes, and Joe Manna — for creating (and defending) a culture that makes engineering fun. Thanks also to Mike Dewey, Jeff Lenardson, Charlie Bunten, and Ted Lavoie, for making it possible to earn money while having fun. And special thanks to Linda Dailing, for being the glue that holds us all together. Thanks and good luck go out to the team at Endeavors Technology, including Greg Bolcer, Clay Cover, Art Hitomi, and Peter Kammer. Finally, I’d like to thank my three muses—Laura, Nikki, and Ling—for their inspiration while writing this dissertation. In large part, my dissertation research has been sponsored by the Defense Advanced Research Projects Agency, and Airforce Research Laboratory, Air Force Materiel Command, USAF, under agreement number F30602-97-2-0021. The U.S. Government is authorized to reproduce and distribute reprints for Governmental purposes notwithstanding any copyright annotation thereon. The views and conclusions contained herein are those of the authors and should not be interpreted as necessarily representing the official policies or endorsements, either expressed or implied, of the Defense Advanced Research Projects Agency, Airforce Research Laboratory or the U.S. Government