This course explores advanced topics in highly scalable Internet services and the underlying systems architecture. Large scale web sites and software delivered as a service are becoming pervasive, and are running on millions of servers. Web 2.0 has redefined the web user experience and new infrastructure technologies have redefined what it takes to launch a state-of-the-art web site. Amazon's web services, such as Simple Storage Service (S3) and Elastic Compute Cloud (EC2), and Google's Compute Engine are changing the game for hosting scalable fault-tolerant sites. New programming frameworks, such as Ruby on Rails, are making the development of interesting sites easier. Yet some concerns just don't go away: caching, load balancing, fail-over, redundancy, back-end databases, security, and monitoring to name a few.
In this course students will use state-of-the-art web technologies and learn how to tackle the scalability and fault-tolerance concerns. This is a "learn by doing" course: course projects will form the primary focus of the course with the lectures and discussion of research papers providing background material. Projects will be conducted in teams, and students will build their own scalable, redundant web site on EC2 using these web technologies and the Ruby on Rails framework.