Pragmatic System Design

4h 28m 50s
English
Paid

This course aims to prepare you for system design interviews, as well as discusses how you could apply this knowledge in your day to day job. In real world, most of the engineers don't get to design new systems often. Some don't get to design them at all. In many companies architecture is something only a few individuals do regularly. But when it comes to interviewing, we suddenly expect everyone to be master in system design.

Read more about the course

This course tries to cover some of the basic topics, as well as provide you with my approach to some of the most common system design interview questions.

Second purpose of this course is to provide senior engineers with an alternative view to system design. What I see in the industry is that we don't discuss design among ourselves much. It becomes a sensitive topic, because no real world design is perfect. And that's something I hope to change.

There are two ways I suggest to consume the course. If you have plenty of time, just watch it start to finish. I tried to construct it in a logical order, so you will accumulate more and more confidence as you go.

Alternatively, if you are short on time, or if you aren't preparing actively for interviews at the moment, you can start with the design videos, and if you aren't familiar with one of the topics I discuss, there should be either a video for that or a link to a relevant article.

The goal of system design interview is usually to cover multiple topics. It evaluates the breath of knowledge first, depth of knowledge second. For that reason, I tried to keep the theoretical part on each topic rather brief. That is - it's as deep as I expect as an interviewer from my candidates.

Finally, I will repeat myself and say that no design is perfect. There are always tradeoffs, there are always compromises that you must make. And each design is personal. It depends on what are your areas of expertise. When you watch my videos, please don't treat them as the ultimate way I would design a system, but more as a collection of ideas of how to approach the topic.


Watch Online Pragmatic System Design

Join premium to watch
Go to premium
# Title Duration
1 Introduction to Pragmatic System Design 03:50
2 Diagram building blocks 02:31
3 Diagram flow 01:11
4 Making Estimates 03:28
5 Load Balancing 05:53
6 CDN 04:19
7 Introduction 01:46
8 Caching Strategies 03:12
9 Eviction Policies 03:23
10 Redis 03:58
11 Introduction 04:32
12 Messaging 02:29
13 RabbitMQ 05:09
14 Kafka 03:57
15 TCP 04:03
16 UDP 03:09
17 Summary: TCP vs UDP 00:56
18 HTTP 01:05
19 HTTP - Methods 01:56
20 HTTP - Status Codes 02:36
21 REST 01:14
22 RESTfulness 03:30
23 WebSockets 03:36
24 Long Polling 02:54
25 gRPC 04:13
26 GraphQL 04:54
27 Summary 01:58
28 Concurrency vs Parallelism 02:29
29 Processes 06:40
30 Threads 03:52
31 Thread Pools 01:17
32 Indexes 07:09
33 Sharding 10:25
34 Consistent Hashing 03:59
35 Partitioning 10:29
36 CAP Theorem 04:36
37 ACID transactions 04:53
38 Web Sessions 05:35
39 Problem Introduction - Design a Taxi Hailing App 05:34
40 Driver Locations 04:40
41 Storing Locations 03:54
42 Taxis Around You 05:06
43 Matching 03:29
44 Summary - Design a Taxi Hailing App 00:49
45 Problem Introduction - Design a Chat 01:37
46 Basic Design 03:25
47 Scaling Reads 02:11
48 Sharding Chat Messages 02:00
49 Scaling chat using queues 02:18
50 Summary - Design a Chat 01:25
51 Problem Introduction - Design a Web Crawler 02:30
52 Basic Design 02:13
53 Fetching Content 03:00
54 What's a "new" URL? 03:12
55 Uniqueness 04:14
56 Priorities 05:41
57 Summary - Design a Web Crawler 01:06
58 Problem Introduction - Design an Auction 01:47
59 Basic Design for an Auction 02:15
60 Optimistic Locking of Bids 01:45
61 Serialisation of Bids 02:08
62 Event-Driven Approach for Bids 02:55
63 Scaling an Auction 01:42
64 Summary - Design an Auction 00:53
65 Problem Introduction - Design a URL Shortener 01:23
66 Basic Design for a URL Shortener 01:59
67 Short Identifiers 02:48
68 Scaling Reads 02:27
69 Extra: DynamoDB 01:06
70 Caching 02:03
71 Summary - Design a URL Shortener 01:09
72 Problem Introduction 01:42
73 Basic Design 04:38
74 Concurrency 04:46
75 Scalability 04:54
76 Summary 01:01
77 Extra: Scaling Using Queues 02:13
78 Problem Introduction - News Feed 02:13
79 Basic Design - News Feed 02:05
80 Storage Calculations - News Feed 01:17
81 Scaling reads 03:48
82 Long Term Storage and Short Term Storage 02:23
83 Feed Optimisation 01:26
84 VIPs 03:15
85 Summary - News Feed 01:19

Similar courses to Pragmatic System Design

JavaScript & LeetCode | The Ultimate Interview Bootcamp

JavaScript & LeetCode | The Ultimate Interview Bootcampudemy

Category: JavaScript, Preparing for an interview
Duration 4 hours 49 minutes 58 seconds
Coding Interview Class (Back To Back SWE)

Coding Interview Class (Back To Back SWE)backtobackswe.com

Category: Preparing for an interview
Duration 33 hours 12 minutes 16 seconds
Ace Your Tech Interview And Get A Job As A Software Engineer

Ace Your Tech Interview And Get A Job As A Software EngineerAlex Chiou

Category: Preparing for an interview
Duration 4 hours 38 minutes 35 seconds
Algorithms and Data Structures for Beginners

Algorithms and Data Structures for Beginnersneetcode.io

Category: Preparing for an interview
Duration 8 hours 22 minutes 4 seconds
Master the Coding Interview Data Structures Algorithms

Master the Coding Interview Data Structures Algorithmsudemyzerotomastery.io

Category: Preparing for an interview
Duration 19 hours 27 minutes 7 seconds
The Coding Interview Bootcamp: Algorithms + Data Structures

The Coding Interview Bootcamp: Algorithms + Data StructuresudemyStephen Grider

Category: Preparing for an interview
Duration 12 hours 52 minutes 17 seconds
Software Architecture & Design of Modern Large Scale Systems

Software Architecture & Design of Modern Large Scale Systemsudemy

Category: Others, Preparing for an interview
Duration 6 hours 57 minutes 25 seconds
Professional Developer Resume

Professional Developer ResumeGeorge Moller

Category: Preparing for an interview
Duration