Scalable Distributed Systems (SDS)

Objectives:
Learn the fundamental concepts, operation and design guidelines, patterns and methods for developing software systems with good scalability and predictability, and the evaluation of scalable and Internet-scale systems.

Content:

  • Fundamental concepts: The effect of scale in system properties (functional and operational).
  • Issues in large-scale systems: virtualization, service orientation and composition, availability, locality, performance and adaptation (host-spots, autonomic computing).
  • Models for large-scale systems: system models for analysis (game-theoretic, economic, evolutionary, control, complex networks), architectural models (multi-tier, cluster, farm, grid, cloud, SaaS).
  • Scaling techniques: basic techniques (caching, distribution, replication), scalable computing techniques for architectural models.
  • Middleware and Applications: computing, storage, web, content distribution, Internet-scale systems or services.

 

Methodology:
Theory classes, Reading and discussion of research papers, Presentation of topics by students, Laboratory activities

Evaluation:
The evaluation of the course will be based on the participation of students in class, reading reports and an experimental project work on specific topics.

References:
A collection of research papers.

Course materials at the course wiki

Pre-requisites:

Basic concepts of distributed systems, including DHTs (e.g. Chord) as in the "Distributed Systems" (SODX) course.