Skip to main content
Advanced Search
Search Terms
Content Type

Exact Matches
Tag Searches
Date Options
Updated after
Updated before
Created after
Created before

Search Results

112 total results found

1.1 Course Introduction

Leetcode - System Design for Interviews... 1. Introduction

2.1 System Requirements

Leetcode - System Design for Interviews... 2. How to define system requirements

Functional Requirements what features must be included Non-Functional Requirements must be highly available and fast Example: Design a scalable, highly available, and fast messaging system Thought process we need to scale for writes and reads, ...

2.2 Functional Requirements

Leetcode - System Design for Interviews... 2. How to define system requirements

When writing a design document, we typically capture functional requirements in the form of use cases. Start from the end user, think about who they are and how are they going to use the system.

2.3 High Availability

Leetcode - System Design for Interviews... 2. How to define system requirements

System uptime 99% availability => offline 3.65 days a year Request Success Ratio 99% availability => 1 failed request out of 100 Principles Behind High Availability Build redundancy to eliminate single points of failure regions, availability ...

2.4 Fault Tolerance, Resilience, Reliability

Leetcode - System Design for Interviews... 2. How to define system requirements

2.9 Maintainability, Security, Cost

Leetcode - System Design for Interviews... 2. How to define system requirements

Maintainability failure modes and mitigations if some component fails, what happens to the rest of the system? how the system handles network partitions? how we want the system to handle network partitions monitoring how do we monitor the health of...

2.5 Scalability

Leetcode - System Design for Interviews... 2. How to define system requirements

Scale can be performed horizontally or vertically, it is important to compare the trade offs between them case by case. Horizontal scalling is not always the best choice. Elasticity the ability of a system to acquire resources as it needs them, and releas...

2.6 Performance

Leetcode - System Design for Interviews... 2. How to define system requirements

Performance is time required to process something (latency) rate at which something is processed (throughput) Response time = network delay + service time response time = client-side latency network delay = network latency service time = server-sid...

2.6.a Count Video Views at Large Scale

Leetcode - System Design for Interviews... 2. How to define system requirements

Requirements Clarification Users Who will use the system? How the system will be used? Scale How many read queries per second? How much data is queried per request? How many video views are processed per second? Can there be spikes in traffic...

2.7 Durability

Leetcode - System Design for Interviews... 2. How to define system requirements

High durability means low probability of data loss. Once data is successfully submitted to the system, it is not lost. How? By creating and maintaining multiple copies of data. Backups copy data from a non-volatile storage, such as disk, periodically 3 c...

2.8 Consistency

Leetcode - System Design for Interviews... 2. How to define system requirements

Strong Consistency (changes are reflected to all users immeidately) vs Weak Consistency (changes take some time to reach all users because there're different versions of the data in the system) We need some terminologies in the middle: Consistency Models L...

2.10 System Requirements Summary

Leetcode - System Design for Interviews... 2. How to define system requirements

3.1 Regions, availability zones, data centers, racks, servers

Leetcode - System Design for Interviews... 3. How to achieve certain system qualit...

3.2 Physical servers, virtual machines, containers, serverless

Leetcode - System Design for Interviews... 3. How to achieve certain system qualit...

4.1 Synchronous vs asynchronous communication

Leetcode - System Design for Interviews... 4. Fundamentals of reliable, scalable, ...

4.2 Asynchronous messaging patterns

Leetcode - System Design for Interviews... 4. Fundamentals of reliable, scalable, ...

Two primary asynchronous messaging models: Message queuing and Publish/subscribe. Competing Consumers Pattern multiple queue consumers fetching jobs from a queue, each job is processed once by one consumer Request/Response Messaging Pattern use a s...

4.3 Network protocols (TCP, UDP, HTTP)

Leetcode - System Design for Interviews... 4. Fundamentals of reliable, scalable, ...

4.4 Blocking vs Non-Blocking I/O

Leetcode - System Design for Interviews... 4. Fundamentals of reliable, scalable, ...

4.5 Data encoding formats

Leetcode - System Design for Interviews... 4. Fundamentals of reliable, scalable, ...

4.6 Message acknowledgment

Leetcode - System Design for Interviews... 4. Fundamentals of reliable, scalable, ...