Redesigning the software stack for the cloud
Abstract
The convenience and cost-effectiveness of the cloud have drawn enterprises and individuals to utilize cloud services and applications every day. High volumes of concurrent requests, shared infrastructures, and an increasing amount of software development and deployment in the cloud introduce new challenges and opportunities for the system design. Especially, the cloud reveals inefficiencies in the conventional software stack related to handling concurrency, running systems on highly parallel machines, and guaranteeing the correctness of newly developed systems.
In this talk, I will present three systems that modify the conventional software stack to address these shortcomings. First, I will discuss a block-level storage system that supports ACID transactions. The transaction support from the block layer can be ported to any levels of the software stack, and it enables transactions that cross process boundaries. Second, I will present a storage system that employs distributed weak consistency semantics within a local machine. This system treats the local machine as a distributed system to extract extra parallelism and performance. Finally, I will discuss a distributed address space of write-once registers that can become a modular foundation for consistency, fault-tolerance, and durability for distributed systems. When combined with a modular verification approach, this address space can enable incremental verification of distributed applications.