Project 3- Choose Your Own Adventure

Due - Tuesday, May 6, 2008

For this project, you will propose and implement an extension to your booksite application. The lecture period on April 15 will be devoted to discussion of your proposal. By April 17, you will need to submit a 1-2 paragraph description of your extension. I will respond promptly with any comments about your proposal.

For this project, you may choose to work in teams of 2. I will expect teams to complete roughly 2 times more work than individuals, and each team member will receive a grade based on my assessment of the individual contributions.

Your final grade will be based upon your proposal, the functionality of your final submission, the design of your final submission, and the degree of difficulty of your proposed project. Upon reading your proposal I will give you feedback on the level of difficulty of the project.

Following are several ideas for Project 3. This is not meant to be an exhaustive list, and is meant to inspire your creativity. I have not provided full explanations for each idea because it is part of your assignment to take an idea and develop it into a reasonable project.

Load Distribution

Currently, your main server refers clients to mirror sites using a round-robin algorithm. Design and implement a modified algorithm that chooses mirrors based on other criteria such as geographic location or observed load.

DHT

Rather than maintaining a tree of mirrors implement application-layer multicast on a DHT such as CAN. Refer to the paper Application-Level Multicast using Content-Addressable Networks for more information.

Bit Torrent-style Distribution

Implement a bit torrent-style content delivery scheme where files are split into chunks before delivery.

User State

Maintain state about the user including which files he/she has downloaded, how long it took to download each file, and which mirrors he/she has accessed. The information will need to be collected at each mirror site, and replicated at the main server and possibly the other mirrors.

Integration of other Web Services

Integrate one or more web services in addition to the Google Docs service. You will need to come up with (good!) justification as to why the chosen service enhances the service provided by your site.

Performance Evaluation

Develop a plan to test the performance of your site. There are several metrics you might explore: time to join, time to recover from a failure, message overhead. Parameters you might consider include the refresh rate, tree size, and update rate. Is your system scalable?

SOAP Interface

Provide a SOAP interface to your service.

Use Another Platform

Reimplement your site using another platform, such as Django or Ruby on Rails. Compare the features of the RESTlet architecture to the platform you choose.

Security and Authentication

Implement a security mechanism to enable mirrors to authenticate themselves with the main server and with each other. Encrypt content before sending over the network.

Experimentation with Concurrency

Implement two or more of the concurrency mechanisms we discussed in class and compare their performance.

Due 5:30PM - Thursday April 17, 2008

  1. Email me a 1-2 paragraph description of your proposed extension. I will respond promptly with any comments about your proposal.

Due 5:30PM - Tuesday May 6, 2008

  1. Complete and submit your working code. Place a copy of your source code and a readme in the submit directory /home/submit/cs682-s08/username.

Note: No portion of your code may be copied from any other source including another text book, a web page, or another student (current or former). You must provide citations for any sources you have used in designing and implementing your program.


Sami Rollins