«Computational REST: A New Model for Decentralized, Internet-Scale Applications DISSERTATION submitted in partial satisfaction of the requirements for ...»
UNIVERSITY OF CALIFORNIA,
Computational REST: A New Model for Decentralized, Internet-Scale Applications
submitted in partial satisfaction of the requirements
for the degree of
DOCTOR OF PHILOSOPHY
in Information and Computer Science
Justin Ryan Erenkrantz
Professor Richard N. Taylor, Chair Professor Debra J. Richardson Professor Walt Scacchi Portions of Chapters 2,3,4,5 adapted from “From Representations to Computations: The Evolution of Web Architectures,” in Proceedings of the 6th Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering (September, 2007) © ACM, 2007.
http://doi.acm.org/10.1145/1287624.1287660 Used with permission under Section 2.5 “Rights Retained by Authors” of the ACM Copyright Policy All other content © 2009 Justin Ryan Erenkrantz ii DEDICATION to Mom and Dad who always gave their unwavering love even when their son chose the hard road iii
TABLE OF CONTENTSPage LIST OF FIGURES vi LIST OF TABLES viii ACKNOWLEDGEMENTS ix CURRICULUM VITAE xii
OF THE DISSERTATION xvINTRODUCTION 1 CHAPTER 1: Architectural Styles of Extensible RESTful Applications 8 Software Architecture and Frameworks 8 Software Architecture in the World Wide Web 9 Representational State Transfer 10 Selecting Appropriate REST-based Applications 14 Framework Constraint Prism 15 REST Constraints 18 Architectural Characteristic Matrix 19 Origin Servers 19 User Agents 40
their lasting influences, I would just be a sliver of who I am today and will be tomorrow.
Thanks to Tim for helping me to discover my true calling; thanks to Dan and Jerry for showing me that I could make a living doing this computer stuff; thanks to Andy for expanding my horizons.
Thanks to Steve and Domingos for introducing me to the joys of teaching.
Thanks to Roy for introducing me to the incredible world of open source and academia. Thanks to Aaron who was my fellow traveler in the early days of our collective Apache experiences. The rest of the gang at eBuilt - Josh, Phil, Mark, Seth, Steve, Neil, Bill, Joe, Eli - you set the standard by which I've measured all other teams.
Thanks to Greg, Ryan, Roy, Jeff, Jim, Bill, Sander, Cliff, Aaron, Brian, Manoj, Paul, Colm, Rudiger and all of the other Apache HTTP Server developers. There is simply no better collection of developers that will ever assemble together on a project.
Thanks to Aaron, Bill, Ben, Bertrand, Brian, Brett, Dirk, Doug, Geir, Greg, Hen, Henning, Jim, Ken, Sam, Shane, Stefano, Ken, Ben - you've made serving on Apache's Board of Directors a blast.
Thanks to Greg for so many late nights of conversation and being the better half of Serf.
Thanks to Karl, Jim, Fitz, Ben, C-Mike, Greg, Brane, Sander, Garrett, Hyrum, and the other Subversion developers. We set out to replace CVS and we've done so much more.
Thanks to Martijn, Sander, Garrett, Jens, Paul, Ben, Pier, Allan, Andy, Thom,
Let's do it again sometime.
Thanks to Ken, Neno, Peyman, Jim, Roy, and Rohit for setting the bar so ridiculously high before I even entered the halls of academia. Thanks to Eric, Girish, Jie, and John for the laughs and showing me how to survive the world of being a graduate student. Thanks to Scott for getting me through those early dog days when we were still trying to find our way. Thanks to Joe for being a constant source of sunshine through the years.
Thanks to Yuzo for always being a friend and a source of wisdom. Thanks to Kari who has probably forgotten that she helped out with my very first project in this group years ago. Thanks to Debi for all that you do behind the scenes. Thanks to Kiana, Nancy, Steve, Laura, Jessica and all of the folks who have kept ISR humming over the years.
Thanks to Debra who has shown me how to juggle a million tasks and keep everyone content. Thanks to Walt for helping me to take a step back and see the larger picture when I just couldn't find it.
Thanks to Michael - if our paths didn't cross, this dissertation and research wouldn't be half as interesting. All of our passionate discussions and conversations have resulted in something far better than either one of us could ever have dreamed.
Thanks to Dick for always knowing what buttons to push and when to push them.
In all my travels, I have never found anyone else who trusts another (let alone graduate students!) enough to let them find their own way even if we question what everyone else (including ourselves!) takes for granted. You have set an example that I will always strive to live up to every day.
the National Science Foundation under Grant Numbers 0438996 and 0820222. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author and do not necessarily reflect the views of the National Science Foundation.
Professional Experience 1/2007- Senior Software Engineer, Joost, Leiden, The Netherlands 1/2006-1/2007 Engineering Intern, Google, Mountain View, California 9/2002-9/2009 Graduate Student Researcher, Institute for Software Research, University of California Irvine 4/2000-3/2002 Junior Software Engineer, eBuilt, Irvine, California 7/1998-9/1999 Seasonal Associate, Ingram Micro, Santa Ana, California 7/1996-5/1998 C++ Programmer, Renaissance Engineering, Dayton, Ohio Publications Refereed Journal Articles  "Architecting trust-enabled peer-to-peer file-sharing applications", by Girish Suryanarayana, Mamadou H. Diallo, Justin R. Erenkrantz, Richard N. Taylor.
ACM Crossroads, vol. 12, issue 4, August 2006.
 "An Architectural Approach for Decentralized Trust Management", by Girish Suryanarayana, Justin R. Erenkrantz, Richard N. Taylor. IEEE Internet Computing, vol. 9, no. 6, pp. 16-23, November/December, 2005.
Refereed Conference and Workshop Publications  "From Representations to Computations: The Evolution of Web Architectures", by Justin R. Erenkrantz, Michael Gorlick, Girish Suryanarayana, Richard N. Taylor.
xii Proceedings of the 6th Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering, pp. 255-264, Dubrovnik, Croatia, September 2007.
 "Architectural support for trust models in decentralized applications", by Girish Suryanarayana, Mamadou H. Diallo, Justin R. Erenkrantz, Richard N. Taylor.
Proceedings of the 28th International Conference on Software Engineering, pp.
52-61, Shanghai, China, May 2006.
 "ArchEvol: Versioning Architectural-Implementation Relationships", by Eugen Nistor, Justin R. Erenkrantz, Scott A. Hendrickson, André van der Hoek.
Proceedings of the 12th International Workshop on Software Configuration Management, Lisbon, Portugal, September 5-6, 2005.
 "PACE: An Architectural Style for Trust Management in Decentralized Applications", by Girish Suryanarayana, Justin R. Erenkrantz, Scott A.
Hendrickson, Richard N. Taylor. Proceedings of the Fourth Working IEEE/IFIP Conference on Software Architecture, Oslo, Norway, June, 2004.
 "Supporting Distributed and Decentralized Projects: Drawing Lessons from the Open Source Community", by Justin R. Erenkrantz, Richard N. Taylor.
Proceedings of the 1st Workshop on Open Source in an Industrial Context, Anaheim, California, October, 2003.
 "Release Management Within Open Source Projects", by Justin R. Erenkrantz.
Proceedings of the 3rd Workshop on Open Source Software Engineering, Portland, Oregon, May 2003.
 "Beyond Code: Content Management and the Open Source Development Portal", by T.J. Halloran, William L. Scherlis, Justin R. Erenkrantz. Proceedings of the 3rd Workshop on Open Source Software Engineering, Portland, Oregon, May 2003.
Invited Publications  "Rethinking Web Services from First Principles", by Justin R. Erenkrantz, Michael Gorlick, Richard N. Taylor. Proceedings of the 2nd International Conference on Design Science Research in Information Systems and Technology, Extended Abstract, Pasadena, California, May 2007.
Non-Refereed Publications  "Architectural Styles of Extensible REST-based Applications", by Justin R.
Erenkrantz. Institute for Software Research, University of California, Irvine, Technical Report UCI-ISR-06-12, August 2006.
 "Web Services: SOAP, UDDI, and Semantic Web", by Justin R. Erenkrantz.
Institute for Software Research, University of California, Irvine, Technical Report UCI-ISR-04-3, May 2004.
xiii Service Program Committee, HyperText 2004 Program Committee, WoPDaSD 2008 Program Committee, OSS 2009 Webmaster, ICSE 2006 Internet Chair, ICSE 2011 Awards and Honors Member, Phi Beta Kappa Society Member, Golden Key National Honor Society UC Irvine Outstanding Service by an Undergraduate UC Irvine Campuswide Honors Program Julian Feldman Scholarship Recipient Dan and Jean Aldrich Scholarship Nominee Member, National Honor Society Associations and Activities Member, Association for Computing Machinery (1998-present) Member, IEEE Computer Society (2005-present) Member, The Apache Software Foundation Director, The Apache Software Foundation (2005-present) President, The Apache Software Foundation (2007-present) Treasurer, The Apache Software Foundation (2005-2007) Vice-President, ACM, UC Irvine student chapter (2000-2001) Contestant, ACM Programming Contest, UC Irvine student chapter (1998-2000) Member, Undergraduate Computing Facility (1998-2002) Representative, Associated Graduate Students, UC Irvine (2003-2004)
REpresentational State Transfer (REST) guided the creation and expansion of the modern web. The reformations introduced with REST permitted the web to achieve its goal as an internet-scale distributed hypermedia system. Yet, the web has now seen the introduction of a vast sea of shared and interdependent services. Despite the expressive power of REST, these new services have not consistently realized the anticipated benefits from REST.
In order to better understand the unwritten axioms necessary to realize these anticipated benefits, we survey the history and evolution of the web's infrastructure - including Apache HTTP Server, Firefox, and Squid. We also recount our experiences developing such systems and the challenges we faced due to the lack of thorough design guidance.
We then critically examine these new services from the vast sea - including Serviceoriented architectures, RESTful Web Services, and AJAX - to glean previously undocumented lessons about how these services are constructed and why they do not consistently realize the benefits expected from REST.
Based on this, this dissertation presents a new architectural style called Computational
fundamental measure of exchange to a model where computational exchange is the primary mechanism. This crucial observation keys a number of new axioms and constraints that provide new ways of thinking about the construction of web applications.
We show that this new style pinpoints, in many cases, the root cause of the apparent dissonance between style and implementation in critical portions of the web's infrastructure. CREST also explains emerging web architectures (such as mashups) and points to novel computational structure. Furthermore, CREST provides the necessary design guidance to create new web applications which have not been seen before. These applications are characterized by the presence of recombinant services which rely upon fine-grained computational exchange to permit rapid evolution.
clear set of principles to guide the decisions being made by developers and architects. In those early days, the web evolved chaotically and, to the extent there was any guidance at all, it was weakly focused on client/server communications, the mechanics of content transfer, and user interfaces. However, within a space of just a few years, exponential growth and numerous design flaws threatened the future of the early Web - leading to the introduction of the Representational State Transfer architectural style (REST) [Fielding, 2000].
As a software architectural style, REST introduces a set of principal design decisions that ideally governs the Web. In return for following these architectural decisions, certain properties are expected. The introduction of REST, by way of the HTTP/1.1 protocol, restored comparative order to the Web by articulating the necessary axioms that must be present to permit the continued growth of the web. Yet, as we illustrate in this dissertation, dissonance with any architectural style inevitably occurs in the real-world as certain design decisions dictated by the style are violated either knowingly or unknowingly. The impact of the violations may range from relatively minor to severe. In the presence of such violations, it is rational to expect that specific advantages that should be derived from the style can be lost.
It is our view that the software designer’s proper role is to be able to articulate the drawbacks of such dissonance and to be able to knowingly choose which tradeoffs are acceptable against the ideal set forth by the style. This dissertation is our attempt to catalog the continued evolution of the web with two aims: identifying how real systems have strayed from REST and articulating what specific tradeoffs were made along the way even if the original designers did not consciously realize which tradeoffs were being made. From these observations, we are able to identify a recurring theme in the dissonance: REST was primarily focused on the exchange of content and does not provide suitable guidance to designers participating in today’s Web. Again, this is unsurprising as REST was intended to serve as an architectural style for distributed hypermedia systems. However, as we discuss throughout this thesis, today’s Web has evolved far beyond the mere exchange of content. We believe that this calls for a new architectural style which better addresses the exchanges we see and shall continue to see on the Web.