Andromeda — A Distributed Userspace
Degree type
Graduate group
Discipline
Subject
Distributed Systems
Generality
Light-touch Distribution
Sandboxing
Security
Computer Sciences
Funder
Grant number
License
Copyright date
Distributor
Related resources
Author
Contributor
Abstract
% This text is formatted in LaTeX-style Computing is on a steady trajectory from standalone personal computers to pervasive, heterogeneous, networked computing resources. Distributed software systems are becoming indispensable, but involve a significant (and often unjustifiable) degree of \emph{complexity}. This problem is evident in their setup, development, deployment, and use---all of which are nowhere near their centralized counterparts. Whereas anyone today can write a Bash or Python script to compute on a single computer, scaling out to multiple computers requires expert labor around point'' solutions with expensive setups, restricted programming interfaces, and exorbitant composition costs. \\ To address this problem, I develop the concept of a \emph{distributed userspace}---a language-based overlay environment that bolts distribution onto a conventional (and light) language runtime as an extensible service module. The environment's programming style melds an unusual combination of elements aimed at lowering the aforementioned complexity without any loss of generality. To tackle a growing space of unavoidable distribution trade-offs, it also provides pervasive support for high-level configurability---e.g., node grouping, context rebinding, and interface transform. \\ I build a distributed-userspace prototype, {\scshape Andromeda}, targeting the JavaScript ecosystem. While most of its services are
textbook'' implementations, three are novel and demonstrate characteristics that are applicable beyond the context of {\scshape Andromeda}: (i) the storage subsystem, which supports efficient queries on dynamic data, (ii) the node group management subsystem, which adds first-class support for network overlays, and (iii) the task execution subsystem, which supports runtime interface rebinding for safety and performance. The key result is that {\scshape Andromeda} lowers the complexity of employing distributed software while addressing setup, transition, and ecosystem challenges. Particularly telling are three frameworks built on top of {\scshape Andromeda} that retrofit desirable properties into legacy applications with minimal developer effort: {\scshape BreakApp}spawns components in remote compartments, {\scshape Iris}protects co-located components from each other, and {\scshape Ignis}scales out bottlenecked components. These frameworks serve a double purpose: first, they address security and performance issues arising from the complexity-lowering techniques powering \sys; and second, they show the benefits of a general-purpose distributed environment outside the strict context of data-intensive computations, highlighting the benefits of {\scshape Andromeda}'s design decisions.