Today's enterprise computing environments resemble the mythological chimaera: they are comprised of heterogeneous devices, ranging from PDAs to servers, which individually presents distinct, fragmented views of available data and services. To exacerbate the problem, devices are often managed by individuals with different interests and expertise. Thus, the parts are not even coordinated by a single brain! Unsurprisingly, these monsters are hard to use and maintain.
This project is exploring two ingredients for the taming of these monsters: a peer-to-peer (P2P) file system and a decentralized coordination mechanism. The file system serves to unify the fragmented data views of devices into a global namespace, providing device-independent name and content addressing. Underneath the global view, the file system continually monitors device characteristics and user behaviors, and automatically adapts the replication and placement of data to achieve specified availability and durability targets.
The coordination mechanism serves to govern the interactions between components within a decentralized system according to explicitly specified policies. Critically, this mechanism is based on an intrinsically decentralized system called Law Governed Interactions (LGI). This work explores the applicability of LGI to the above P2P file system and the experimental use of the resulting integrated system in the computing infrastructure of the Rutgers Computer Science Department.
The expected outcome of the project is a demonstration of how P2P technologies can be used to build powerful and flexible, yet low-futz enterprise computing systems. The project will also produce two prototype building blocks that can be used for future investigations of decentralized systems.
Chimaera 1a: a fire-breathing monster in Greek mythology having a lion’s head, a goat’s body, and a serpent’s tail. 1b: an imaginary monster compounded of incongruous parts. –Merriam-Webster Online Dictionary. It is becoming increasingly common for a person to use multiple devices such as smart phones, laptops, and PCs to meet their everyday computing needs. At the same time, the computing infrastructures of enterprises (e.g., companies) have become distributed across multiple networked servers. The thesis of my proposal is that these trends toward decentralization are turning enterprise computing environments into chimaeras: monsters comprised of incongruous parts. These systems are difficult to use and manage, leading to high levels of "futz" for both end-users and system administrators. Specifically, I identify two major factors that lead to high "futz": (1) the emerging device-centric computing model that is placing an increasing burden on users for data location and management and on system administrators for managing inter-device interactions; and (2) the lack of an effective coordination and control mechanism to prevent users from adversely affecting each other and the shared infrastructure. The work supported by this grant has mostly explored two ingredients for addressing the above problem: (1) designing and prototyping a federated file system that exports a unified data space across multiple users and devices, both during periods when users are connected to the Internet and when they are disconnected, and (2) a decentralized coordination and control framework that controls message-based interactions between software components (running on many different devices and/or servers) to orchestrate the harmonious operation of the whole system. The former part of the work allow users to easily share data with each other, as well as find data, regardless of the device a user is currently using and the actual physical location of the data. In some ways, this system is similar to (but is more decentralized and explores more advance capabilities than) recent cloud-based storage and synchronization services such as Dropbox and Google Drive. The latter part of the work seeks to provide a framework that enterprises can use to define and enforce enterprise-wide policies, rather than configure and manage individual devices and servers. Our prototyping and evaluation of these systems demonstrate that they can indeed help to reduce the frustrating futzing that users are often faced with today to find their data, as well as getting their computing systems to "work". On the education front, this grant has supported my work to extend class projects so that undergraduate students get to work with real life code bases such as the Linux kernel. I have worked with our department to modify and improve our core Architecture course, as well as a sophomore programming course, and a senior operating systems course. The modifications to the first two courses are aimed at strengthening students' programming skills, as well as understanding of how software executes on the underlying hardware. This preparation then allows them to tackle projects that involve modifying the Linux kernel in the operating system course. This experience with a real life code base teaches students many valuable skills, including the critical ability to read existing code, as well as boost their confidence when approaching their jobs after graduation.