A28 - Distributed systems
|Year||March 13-16, 2023|
|Starting with the mid-1990s, computing is undergoing a revolution, in which collections of independent computers appear to users as a single, albeit distributed, computing system. Motivated by energy and cooling constraints, by the increase in the computation capacity of consumer computers, by the
commoditization of server-grade machines, and by the advent of the Internet, the distributed computing paradigm has permeated all fields using computers. Current distributed computing applications range from social networks to banking, from peer-to-peer file-sharing to high-performance computing used in research, from massively multiplayer online games to business-critical workloads, etc. Important advances have helped to fuse heterogeneous resources into truly global distributed systems, for example in scientific computing, where distributed computation is using Big Data and distributed sensors to produce meaningful progress for humankind. This course focuses on distributed computing systems, covering the operation and history of distributed systems, common operational goals, building blocks for functional and non-functional requirements in distributed systems, resource management and scheduling in distributed systems, the interplay between programming model and system architecture in distributed systems, and modern distributed ecosystems.
|+ You will learn to identify the core principles of modern distributed systems.
+ You will learn to differentiate between many classes of modern distributed applications.
+ You will be able to explain the main research challenges active in the distributed systems field.
+ You will acquire basic hands-on experience with distributed systems.
+ You will be able to apply this knowledge to analyze, for your domain, the possible impact of distributed systems, and to design an approach that could help with the field.
|One full week, followed by a final assignment. Most days are laid out uniformly, roughly as follows:
The full-day sessions:
Session 1 (half-day): Intro + Distributed Systems and Ecosystems, types of problems, examples, history.
Session 2: Functional Requirements: Communication, Consistency, etc., with illustrating examples (gaming/databases).
Session 3: Non-Functional: Performance, Scalability and Elasticity, Fault-Tolerance, with illustrating examples (serverless).
Session 4: Resource Management and Scheduling, with illustrating examples (scientific computing).
Session 5: Interplay between Programming Interface and Architecture, with illustrating examples (big data, including graph processing) + Conclusion.
|Discussion during meetings, both conceptual and about the hands-on experience. Assignment after the lectures is “Analyze for your research domain the impact of the five classes of concepts introduced in this course. Report of 4-6 pages, with one round of feedback.”|