We may earn an affiliate commission when you visit our partners.
Course image
Alexandru Iosup and Jan Rellermeyer

Modern IT infrastructure is built as distributed systems, an exciting concept that started with the first computers and evolved rapidly into its present form. From online video meetings to internet services, from social media platforms to online games, we all use and interact with distributed systems on a daily basis and increasingly depend on them. Designing and operating such large-scale distributed systems, however, is complex and typically involves making reasonable compromises. There are fundamental technical barriers as well as economic arguments why we cannot make these systems behave as if they were running on a single, perfectly reliable machine..

Read more

Modern IT infrastructure is built as distributed systems, an exciting concept that started with the first computers and evolved rapidly into its present form. From online video meetings to internet services, from social media platforms to online games, we all use and interact with distributed systems on a daily basis and increasingly depend on them. Designing and operating such large-scale distributed systems, however, is complex and typically involves making reasonable compromises. There are fundamental technical barriers as well as economic arguments why we cannot make these systems behave as if they were running on a single, perfectly reliable machine..

In this course, learners will be introduced to the essential functional and non-functional concerns of distributed systems and the common problems encountered while designing them, such as consistency, availability, elasticity, and scalability. A variety of practical solutions that have been established in the leading tech industry in recent years will be reviewed. These provide re-usable building blocks to create new large-scale applications. These recent developments, especially around cloud computing, large-scale data processing, distributed machine learning, and other fields are often not reflected in textbooks and are absent from many traditional curricula but are at the heart of this course.

The course will therefore provide learners with the fundamental understanding (theoretical and practical foundations) of how cloud, edge, and big data processing systems work and how they address common challenges for distributed systems such as performance, resilience, and scalability.

The learning progress is assessed through a variety of different activities including quizzes, design exercises, experiments, and open questions, with peer review of other students’ solutions. In the final project, learners will design a distributed system based on the learners’ own experience and interests and describe the functional and non-functional properties of the system.

What's inside

Learning objectives

  • Describe the principles of distributed systems.
  • Contrast distributed systems with other forms of computation (e.g., single machine computation, parallel computing).
  • Identify applications of distributed systems in science, engineering, business, and home use, and in particular the use of cloud and serverless applications, big data and graph processing applications, interactive and online gaming, etc.
  • Analyze and design core architectures, components, and techniques in distributed systems.
  • Solve practical problems related to modern uses of distributed systems.

Syllabus

Module 1: Introduction to Distributed Systems
● Parallel vs. Distributed Systems
● Challenges in Distributed Systems
● The CAP Theorem
Read more
● Example 1: Online Gaming
● Example 2: Scientific Computing
Module 2: Functional Requirements
● Functional vs. Non–Functional Properties
● Naming
● Replication
● Consistency
● Consensus
Module 3: Non-Functional Requirements
● Importance of Performance
● Measuring NFRs: Metrics
● Scalability and Elasticity
● Amdahl’s Law
● Gustafson’s Law
● Benchmarking
Module 4: Resource Management and Scheduling
● Scheduling in the Small: Processor Scheduling
● Scheduling in the Large: Scheduling for Distributed Systems
● Workloads in DS
● Centralized Schedulers: Kubernetes, etc.
● Decentralized Schedulers: (HTCondor) etc.
● Portfolio Scheduling
Module 5: System Architectures and Programming Models
● Trade-offs between SAs and PMs
● Programming Models
● System Architectures: communication, big data, machine learning
● Layering
Module 6: Distributed Ecosystems
● Introduction to massive processing
● Theory of ecosystems
● Super-distribution principle
● Distributed ecosystems in science and engineering: cloud, edge, big data
● Distributed ecosystems in online gaming
● The future of distributed ecosystems

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Examines distributed systems and how large-scale applications are built in industry
Taught by credible experts who work in the field
Covers topics used in leading tech industries, and not always found in textbooks
The final project is a practical, hands-on experience
May require some prior experience with programming or computer science
May not be suitable for someone with no experience in distributed systems

Save this course

Save Modern Distributed Systems to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Modern Distributed Systems with these activities:
Reading: Distributed Systems for Dummies
Provides a practical and accessible introduction to distributed systems concepts.
Show steps
  • Read and summarize key concepts of distributed systems.
  • Identify and explain different types of distributed systems.
  • Discuss the challenges and benefits of distributed systems.
Review CAP Theorem
Reinforces understanding of a critical theory in distributed systems design.
Browse courses on CAP Theorem
Show steps
  • Explain the CAP Theorem and its implications for distributed systems.
  • Describe how the CAP Theorem affects the design of distributed applications.
  • Identify scenarios where the CAP Theorem is relevant.
Exploring Cloud Data Processing Services
Introduces practical aspects of data processing in distributed cloud environments.
Show steps
  • Identify and compare different cloud data processing services.
  • Create and execute data processing pipelines using these services.
  • Explore techniques for data transformation, filtering, and aggregation.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Kubernetes Workload Management
Provides hands-on experience in managing workloads in a distributed environment.
Browse courses on Kubernetes
Show steps
  • Deploy and manage a simple application on Kubernetes.
  • Scale and update the application.
  • Configure and use Kubernetes features such as replica sets and deployments.
Distributed Systems Case Study Discussions
Fosters critical thinking and collaboration by analyzing real-world distributed systems.
Browse courses on Real-World Applications
Show steps
  • Read and discuss case studies of successful and failed distributed systems.
  • Identify and analyze the architectural decisions made in these systems.
  • Discuss the trade-offs and challenges involved in designing and operating distributed systems.
Design a Distributed System Architecture
Enhances understanding of architectural principles and their application in distributed systems.
Browse courses on System Design
Show steps
  • Identify the requirements and constraints of the distributed system.
  • Select and justify the appropriate architectural patterns and components.
  • Design the system's data flow, communication mechanisms, and fault tolerance strategies.
  • Document the architecture and its design decisions.
Building a Distributed System: Your Own Experience
Encourages practical implementation and a deeper understanding of distributed systems principles.
Browse courses on System Development
Show steps
  • Design and implement a distributed system for a specific purpose or application.
  • Document the system's architecture, design decisions, and implementation details.
  • Test and evaluate the system's performance, reliability, and scalability.
  • Present your project and findings to the class or a wider audience.

Career center

Learners who complete Modern Distributed Systems will develop knowledge and skills that may be useful to these careers:
Data Architect
A Data Architect designs and builds data systems. This course may be useful for aspiring Data Architects, as it will teach you all about big data, including its functional and non-functional requirements, as well as its common challenges. By learning about the practical solutions that have been established in the leading tech industry in recent years, you will be well-prepared for a career in this field.
Big Data Engineer
A Big Data Engineer designs and builds big data systems. This course may be useful for aspiring Big Data Engineers, as it will teach you all about big data, including its functional and non-functional requirements, as well as its common challenges. By learning about the practical solutions that have been established in the leading tech industry in recent years, in particular around big data and graph processing applications, you will be well-prepared for a career in this field.
Game Developer
A Game Developer designs and builds video games. This course may be useful for aspiring Game Developers, as it will teach you all about the functional and non-functional requirements of distributed systems, as well as their common challenges. By learning about the practical solutions that have been established in the leading tech industry in recent years, in particular around interactive and online gaming, you will be well-prepared for a career in this field.
Cloud Engineer
A Cloud Engineer designs and builds cloud systems. This course may be useful for aspiring Cloud Engineers, as it will teach you all about cloud computing, including its functional and non-functional requirements, as well as its common challenges. By learning about the practical solutions that have been established in the leading tech industry in recent years, you will be well-prepared for a career in this field.
Cloud Architect
A Cloud Architect designs and manages cloud computing systems. This course may be useful for aspiring Cloud Architects, as it will teach you all about cloud computing, including its functional and non-functional requirements, as well as its common challenges. By learning about the practical solutions that have been established in the leading tech industry in recent years, in particular around cloud computing, you will be well-prepared for a career in this field.
Machine Learning Architect
A Machine Learning Architect designs and builds machine learning systems. This course may be useful for aspiring Machine Learning Architects, as it will teach you all about machine learning, including its functional and non-functional requirements, as well as its common challenges. By learning about the practical solutions that have been established in the leading tech industry in recent years, you will be well-prepared for a career in this field.
Machine Learning Engineer
A Machine Learning Engineer designs and builds machine learning systems. This course may be useful for aspiring Machine Learning Engineers, as it will teach you all about machine learning, including its functional and non-functional requirements, as well as its common challenges. By learning about the practical solutions that have been established in the leading tech industry in recent years, in particular around distributed machine learning, you will be well-prepared for a career in this field.
Distributed Systems Architect
A Distributed Systems Architect designs and builds distributed systems. This course may be helpful for aspiring Distributed Systems Architects, as it will teach you everything you need to know about modern distributed systems, including their functional and non-functional requirements, as well as their common challenges. By learning about the practical solutions that have been established in the leading tech industry in recent years, you will be well-prepared for a career in this field.
Data Scientist
A Data Scientist uses data to solve problems. This course may be useful for aspiring Data Scientists, as it will teach you how large-scale data processing systems work, as well as how they address common challenges such as performance, resilience, and scalability. By learning about the practical solutions that have been established in the leading tech industry in recent years, in particular around large-scale data processing and distributed machine learning, you will be well-prepared for a career in this field.
DevOps Engineer
A DevOps Engineer automates the process of software development and deployment. This course may be useful for aspiring DevOps Engineers, as it will teach you all about the principles of distributed systems, as well as how to analyze and design core architectures, components, and techniques in distributed systems. By learning about the practical solutions that have been established in the leading tech industry in recent years, you will be well-prepared for a career in this field.
IT Architect
An IT Architect designs and builds IT systems. This course may be useful for aspiring IT Architects, as it will teach you all about the principles of distributed systems, as well as how to analyze and design core architectures, components, and techniques in distributed systems. By learning about the practical solutions that have been established in the leading tech industry in recent years, you will be well-prepared for a career in this field.
Software Development Manager
A Software Development Manager leads and manages software development teams. This course may be useful for aspiring Software Development Managers, as it will teach you all about the principles of distributed systems, as well as how to analyze and design core architectures, components, and techniques in distributed systems. By learning about the practical solutions that have been established in the leading tech industry in recent years, you will be well-prepared for a career in this field.
Computer Systems Analyst
A Computer Systems Analyst analyzes, designs, and implements computer systems. This course may be useful for aspiring Computer Systems Analysts, as it will teach you all about the principles of distributed systems, as well as how to analyze and design core architectures, components, and techniques in distributed systems. By learning about the practical solutions that have been established in the leading tech industry in recent years, you will be well-prepared for a career in this field.
Information Systems Manager
An Information Systems Manager plans, implements, and manages information systems. This course may be useful for aspiring Information Systems Managers, as it will teach you all about the principles of distributed systems, as well as how to analyze and design core architectures, components, and techniques in distributed systems. By learning about the practical solutions that have been established in the leading tech industry in recent years, you will be well-prepared for a career in this field.
Software Engineer
A Software Engineer uses their knowledge of programming languages to write computer programs. If you are interested in becoming a Software Engineer, this course may be useful, as it will teach you about the principles of distributed systems, as well as how to analyze and design core architectures, components, and techniques in distributed systems. Additionally, it will help you solve practical problems related to modern uses of distributed systems.

Reading list

We've selected nine books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Modern Distributed Systems.
A widely-used textbook that provides a comprehensive overview of distributed systems. It covers essential concepts such as consistency, availability, and fault tolerance. serves as a solid foundation for understanding the principles and challenges of distributed systems.
An in-depth guide to designing and building scalable, reliable, and performant data-intensive applications. It covers topics such as data modeling, partitioning, replication, and consistency. is particularly valuable for understanding modern data processing systems and their architectural considerations.
A comprehensive reference on cloud computing concepts, technologies, and architectures. It provides a deep understanding of cloud platforms, resource management, virtualization, and security. complements the course's coverage of cloud-based distributed systems.
A concise and accessible introduction to semaphore communication. Semaphores are a fundamental concept in distributed systems for managing concurrent access to shared resources. provides a practical understanding of semaphore-based synchronization.
A classic textbook on parallel programming, which provides background on the fundamental concepts and techniques used in distributed systems. It covers topics such as message passing, shared memory, and synchronization. is useful for understanding the historical context and theoretical foundations of distributed systems.
A rigorous and mathematical treatment of distributed algorithms. It provides a formal framework for understanding the behavior of distributed systems and analyzing their correctness. is valuable for advanced learners who seek a deep understanding of distributed systems theory.
A practical guide to microservices architecture, a popular approach to designing and building modern distributed systems. It covers topics such as service decomposition, communication, and deployment. provides additional insights into the architectural and design considerations of distributed systems.
A comprehensive guide to software development practices and principles. It covers topics such as coding standards, design patterns, and testing. useful reference for improving the quality and maintainability of distributed systems code.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Here are nine courses similar to Modern Distributed Systems.
Software Engineering: Introduction
Most relevant
Thinking Functionally in Scala 2
Most relevant
Fundamentals of Software Architecture for Big Data
Cloud Computing Applications, Part 2: Big Data and...
Scala 2 Methods and Functions
Software Architecture & Technology of Large-Scale Systems
Getting Started with Stream Processing with Spark...
Big Data Analytics Using Spark
Data Manipulation at Scale: Systems and Algorithms
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser