Udemy
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
Turn what you know into an opportunity and reach millions around the world.
Learn More
Your cart is empty.
Keep shopping
Fundamentals of High Level System Design
Rating: 3.6 out of 5(73 ratings)
375 students

Fundamentals of High Level System Design

A guide to the building blocks of High Level System Design
Last updated 8/2020
English
English [Auto],

What you'll learn

  • Considerations to be made while designing a large scale system
  • The building blocks of large scale software systems
  • Managing tradeoffs while designing large scale applications
  • The must-knows to clear the system design interview

Course content

5 sections70 lectures3h 10m total length
  • Introduction2:21

    Explore scalability, availability, data consistency, and reliability as you design scalable systems, assess downtime impact and maintenance cost, and balance throughput with low latency.

  • Introduction to Scalability4:15

    Discover how scalable distributed systems handle growing load by comparing vertical and horizontal scaling, and understand why horizontal scaling reduces the risk of a single point of failure.

  • Vertical vs Horizontal Scaling1:55

    Compare vertical and horizontal scaling by showing how vertical scaling adds resources to a single machine, while horizontal scaling adds nodes to a cluster, highlighting resilience and data consistency trade-offs.

  • Scalability
  • Introduction to Availability1:44

    Explore system availability, defined as the probability the system stays up when needed. Understand how downtime duration and recovery time affect user experience and revenue for online apps.

  • Availability Patterns3:56

    Explore high availability patterns with active-active master-master and master-slave configurations. Use load balancers, heartbeats, and synchronous versus asynchronous communication to improve throughput, response time, and resilience against node failures.

  • Putting Availability in Numbers1:51

    Explore how availability is calculated, compare downtime guarantees like 99.9% and 99.99%, and explain how redundancy via master-master and master-slave configurations achieves high availability with cost and complexity tradeoffs.

  • Availability
  • Introduction to Consistency2:29

    Introduces data consistency by syncing replicated data across a multi-node cluster to maintain availability. Shows how uneven update propagation yields reads that differ by replica, creating inconsistency.

  • Consistency Patterns1:41

    Explore data-centric consistency with replicated local copies and a single distributed data source, and examine client-centric models that favor eventual convergence and time-based writes for performance.

  • Consistency Guarantee3:17

    Compare data-centric and client-centric consistency models, from strict data consistency to eventual and weak consistency, and their tradeoffs for throughput and latency.

  • Consistency
  • Reliability3:45

    Recognize that reliability is the probability a distributed system produces correct outputs over time, unlike availability. Plan for partition tolerance to maintain consistency during network splits.

  • Quiz: Reliability
  • CAP Theorem1:49

    Explore the CAP theorem by weighing CP configurations for strong consistency during partitioned networks against AP configurations that prioritize availability, illustrated by banking data and movie ratings.

  • Quiz : CAP Theorem

Requirements

  • Background in Computer Science

Description

This course in introduction to the fundamentals of High-Level System Design. Whether you are an undergrad who wants to learn more about a distributed system or an aspirant to crack the system design interview in one of the top tech companies - this course is for you!

The course starts by higlighting some of the considerations and tradeoffs to be made while designing a large scale system. We are gonna cover the topics of Scalability, Reliability, Availability, and Performance.

Next, we dwell on the key system resources like - compute, storage, and network and how they can be scaled in a large scale system. We then cover some of the building blocks of large scale systems like Load balances, Proxies, Gateways, Caching solution and Databases

Finally, we wrap up with an introduction to inter-process communication in large scale applications. This is key to architecting large scale micro-service-based applications

This course is designed keeping in mind the current trends in computing is filled with real-world examples. The course has quizzes at the end of each topic to keep you engaged throughout.

I'm looking forward to you joining me on this journey of unravelling the art of designing large scale systems. Let's get started!

Who this course is for:

  • Software Developers, Interviewees