
Decide functional and non-functional requirements for a newsfeed system, covering creating posts (text, image, video), follow/unfollow, reverse chronological newsfeed, like, comment, and user notifications.
This lecture explains why capacity estimation matters in system design, guiding you to size servers and databases by throughput and storage, manage costs, choose hardware, handle read and write workloads.
Estimate memory as cache memory size and use caches to speed data access. Daily cache memory equals 1% of daily storage, roughly two tb per day.
Learn API design for creating image or video posts. Post to v1/post with user id, description, hashtags, and media URL; upload media to object storage first (S3) before saving data.
Design a rest API to read a user's newsfeed using the get method and the v1/feed/{userId} endpoint, and note that get requests have no body.
Explore the high level design for reading the news feed, detailing the end-to-end flow from api gateway routing to the feed reader service, feeds cache, and cdn-assisted media delivery.
Explain the high level design for liking a post, from the like button through the api gateway and like service to the likes cache and notification via the message queue.
Explore pre signed URLs for direct uploads to object storage, with temporary permissions and signatures that expire in ten minutes, enabling faster, secure media uploads without server mediation.
Estimate storage requirements for video data by calculating 600 MB per video with 0.4 million daily uploads, yielding about 240 TB per day and 876 PB over ten years.
Estimate cache memory by allocating about 1% of total daily storage, yielding roughly 2.4 tb of cache memory per day to speed database access.
Design the api flow for uploading content with a resumable, two-step process: post metadata to v1/videos to obtain a session url, then upload chunks via put.
Design the streaming api by returning a manifest of chunk locations in response to a get request to v1/watch. Clients fetch chunks from a cdn using hls for adaptive streaming.
Explore high level design for uploading content, detailing two-step process where video metadata is submitted via api gateway, routed through a load balancer to content upload service, yielding session url.
The client uploads via a session url; the api gateway routes to the content upload service, which stores in object storage and queues a video id for processing.
Explore how HLS encoding enables adaptive streaming by encoding video chunks to H264 or H265. Integrate encoding after chunking, then apply format and quality conversions before CDN upload.
Define the functional requirements of a tiny url service by outlining core capabilities: generate a short url from a long url, and retrieve the original long url.
Estimate and optimize memory with a cache to speed data access, storing 30 GB daily and expanding the cache as data grows to keep the service fast and efficient.
Explore high level design approach 1 for random string generation to prevent collisions in short URL systems, highlighting cross-server uniqueness challenges.
Coordinate between servers with the Zookeeper service to assign unique number ranges for URL generation, preventing collisions. Servers obtain distinct ranges such as 1–1000 and 1001–2000 to generate numbers sequentially.
Apply database selection guidelines by weighing speed, scale, query pattern, and structure flexibility; for URL mappings, choose a NoSQL key-value store for fast, scalable lookups.
Describe the high level design flow of a rate limiter. A client sends a request; the rate limiter tracks counts and passes allowed requests to the API server, else 429.
Visualize a leaking bucket to understand the leaky bucket algorithm, where a queue with capacity six holds incoming requests, processing four per minute, with overflow rate-limited, unlike the token bucket.
Explore how concurrent requests cause race conditions in a multi-instance rate limiter, showing read-update races on a shared counter and how locks prevent inconsistent increments (with Lua script options mentioned).
Define requirements for a real-time messaging app: one-on-one messaging with text, images, videos and attachments; message status indicators for sent, delivered and read; last seen and online status; group chats.
Design and implement online status and last seen APIs using WebSocket updates, server-stored timestamps, and fetch requests to reveal a user’s current and last active times.
Max sends a message to Emily through the 1:1 WebSocket flow; the message is stored in the messages database with sender, recipient, content, timestamp, and state, then delivered to Emily.
Understand the high level design of group messaging, from sending a group message through a WebSocket pipeline to delivering to group members via message service, group service, and queues.
Identify non-functional requirements such as availability, low latency, and scalability, and explain how they shape performance and user experience in search systems. Emphasize redundancy and failover to handle real-world load.
Estimate memory needs by caching the top 5% of data, about 1 GB per day for popular tweets. Cache memory speeds searches and reduces database load as data grows.
Explore Elasticsearch as a supercharged search engine that handles massive data in real time, supports fuzzy search for typos, and ranks results by relevance.
Estimate network capacity by analyzing ingress and egress data flows, with daily inflow of 14.61 GB and egress of 17.64 TB, about 204 MB per second.
Learn a three-step guest booking flow: create a booking session with post to v1/booking-sessions, process payment via a gateway like PayPal, then finalize the booking with a token to v1/bookings.
publish a property by posting to api gateway, upload images via pre signed urls to object storage and cdn, then add the property with image urls to properties db.
Explore a high level design flow for searching properties: from guest query through API gateway and search service to Elasticsearch, with pre-processed search data for fast, fuzzy, and range queries.
Understand the high level design flow for a guest viewing a property: API gateway to property service, fetches details from the properties DB, and loads images from the CDN.
Explore how concurrent bookings are handled in a high-traffic system like Airbnb, comparing pessimistic locking with optimistic locking to prevent duplicates while boosting throughput.
Design a high level, notification system by splitting into a notification handler and dedicated iOS and Android delivery services, with SMS and email channels, leveraging APNs, FCM, Twilio, and MailChimp.
Learn five guidelines for choosing SQL or NoSQL databases, considering fast data access, scale, fixed versus flexible structures, and query complexity, with examples like users info and user preferences.
Learn how Apache Flink processes logs from Kafka in real time by parsing, validating, enriching, filtering, aggregating, and routing to OpenSearch, Prometheus, and S3 for dashboards and alerts.
Transform real-time data with Apache Flink, reading from Kafka, enriching with derived fields, filtering fields, and applying tumbling, hopping, and sliding windows to compute latency and error rate.
Welcome to System Design Masterclass (2026) - Your Shortcut to System Design Interview Success!
Are you ready to master system design for interviews and real-world applications? This course will equip you with a proven thinking model and a structured template to tackle any system design problem.
What You'll Learn:
System Design Template: We use a specific template (Defining Requirements, Capacity Estimation, API Design, High-Level Design, and Deep Dive) to solve any system design challenge. This structured template will prepare you to approach any design challenge during your interview.
8+ Real System Designs: Explore actual systems like YouTube, Newsfeed, WhatsApp, and more. You’ll learn to design these large-scale systems in depth preparing you for your interviews.
Constantly Growing Content: This Masterclass evolves with you! We continuously add new system designs and content, making this course your go-to resource for system design mastery.
Why Enroll?
Get interview-ready with FAANG engineers who know what it takes to excel.
Build scalable and robust systems using the same techniques employed by top tech companies.
Master the building blocks of software architecture, from databases to APIs and microservices.
Stay ahead with an ever-growing library of new system designs and resources to keep your skills sharp.
Who Should Take This Course?
Software engineers looking to master system design interviews.
Developers aiming to design large-scale systems for real-world applications.
Aspiring architects who want to sharpen their thinking and system design skills.
Who Should NOT Take This Course?
Individuals looking to dive deep into the internal workings of specific components, as this course focuses on the concepts necessary for interviews.
Those expecting in-depth explanations of how components like caches or message queues work internally—we teach their usage in system design but not their underlying mechanisms.
Whether you’re an aspiring software engineer / architect, preparing for system design interviews, or working on real-world projects, this course will give you the knowledge to succeed and grow in your career.
Enroll today and start building the confidence and expertise to solve any system design problem!