Advanced Search
Search Results
112 total results found
1.1 Course Introduction
2.1 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
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
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
2.9 Maintainability, Security, Cost
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
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
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
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
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
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
3.1 Regions, availability zones, data centers, racks, servers
3.2 Physical servers, virtual machines, containers, serverless
4.1 Synchronous vs asynchronous communication
4.2 Asynchronous messaging patterns
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)
4.4 Blocking vs Non-Blocking I/O
4.5 Data encoding formats
4.6 Message acknowledgment