Leetcode - System Design for Interviews and Beyond
https://leetcode.com/explore/featured/card/system-design-for-interviews-and-beyond/
1. Introduction
2. How to define system requirements
2.1 System Requirements
Functional Requirements what features must be included Non-Functional Requirements must ...
2.2 Functional Requirements
When writing a design document, we typically capture functional requirements in the form of use c...
2.3 High Availability
System uptime 99% availability => offline 3.65 days a year Request Success Ratio 99% ava...
2.4 Fault Tolerance, Resilience, Reliability
2.5 Scalability
Scale can be performed horizontally or vertically, it is important to compare the trade offs betw...
2.6 Performance
Performance is time required to process something (latency) rate at which something is proces...
2.6.a Count Video Views at Large Scale
Requirements Clarification Users Who will use the system? How the system will be used? ...
2.7 Durability
High durability means low probability of data loss. Once data is successfully submitted to the s...
2.8 Consistency
Strong Consistency (changes are reflected to all users immeidately) vs Weak Consistency (change...
2.9 Maintainability, Security, Cost
Maintainability failure modes and mitigations if some component fails, what happens to the re...
2.10 System Requirements Summary
3. How to achieve certain system qualities with the help of hardware
4. Fundamentals of reliable, scalable, and fast communication
4.1 Synchronous vs asynchronous communication
4.2 Asynchronous messaging patterns
Two primary asynchronous messaging models: Message queuing and Publish/subscribe. Competing Co...