The World Wide Web evolved from humble beginnings to become a cornerstone of almost all facets of modern society, embracing activities as diverse as finance, communications, entertainment, and commerce. ISR alumni have made fundamental contributions to the design and evolution of the Web, including Roy Fielding’s definitions of the Representational State Transfer (REST) architectural style and the HTTP/1.1 protocol, ISR Prof. Jim Whitehead’s WebDAV distributed authoring mechanisms, and Rohit Khare’s ARRESTED family of REST-derived styles, as well as Fielding’s work on the Apache Web Server and Justin Erenkrantz’s work on the Subversion configuration management system.
As Web technologies evolved, however, innovations like Ajax, mashups, and Web Services pushed web applications beyond the REST constraints, which provided theoretical and practical guidance to system developers. ISR alumni Erenkrantz and Girish Suryanarayana, and Ph.D. student Michael Gorlick (R. Taylor, advisor), responded to this disparity by articulating a set of theoretical principles called Computational REST (CREST), which explained and extended the emerging importance of computational activity and transfer — as opposed to content exchange — between clients and services.
Through initial exploratory prototyping, it became clear that CREST was not merely an explanatory mechanism for newer Web applications, but a distinct architectural style suitable for novel resilient, adaptive and decentralized systems. Last summer, Erenkrantz and Gorlick, along with ISR Ph.D. students Yongjie Zheng and Alegria Baquero (R. Taylor, advisor to both), built a dynamic, adaptive feed reader, in which lightweight data processing widgets can be graphically reconfigured on-the-fly to perform collaborative data extraction and display on news feeds (Figure 1). ISR Director Richard N. Taylor presented the application as part of his ESEC/FSE 2009 keynote to great reception, and Erenkrantz graduated with his dissertation, “Computational REST: A New Model for Decentralized, Internet-Scale Applications” in September, 2009.
Since then, Gorlick, Baquero, and Ph.D. student Kyle Strasser (R. Taylor, advisor) have been at work exploring the implications of the CREST principles and building a new generation of infrastructure to support more sophisticated forms of computational exchange. They are also building exploratory applications that will allow investigation of common design patterns, methods for system design, notations to describe CREST systems, and the need for further infrastructure features and tool support. Current exploratory projects include collaborative video-tagging and real-time video editing, a platform for recasting service-oriented architectures and Web Services in e-commerce, and situational awareness services.
Whereas current Web architecture uses URLs to locate information resources – represented by content like text, images, video, and music – CREST extends URLs to locate active computations and their execution environments. Computations shape and mold their environments by adding features provided by other peers through code mobility, and by instantiating new, recursively embedded execution environments. Active computations may migrate from one computational locus to another seamlessly, resuming in place without losing track of their context and state.
The current model allows for mobility of static code, active computations, and whole binding environments. The next generation of infrastructure will support full mobility by generating serialized continuations, a well-known functional programming control mechanism, and closures, which provide elegant modes of state encapsulation. Transferred continuations and closures will spawn new computations in open peers, add additional features to their binding environments, and direct them to the use of previously undiscovered services.
“Mobility” in CREST means the ability to cross agency boundaries, to enact decentralized cooperation, and to adapt in response to context and faults. Spawning and maintaining computations and execution environments at URLs allows cross-domain and cross-organizational use of services. Security measures will ensure that computations are sandboxed inside execution environments, and that execution is governed by security policies, similar to the security architectures for programming languages that run on virtual machines.
To imagine the power and versatility of a rich ecosystem of computations that are constantly exchanged among peers, we need only envision applications that dynamically adapt in the face of change, that are situationally aware, that are massively distributed, that span agency borders, and that can be shared and branched to act under new conditions or recombined into new services. Once the infrastructure is in place and the theory is solidified, CREST researchers will focus on building realistic and demanding applications in order to demonstrate the power of an infrastructure whose lingua franca is the transfer of rich and expressive computations — for building complex software systems within a wide variety of domains.
CREST’s underlying architectural principles aim to unify service access and composition for the complex assortment of services present today and tomorrow on the Web, and to expand the expressiveness, power, and cross-domain reusability of those services. Systems built using CREST tools and infrastructure will range from small-scale applications to huge infrastructures and systems-of-systems. On one end of the scale of potential applications, a commodities trading analyst could dynamically deploy assistant computations that collaboratively analyze, summarize, and correlate news stories, weather forecasts, and financial market updates to lend the most up-to-date advice for trading a commodity type, creating a customized tool with inherent flexibility and reconfigurability. On the other end of the scale, a smart energy microgrid with heterogeneous sources of power and usage requirements could intelligently balance supply, cooperate with other microgrids, and adapt in the face of brownouts, environmental disasters, demand spikes, and other threats to resilience.
Significant work remains. How can the architectural style be formally characterized? What are the methods and tools that will aid engineers in designing their own CREST applications? What programming languages can be supported, and how? How will engineers test applications that rely on a rich, live ecosystem of computations and peers? What system analysis tools are possible and useful, given the dynamism and ever-evolving characteristics of future CREST applications? In what domains will these principles be most useful? Future investigations and collaborations will uncover the answers to these questions.
For more on CREST research, see:
http://isr.uci.edu/projects/crest/