Serverless computing is a new computing paradigm that aims to simplify building cloud applications. Existing serverless computing is designed for certain types of workloads, such as stateless web request handlers that require little coordination across instances. In this thesis I explore the potential of general purpose serverless computing by providing new features at both the application framework level and the serverless platform level.
I first describe Sprocket, a parallel video application framework based on serverless computing. Based on my work with Sprocket, I observed several key limits of existing serverless offerings, including lack of cross-instance networking, inefficient resource scheduling, and the cold start problem. I develop three systems for the serverless platform: Particle, Sophon, and FaaSnap, that tackle networking, scheduling, and cold start challenges, respectively. These systems reduce the gap between the requirements of emerging serverless applications and the capabilities of current serverless offerings, paving the way for future general purpose serverless computing.