This course will focus on the fundamental systems research that enabled and continues to power modern cloud computing. We will cover the production systems that run within data centers operated by large cloud companies such as Google, Microsoft and Amazon, as well as the ground-breaking academic research that paved the way for these systems. Technically, we'll focus on the abstractions and mechanisms required to build online services that are scalable, highly available, durable, and consistent. We'll cover the entire stack, ranging from single-machine systems to protocols for distributing and replicating data within and across data centers. By the end of the course, students should be able to critically read a systems paper; distill, apply and improve upon key ideas from it; and write a short paper describing their own systems project.

Prerequisites: Equivalent of CPSC 323, or permission of instructor.

Syllabus: The course will be almost completely centered on a reading list of papers from top systems conferences (e.g., SOSP, OSDI, NSDI, FAST). These will span the last two decades of systems research and include seminal papers from academia (e.g., the Log-structured Filesystem, FAWN, Chain Replication), as well as state-of-the-art projects from industry (Google's papers on GFS/Spanner/Chubby, Amazon's Dynamo, Microsoft's Azure Storage, etc.). In each class, we will discuss one paper (sometimes two); these will either be presented by the instructor or by students. Your grade will be based on:

Project details and timeline: There's a 1-2 page survey paper due by class on 3/8 that should contain a compact description of your project proposal (1 or 2 paragraphs), a project plan / timeline (a bullet list of what you expect to implement by when), and a survey of related work (which will end up fitting verbatim into your final report). For example, if your proposal involves implementing a new kind of replication protocol, your survey will describe existing replication protocols. For PhD students, the project should make a research contribution (e.g. a new replication protocol). For undergraduates and masters, they can either make a research contribution or take the implementation option and build a practically useful system (e.g. implement an existing replication protocol). You can optionally form groups of 2 people for the project.

Project topics: For the research route, read papers at recent conferences for research topics, or think about offshoots of the paper we read in class. For the implementation route, one approach is to pick any of the systems we have talked about in class (LFS, epidemic replication, Paxos, etc.) and build an implementation of it. The report should talk about how HW and applications have changed since the paper was published and what (if any) changes you had to make to the design as a result. User-space implementations are fine, but implementations are almost always preferred over simulation. If you are building a storage system, bytes must hit the storage medium; if you are building a distributed protocol, bytes must travel over the wire.

Paper reviews: Reviews are due via classesv2 before the class on which the paper is being discussed. PDF is preferred with your name and the class date on top.

Important dates:

Administrative information:
Instructor: Mahesh Balakrishnan
Location and Timings: AKW 400, MW 1PM - 2:15 PM.
TA: Bo Hu.

Schedule:

Date Topic Papers Presenter
1/18 (W) Introductory Class Mahesh
1/20 (F) Distributed Filesystems The Google file system. Sanjay Ghemawat, Howard Gobioff, Shun-Tak Leung. In SOSP 2003. [paper]

Optional: Windows Azure Storage: a highly available cloud storage service with strong consistency. In SOSP 2011. [paper]

(no review due for this paper)

1/23 (M) Cloud-Scale Failures Heading Off Correlated Failures through Independence-as-a-Service. Ennan Zhai, Ruichuan Chen, David Isaac Wolinsky, Bryan Ford. [paper] Ennan
1/25 (W) Coordination The Chubby lock service for loosely-coupled distributed systems. In OSDI 2006. [paper] Ji Yong
1/30 (M) Local Filesystems The Design and Implementation of a Log-Structured File System. Mendel Rosenblum and John K. Ousterhout. In ACM TOCS 1992. [paper] Mahesh
2/1 (W) Gossip Epidemic algorithms for replicated database maintenance. Alan Demers, Dan Greene, Carl Hauser, Wes Irish, John Larson, Scott Shenker, Howard Sturgis, Dan Swinehart, and Doug Terry. In PODC 1987. [paper] TBD
2/6 (M) Principles End-to-end arguments in system design. J. H. Saltzer, D. P. Reed, and D. D. Clark. In ACM TOCS 1984. [paper]

Hints for Computer System Design. Butler W. Lampson. In SOSP 1983. [paper]

TBD
2/8 (W) Distributed NoSQL Bigtable: A Distributed Storage System for Structured Data. Fay Chang, Jeffrey Dean, Sanjay Ghemawat, Wilson C. Hsieh, Deborah A. Wallach, Mike Burrows, Tushar Chandra, Andrew Fikes, and Robert E. Gruber. In ACM TOCS 2008. [paper] Nishant
2/13 (M) Distributed Transactions Sinfonia: a new paradigm for building scalable distributed systems. Marcos K. Aguilera, Arif Merchant, Mehul Shah, Alistair Veitch, and Christos Karamanolis. In SOSP 2007. [paper] Juno
2/15 (W) Geo-distributed Systems Spanner: Google’s globally-distributed database. James C. Corbett, et al. In OSDI 2012. [paper] Michael
2/20 (M) P2P Chord: A scalable peer-to-peer lookup service for internet applications. Ion Stoica, Robert Morris, David Karger, M. Frans Kaashoek, and Hari Balakrishnan. In Sigcomm 2001. [paper] TBD
2/22 (W) Distributed Storage Dynamo: Amazon's highly available key-value store. Giuseppe DeCandia, Deniz Hastorun, Madan Jampani, Gunavardhan Kakulapati, Avinash Lakshman, Alex Pilchin, Swaminathan Sivasubramanian, Peter Vosshall, and Werner Vogels. In SOSP 2007.[paper] Srihari
2/27 (M) Flash Clusters FAWN: a fast array of wimpy nodes. David G. Andersen, Jason Franklin, Michael Kaminsky, Amar Phanishayee, Lawrence Tan, and Vijay Vasudevan. In SOSP 2009. [paper] TBD
3/1 (W) Big Data MapReduce: Simplified Data Processing on Large Clusters. Jeff Dean and Sanjay Ghemawat. In OSDI 2004. [paper] Jayshree and Udit
3/6 (M) Virtualization Disco: running commodity operating systems on scalable multiprocessors. Edouard Bugnion, Scott Devine, Kinshuk Govil, and Mendel Rosenblum. In ACM TOCS 1997.[paper] TBD
3/8 (W) RPC Implementing remote procedure calls. Andrew D. Birrell and Bruce Jay Nelson. In TOCS 1984. [paper] TBD
3/13 (M) TBD No Class -- Spring Recess TBD
3/15 (W) TBD No Class -- Spring Recess TBD
3/20 (M) TBD No Class -- Spring Recess TBD
3/22 (W) TBD No Class -- Spring Recess TBD
3/27 (M) Virtual Synchrony The Process Group Approach to Reliable Distributed Computing. Ken Birman. CACM 1993. Mahesh
3/29 (W) Byzantine Practical Byzantine fault tolerance. Miguel Castro and Barbara Liskov. In OSDI 1999.[paper] TBD
4/3 (M) NA No paper -- project discussions.
4/5 (W) Privacy CryptDB: protecting confidentiality with encrypted query processing. In SOSP 2011. [paper] Jayshree and Udit
4/10 (M) OS 2 The multikernel: a new OS architecture for scalable multicore systems. In SOSP 2009. [paper] Keyang
4/12 (W) ML+Systems TensorFlow: A system for large-scale machine learning. In OSDI 2016. Udit
4/17 (M) DB S-Store: Streaming Meets Transaction Processing. In VLDB 2015. Gao
4/19 (W) No class No class No class
4/24 (M) TBD TBD TBD
4/26 (W) TBD TBD TBD