System Design Course

92h 26m 21s
English
Paid
March 28, 2024

In this course, you’ll get a deep understanding of system design concepts. Full guide. Architectural schemes, capacity planning, API list, tests, Faq.

More

On the course

  • Design a gmail-like mail system
    • routing client to server
    • We’re looking at services
    • authorized queries
    • Caching
    • decapling
  • Design an algorithm for an audio search engine like Shazam
    • mapping audio in key-values
    • pruning, transformation and chanking
    • Combinator’s hashes
    • Saving and Finding Heshovs
  • Rate-limiting algorithms
    • short-term fixes
    • distributed rate limiting
    • algorithms – sliding window, timer wheel
    • separating queues
    • Real optimization
  • Designing a call system. as whatsapp
    • PSTN and VOIP
    • Sip
    • charging users for a call
    • recommendation engine

Watch Online System Design Course

Join premium to watch
Go to premium
# Title Duration
1 What do we offer? 03:15
2 What are Databases? 04:40
3 Storage and Retrieval 04:25
4 What is a NoSQL database? 02:25
5 Types of Databases: Graph, TimeSeries and Object 02:16
6 What database should you choose? 02:13
7 What is Data Consistency? 01:31
8 Linearizable Consistency 03:14
9 Eventual Consistency 01:51
10 Causal Consistency 04:36
11 Quorum 06:30
12 Data Consistency Levels Tradeoffs 02:01
13 Transaction Isolation Levels - Read Uncommitted Data 03:13
14 Read Committed 03:44
15 Repeatable Reads 05:20
16 Serializable Isolation Level 02:01
17 Transaction Level Implementations 03:39
18 Conclusion - Transaction Isolation 00:52
19 Caching: Basics 06:29
20 Caching: Global vs. Local Cache 03:03
21 Global Cache Internals 06:32
22 Write Policies: Write Back Policy 04:36
23 Write Through Policy 02:34
24 Write Around Policy 03:24
25 Replacement Policies: LRU, LFU and Segmented LRU 11:15
26 Breakdown: The physical layer 02:59
27 Breakdown: The Routing Layer 03:20
28 Breakdown: The behavioral layer 04:40
29 Connecting to the internet: ISPs, DNS and everything in between 07:29
30 Internal routing: MAC addresses and NAT 06:53
31 HTTP, WebSockets, TCP and UDP 08:51
32 Communication Standards: REST, GraphQL and GRPC 07:18
33 Head of line blocking 05:16
34 Video transmission: WebRTC and HTTP-DASH 10:09
35 Primary Replica Architectures 03:07
36 WAL and Change Data Capture 04:02
37 Write Amplification and Split Brain 04:04
38 Database Migrations 10:12
39 Migrating the Database 07:50
40 Migration Across Regions 11:24
41 The Oracle and the Timer Wheel 15:54
42 Partitioning and Real-life Optimisations 11:43
43 Security aspects in distributed systems 03:46
44 Token Based Auth 09:11
45 SSO and OAuth 05:02
46 Access Control Lists and Rule Engines 06:21
47 Attack Vectors - Hackers, Developers and Code 04:53
48 How videos are protected inside CDNs 06:32
49 Design an algorithm for an Audio Search Engine 10:36
50 Introduction to design tradeoffs 03:59
51 Pull vs. Push Architectures 12:21
52 Memory vs. Latency 01:44
53 Throughput vs. Latency 08:42
54 Consistency vs. Availability 05:50
55 Latency vs. Accuracy 06:35
56 SQL vs. NoSQL databases 05:49
57 Relations Between Tradeoffs 06:02
58 The Problem of Distributed Consensus 05:29
59 Basic Algorithm 07:47
60 Improving the algorithm 02:58
61 Termination Conditions 07:17
62 Practical Considerations 03:37
63 Introduction to Observability 01:01
64 Logging - Best Practices 02:10
65 Monitoring Metrics 01:27
66 Anomaly Detection: Holt-Winters Algorithm 07:13
67 Root Cause Analysis 04:09
68 Conclusion to Observability 00:37
69 Scope and Requirement setting 00:22
70 Chapter #1: Service Registration and Proxies 14:32
71 Chapter #2: Authentication & Global Caching 09:27
72 Chapter #3: API contracts & Versioning 09:24
73 Chapter #4: Sending, Tagging & Searching Emails 06:05
74 Chapter #5: Contacts & Groups 07:18
75 Requirements of a chess website 11:37
76 Handling connections at scale 13:54
77 Consistent Hashing vs. Sharding 10:14
78 Connection related thundering herds 04:31
79 Request Batching and Conclusion 05:14
80 Live Streaming Requirement Breakdown 05:18
81 Video Ingestion and Transformation 05:09
82 Transferring processed videos to end users 07:55
83 Virtual Advertising for live sports events 07:20
84 Google Docs Requirements 05:53
85 Document Schema 05:42
86 Storing Documents 03:11
87 Version History 05:35
88 Avoiding Thundering Herds in Crons 03:12
89 Compression and Caching 02:48
90 Concurrent Writes with Locks 08:21
91 Operational Transform Overview 07:48
92 Permission Management 06:15
93 Requirements of a cab aggregator 06:43
94 Static Pricing of Rides 08:43
95 Ride Matching 09:05
96 Calculating Estimated Time of Arrival 12:26
97 Matching Drivers with Live Rides 09:53
98 Requirements of a Map application 08:11
99 Routing Challenges in Maps 06:47
100 Partitioning Algorithm: Splitting the graph into regions 05:12
101 Finding the shortest path - A* search 07:39
102 GeoHash and other proximity filters 06:26
103 Detecting traffic jams and broadcasting updates 09:46
104 Calculating an accurate and efficient estimated time of arrival 09:56
105 Calling App Design 14:13
106 Concept #1: Breaking calls into dialogs 06:58
107 Concept #2: The state machine 03:23
108 Concept #3: Charging Users 04:03
109 Concept #4: Consistent Hashing for caching call state 06:19
110 Converting data sources to a lake 06:04
111 The Map Reduce Architecture 03:33
112 Fault tolerance and engineering optimizations 03:04
113 Real time analytics 05:44
114 Ranking restaurants in real time and batch 02:53
115 Introduction to Low Level Design Series 02:22
116 The need for good coding practices 04:08
117 Setting Requirements and Objects 13:05
118 API and Package Structuring 09:51
119 Parent vs. Base class functions 04:09
120 Setting the main method 03:23
121 Debugging the code 09:34
122 Defining responsibilities of AI and Game classes 09:45
123 Unit Tests 05:53
124 Benefits of Single Responsibility Principle 05:01
125 Looking for a Smart AI 05:41
126 The need for stateless move exploration 07:29
127 Prototype Design Pattern 13:30
128 DRY: Dont Repeat Yourself 15:12
129 Iterator Design Pattern 07:23
130 DRY: Extracting Common Pieces 06:56
131 New feature request: Find Forks! 12:10
132 Building a Rule Engine 08:55
133 Builder Design Pattern 06:56
134 Summary: Open-Closed Principle 00:50
135 New feature request: Timers! 08:01
136 Encapsulating responsibilities in objects 10:08
137 Extracting Nested Objects 12:32
138 Having Multiple AI personalities 11:31
139 Singleton and Null Object Design Pattern 09:05
140 Chain of Responsibility Pattern 11:41
141 Interface Segregation Principle 04:20
142 Dependency Inversion Principle 02:58
143 New feature request: Undo Moves with Momento! 10:40
144 Proxy and Flyweight Design Pattern 10:22
145 The Labyrinth: Five Level Deep For-Loops! 10:24
146 State and Strategy Design Pattern 06:43
147 Writing Tests for Timed Games 05:06
148 Factory Design Pattern 09:15
149 Unit Tests and Object Pools 08:34
150 Setting Timed Test Cases 05:23
151 Fixing bugs in Game Logic and Factories 15:46
152 Strategy Design Pattern: Implementation and Benefits 12:44
153 New Feature: Email Notifications 13:03
154 Inheritance vs. Composition 06:36
155 The Publisher Subscriber Model 16:21
156 Problem Statement 03:39
157 Defining objects states and behaviors 10:58
158 Simplified Balances algorithm 05:35
159 APIs and coding requirements 05:32
160 Low Level Design 03:25
161 Coding: Building the service skeleton and defining objects 10:23
162 Coding: Algorithm 04:10
163 Coding: Test cases 06:06
164 Conclusion and Tips 03:03
165 #1: Caching: Engineering requirements 05:24
166 #2: Read your own writes 04:14
167 #3: Defining the core requirements 02:12
168 #4: Asynchronous processing: Keeping threads available 05:16
169 #5: View Consistency through thread assignment 06:14
170 Code #1: Code skeleton for 'Get' and 'Set' 16:59
171 Code #2: Setting up fast evictions 13:27
172 Code #3: Thread Assignment and updating GET + SET 12:59
173 Code #4: Hot loading and Request Collapsing 09:28
174 What is an event bus? 01:23
175 Breaking down engineering requirements 09:56
176 The mechanics of the bus 04:43
177 Why use threads? 04:14
178 Code Skeleton and using an extensible Retry Algorithm 12:20
179 The Keyed Executor 06:14
180 Pull and Push Subscribers 06:56
181 Defining the data structures in the bus 04:00
182 Wrapper Classes 08:26
183 Coding the tests 19:46
184 Conclusion 12:36
185 What will you learn 06:09
186 Rate Limiter Overview 06:51
187 Implementation Details 10:20
188 API Breakdown 09:34
189 Models, Controllers, Packages and ThreadPools 12:01
190 Reading and Writing Data 15:47
191 RateLimiter Client Setup 11:24
192 Sliding Window Algorithm Setup 07:19
193 Dependency Inversion 08:29
194 Sliding Window with Backpressure 10:06
195 Clearing Stale Entries in Sliding Window 05:15
196 January 2022: Datastores and their Tradeoffs 01:15:47
197 March 2022: Threads and Request Collapsing 01:39:28
198 April 2022: Chess Low Level Design 02:00:09
199 May 2022: Message Queues 01:35:28
200 June - Design a Payment System 01:43:41
201 July - Caching, Paxos and Zookeeper 01:23:36
202 Data Corruption and Alerts Monitoring 01:46:47
203 Caching: Doubts and Clarifications 01:40:08
204 August - Database Doubts 01:51:11
205 Design a subscription manager 01:37:45
206 Rule Engines 01:42:15
207 October - Kafka Internals 02:09:44
208 October 2022 - Implementing a File System 01:50:58
209 Pessimistic and Optimistic Locking 01:52:31
210 Producers and Consumers: November Meet 01:00:10
211 IRCTC Algorithm: December 01:07:32
212 Google Docs and Chess Design Queries 01:40:39
213 Jan 2023: DNS, CDNs, and everything in between 01:57:57
214 Jan 2023: API design and other discussions 01:07:09
215 Feb 2023: Permission Management System 01:26:21
216 March 2023: Eventual Consistency Levels 01:27:17
217 March 2023: Fetch top K hits in a distributed system 01:04:07
218 April 2023: Distributed Consensus and Load Balancing 02:01:05
219 April 2023: Graph Databases with Facebook TAO 01:33:43
220 May 2023: The SideCar Pattern 02:10:47
221 May 2023: Permission Management 01:33:49
222 June 2023: Clients, Comments and APIs 01:56:24
223 July 2023: Design an Event Handler 01:37:40
224 July 2023: Highly Scalable Concurrent Booking Systems 02:06:59
225 August 2023 - Google Calendar Low-Level Design 01:44:01
226 August 2023 - Designing IRCTC 01:22:05
227 September - Design Judge Launch 01:47:38
228 September - Tech in a startup 02:15:24
229 October - Live Watch Party Design 02:08:19
230 November - Memcached Reading 01:57:21
231 November - Memcached Revision 02:05:42
232 December: Memcached Paper Reading - 2 02:19:30
233 Monoliths vs Microservices 07:42
234 Horizontal vs Vertical Scaling 07:53
235 Load Balancing 10:14
236 An introduction to distributed systems 08:42
237 Single Point of Failure 06:00
238 Sharding 08:56
239 Service discovery and Heartbeats 05:30
240 Capacity Planning and Estimation: How much data does YouTube store daily? 13:12
241 Content Delivery Networks 11:09
242 API Design Goals 06:22
243 API Design in Practice 08:57
244 The Message Queue: Problem Statement 04:09
245 Asynchronous processing: benefits 05:35
246 Publisher Subscriber Models 11:21
247 Event Driven Architectures 03:36
248 Event Driven Architectures - Advantages 04:57
249 Event Driven Architectures - Disadvantages 05:44
250 Distributed data consistency 05:58
251 Data Consistency across Continents 05:14
252 Leader-follower architectures 04:58
253 Tradeoffs - 2 phase commit protocol 09:31
254 Difference between SQL and NoSQL 09:47
255 Cassandra Internals 07:35
256 Quorom 03:14
257 Write Heavy DB Design 05:29
258 Write Heavy DB Design - Merging Sorted String Tables 05:05
259 Write Heavy DB Design - Query optimisations 06:45
260 Location Representation 08:17
261 Data Structure - Quad Tree 01:51
262 Range Queries and Hilbert Curve 12:00
263 Motivation 06:25
264 Infrastructure Requirements 06:38
265 Practical considerations 05:17
266 Containers: A friendly Introduction 01:49
267 Containers: Usecases 05:36
268 System Requirements 02:49
269 One to one messaging 08:13
270 Last Seen Timestamps 03:39
271 Group Messaging 10:13
272 Requirements 03:57
273 Image Storage: Files vs. Database BLOB 06:49
274 Profile Creation and Authentication 05:48
275 One to One chat messaging 05:08
276 Matching right-swiped users 03:19
277 Serving recommendations to users 08:41
278 Requirements 02:52
279 Designing the Data Schema 06:04
280 Following Users 02:17
281 User Feed Service 05:25
282 Scaling the Instagram news feed 06:15
283 Anomaly Detection 07:26
284 Video Processing 06:11
285 ISP Synergy 04:19
286 System Design Tips 07:37
287 Dos and Don'ts 06:35
288 Online Judge 07:46

Similar courses to System Design Course

Computer Networking

Computer NetworkingOz Nova (csprimer.com)

Duration 23 hours 58 minutes 29 seconds
Advanced Distributed Systems Design

Advanced Distributed Systems DesignUdi Dahan

Duration 32 hours 22 minutes 8 seconds
Refactoring UI - Complete Package

Refactoring UI - Complete Packageadamwathan

Duration 40 minutes 42 seconds
Agile Business Analysis

Agile Business Analysisudemy

Duration 1 hour 35 minutes 36 seconds