Pragmatic System Design

From preparing for System Design interviews to Architecting Real World Systems
Pragmatic System Design
File Size :
620.75 MB
Total length :
4h 53m

Category

Instructor

Alexey Soshin

Language

Last update

4/2023

Ratings

4.6/5

Pragmatic System Design

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

Pragmatic System Design

Requirements

Computer hardware basics
Basic SQL knowledge for some of the examples

Description

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.If there are more system design interview questions you’d like me to solve or additional topics you’d like me to cover, let me know!

Overview

Section 1: Introduction

Lecture 1 Introduction to Pragmatic System Design

Lecture 2 Diagram building blocks

Lecture 3 Diagram flow

Lecture 4 Making Estimates

Section 2: Networks

Lecture 5 Load Balancing

Lecture 6 CDN

Section 3: Caching

Lecture 7 Introduction

Lecture 8 Caching Strategies

Lecture 9 Eviction Policies

Lecture 10 Redis

Section 4: Queues

Lecture 11 Introduction

Lecture 12 Messaging

Lecture 13 RabbitMQ

Lecture 14 Kafka

Section 5: Protocols

Lecture 15 TCP

Lecture 16 UDP

Lecture 17 Summary: TCP vs UDP

Lecture 18 HTTP

Lecture 19 HTTP – Methods

Lecture 20 HTTP – Status Codes

Lecture 21 REST

Lecture 22 RESTfulness

Lecture 23 WebSockets

Lecture 24 Long Polling

Lecture 25 gRPC

Lecture 26 GraphQL

Lecture 27 Summary

Section 6: Concurrency

Lecture 28 Concurrency vs Parallelism

Lecture 29 Processes

Lecture 30 Threads

Lecture 31 Thread Pools

Section 7: Databases

Lecture 32 Indexes

Lecture 33 Sharding

Lecture 34 Consistent Hashing

Lecture 35 Partitioning

Lecture 36 CAP Theorem

Lecture 37 ACID transactions

Section 8: Architectural Patterns

Lecture 38 Web Sessions

Lecture 39 Serialization

Lecture 40 CQRS

Section 9: Design a Taxi Hailing App (aka Uber)

Lecture 41 Problem Introduction – Design a Taxi Hailing App

Lecture 42 Driver Locations

Lecture 43 Storing Locations

Lecture 44 Taxis Around You

Lecture 45 Matching

Lecture 46 Summary – Design a Taxi Hailing App

Section 10: Design a Chat (aka WhatsApp)

Lecture 47 Problem Introduction – Design a Chat

Lecture 48 Basic Design – Chat

Lecture 49 Scaling Reads

Lecture 50 Sharding Chat Messages

Lecture 51 Scaling chat using queues

Lecture 52 Summary – Design a Chat

Section 11: Design a Web Crawler (aka Google Crawler)

Lecture 53 Problem Introduction – Design a Web Crawler

Lecture 54 Basic Design – Web Crawler

Lecture 55 Fetching Content

Lecture 56 What’s a “new” URL?

Lecture 57 Uniqueness

Lecture 58 Priorities

Lecture 59 Summary – Design a Web Crawler

Section 12: Design an Auction (aka eBay)

Lecture 60 Problem Introduction – Design an Auction

Lecture 61 Basic Design for an Auction

Lecture 62 Optimistic Locking of Bids

Lecture 63 Serialisation of Bids

Lecture 64 Event-Driven Approach for Bids

Lecture 65 Scaling an Auction

Lecture 66 Summary – Design an Auction

Section 13: Design a URL Shortener (aka TinyURL)

Lecture 67 Problem Introduction – Design a URL Shortener

Lecture 68 Basic Design for a URL Shortener

Lecture 69 Short Identifiers

Lecture 70 Scaling Reads

Lecture 71 Extra: DynamoDB

Lecture 72 Caching

Lecture 73 Summary – Design a URL Shortener

Section 14: Design a Coupon System (aka Groupon)

Lecture 74 Problem Introduction

Lecture 75 Basic Design

Lecture 76 Concurrency

Lecture 77 Scalability

Lecture 78 Summary

Lecture 79 Extra: Scaling Using Queues

Section 15: Design a News Feed (aka Twitter)

Lecture 80 Problem Introduction – News Feed

Lecture 81 Basic Design – News Feed

Lecture 82 Storage Calculations – News Feed

Lecture 83 Scaling reads

Lecture 84 Long Term Storage and Short Term Storage

Lecture 85 Feed Optimisation

Lecture 86 VIPs

Lecture 87 Summary – News Feed

Section 16: Design a Ticketing System

Lecture 88 Problem Introduction – Ticketing System

Lecture 89 Basic Design – Ticketing System

Lecture 90 Checking Tickets Count

Lecture 91 Handling payments

Lecture 92 Scaling ticketing system

Lecture 93 Conflict resolution

Lecture 94 Summary – Ticketing System

Section 17: Final words

Lecture 95 Final words

Software engineers of all levels preparing for System Design interviews,Senior engineers that are looking to make the next step in their career,Software architects that are looking to broaden their knowledge

Course Information:

Udemy | English | 4h 53m | 620.75 MB
Created by: Alexey Soshin

You Can See More Courses in the Developer >> Greetings from CourseDown.com

New Courses

Scroll to Top