Pragmatic System Design

Pragmatic System Design

English | MP4 | AVC 1280×720 | AAC 44KHz 2ch | 85 lectures (4h 27m) | 403 MB

From preparing for System Design interviews to Architecting Real World Systems

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. 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.

What you’ll learn

  • How to solve most popular FANG interview questions
  • Most important scalability concepts
  • Common communication protocols
  • Caching and Redis
  • Concurrency
  • Database design and PostgreSQL
  • Sharding strategies
Table of Contents

Introduction
1 Introduction to Pragmatic System Design
2 Diagram building blocks
3 Diagram flow
4 Making Estimates

Networks
5 Load Balancing
6 CDN

Caching
7 Introduction
8 Caching Strategies
9 Eviction Policies
10 Redis

Queues
11 Introduction
12 Messaging
13 RabbitMQ
14 Kafka

Protocols
15 TCP
16 UDP
17 Summary TCP vs UDP
18 HTTP
19 HTTP – Methods
20 HTTP – Status Codes
21 REST
22 RESTfulness
23 WebSockets
24 Long Polling
25 gRPC
26 GraphQL
27 Summary

Concurrency
28 Concurrency vs Parallelism
29 Processes
30 Threads
31 Thread Pools

Databases
32 Indexes
33 Sharding
34 Consistent Hashing
35 Partitioning
36 CAP Theorem
37 ACID transactions

Architectural Patterns
38 Web Sessions

Design a Taxi Hailing App (aka Uber)
39 Problem Introduction – Design a Taxi Hailing App
40 Driver Locations
41 Storing Locations
42 Taxis Around You
43 Matching
44 Summary – Design a Taxi Hailing App

Design a Chat (aka WhatsApp)
45 Problem Introduction – Design a Chat
46 Basic Design
47 Scaling Reads
48 Sharding Chat Messages
49 Scaling chat using queues
50 Summary – Design a Chat

Design a Web Crawler (aka Google Crawler)
51 Problem Introduction – Design a Web Crawler
52 Basic Design
53 Fetching Content
54 What’s a new URL
55 Uniqueness
56 Priorities
57 Summary – Design a Web Crawler

Design an Auction (aka eBay)
58 Problem Introduction – Design an Auction
59 Basic Design for an Auction
60 Optimistic Locking of Bids
61 Serialisation of Bids
62 Event-Driven Approach for Bids
63 Scaling an Auction
64 Summary – Design an Auction

Design a URL Shortener (aka TinyURL)
65 Problem Introduction – Design a URL Shortener
66 Basic Design for a URL Shortener
67 Short Identifiers
68 Scaling Reads
69 Extra DynamoDB
70 Caching
71 Summary – Design a URL Shortener

Design a Coupon System (aka Groupon)
72 Problem Introduction
73 Basic Design
74 Concurrency
75 Scalability
76 Summary
77 Extra Scaling Using Queues

Design a News Feed (aka Twitter)
78 Problem Introduction – News Feed
79 Basic Design – News Feed
80 Storage Calculations – News Feed
81 Scaling reads
82 Long Term Storage and Short Term Storage
83 Feed Optimisation
84 VIPs
85 Summary – News Feed

Homepage