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
Requirements
Computer hardware basics
Basic SQL knowledge for some of the examples
Description
Prepare yourself for system design interviews and leverage your knowledge in real-world scenarios with my comprehensive course. Gain the confidence and skills to excel in system design discussions, whether for job interviews or day-to-day work.In today’s industry, designing new systems is a rare opportunity for most engineers. Architecture discussions often involve only a select few individuals within companies. However, when it comes to interviews, the expectation is that everyone is a system design master. My course bridges this gap by covering essential topics and providing effective approaches to common system design interview questions.Additionally, this course offers senior engineers an alternative perspective on system design. I encourage open discussions and aim to remove the stigma around imperfect real-world designs.Choose your preferred method of course consumption based on your availability. If you have ample time, follow the logical order of my videos for a step-by-step learning experience, gradually building your confidence.Alternatively, if time is limited or you’re not currently actively preparing for interviews, you can start with the design videos. If any unfamiliar topics arise, I provide supplementary videos or links to relevant articles.System design interviews typically evaluate breadth of knowledge first and depth of knowledge second. Thus, I’ve kept the theoretical portion of each topic concise, aligning with interviewers’ expectations.Remember, there’s no such thing as a perfect design. Every system involves trade-offs and compromises. Moreover, each design is unique, reflecting your areas of expertise. Approach my videos as a collection of ideas rather than the definitive way to design a system.I value your input! If you have additional system design interview questions or topics you’d like me to address, please let me know. Your feedback shapes my content and ensures its relevance to your needs.
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 | 666.59 MB
Created by: Alexey Soshin
You Can See More Courses in the Developer >> Greetings from CourseDown.com