CPS 296-2: System Support for Wide-Area Applications
Course Details | Project Suggestions | Project Milestones | Lecture Notes | Presentation Schedule

Spring 1999

Instructor: Amin Vahdat (vahdat@cs.duke.edu)
TA: Surendar Chandra (surendar@cs.duke.edu)
Time: MWF 1:10-2:00 (D106 LSRC)
Suggestion Box (anonymous email to instructor).

Course Summary/Objectives

The enormous popularity of the web provides a tremendous opportunity and challenge to rethink the foundations of wide area distributed systems. Internet use is doubling every six months (faster than Moore's Law -- the rate of improvement in hardware performance); within a few years, the number of active users on the Internet will pass 100 million. How would you build a web services able to gracefully scale across an an order of magnitude variance in demand.  For example, could we build a web server for CNN to recruit additional resources as necessary during national elections or after breaking news stories (the Starr report)?  Can we provide a reliable email account to every schoolchild in the US?

While the Web today provides just a read-only file system (albeit with active content), one emerging vision is to provide seamless access to computational and data resources around the Internet, in effect extending the local area network computing model to the wide area. How should traditional concerns such as naming, persistence, resource management, and security be provided in a system of Internet scale? What support do we need for applications that are geographically distributed, highly available, incrementally scalable, and dynamically reconfiguring (e.g., can we support dynamic migration and replication of web services)?

First-year graduate students and undergraduates with appropriate background are strongly encouraged to attend. We will provide some material to be read off-line to fill in gaps for anyone missing some background.

Introduction/Overview
(Jan. 13 - Jan. 22)

Question: What is the right model for supporting Internet applications of the future?

For more depth:

Locally Scalable Services
(Jan. 25 - 29)

Question: As a subproblem, how do we build a scalable Internet service located at a single site (which we might have to replicate to get end-to-end availability)? What abstractions should we provide to support scalability to millions of users, continuous 24x7 operation, etc.

For more depth:

Naming
(Feb. 1 - 10)

Question: How should we translate from virtual names to physical addresses? How do we find objects or services or users in the Internet if they migrate?

For more depth:

Wide Area Communication and Persistence
(Feb. 12 - 22)

Question: How do we coordinate the activities of a geographically distributed application? What if the application needs to update persistent state?

For more depth:

Wide-Area Caching
(Feb. 26 - Mar. 3)

For more depth:

Security
(Mar. 5 - Mar. 24)

Question: How do we provide secure access to wide area remote resources (cycles, storage, and data)?

For more depth:

Resource Management
(Mar. 29 - Apr. 5)

Question: How do we allocate resources among competing needs, whether those be CPU cycles to run agents for end users or geographically distributed Internet services? How do we find idle resources if they exist?

For more depth:

Infrastructure and Applications
(Apr. 7 - Apr. 16)

Question: How do we make sure what we build works before it gets deployed? How do we deploy what we build?

For more depth:

Wrapup and Final Projects
(Apr. 19 - 23)