
Explore scalability, availability, data consistency, and reliability as you design scalable systems, assess downtime impact and maintenance cost, and balance throughput with low latency.
Discover how scalable distributed systems handle growing load by comparing vertical and horizontal scaling, and understand why horizontal scaling reduces the risk of a single point of failure.
Compare vertical and horizontal scaling by showing how vertical scaling adds resources to a single machine, while horizontal scaling adds nodes to a cluster, highlighting resilience and data consistency trade-offs.
Explore system availability, defined as the probability the system stays up when needed. Understand how downtime duration and recovery time affect user experience and revenue for online apps.
Explore high availability patterns with active-active master-master and master-slave configurations. Use load balancers, heartbeats, and synchronous versus asynchronous communication to improve throughput, response time, and resilience against node failures.
Explore how availability is calculated, compare downtime guarantees like 99.9% and 99.99%, and explain how redundancy via master-master and master-slave configurations achieves high availability with cost and complexity tradeoffs.
Introduces data consistency by syncing replicated data across a multi-node cluster to maintain availability. Shows how uneven update propagation yields reads that differ by replica, creating inconsistency.
Explore data-centric consistency with replicated local copies and a single distributed data source, and examine client-centric models that favor eventual convergence and time-based writes for performance.
Compare data-centric and client-centric consistency models, from strict data consistency to eventual and weak consistency, and their tradeoffs for throughput and latency.
Recognize that reliability is the probability a distributed system produces correct outputs over time, unlike availability. Plan for partition tolerance to maintain consistency during network splits.
Explore the CAP theorem by weighing CP configurations for strong consistency during partitioned networks against AP configurations that prioritize availability, illustrated by banking data and movie ratings.
Explore how system infrastructure combines physical and virtual resources to support data flow, covering compute, storage, and network resources, datacenter or decentralized across several data centers, virtualization, and containerisation.
Threads are units of execution within a process, sharing memory and resources. Each thread has its own stack; multithreading enables concurrency, but failures can affect others, and communication is slow.
Explore how cpu cores and dual cores enable parallel processing, letting the operating system run multiple processes at once, and how hyper threading creates logical cpus.
Explain how multiple processors enable true parallelism, while a single processor interleaves tasks with time slices to create the illusion of concurrency.
Discover how a memory hierarchy based on response time shapes storage design in high level system design, from registers and CPU cache to main memory and secondary storage.
Compare random access memory with nonvolatile hard disk storage, highlighting random access memory's ultra-fast latency and volatile data persistence versus the disk's sequential reads, block transfers, and mechanical access.
Explore virtual memory, where the cpu uses logical addresses mapped to physical ram, as the os divides memory into four kilobyte pages and swaps them to disk.
San storage separates secondary storage to simplify management in large-scale systems, enabling interconnected high-performance network storage devices to serve multiple servers and allow access as if directly attached.
Explore how raid storage uses multiple disks to improve throughput and tolerate failures through striping, mirroring, and parity across levels 0, 1, 5, and 10.
Explore computer networks and distributed systems, defined as multiple computers working together to appear as a single interface, with goals of reliability, security, consistency, scalability, performance, and transparency.
Explore bare metal servers as single-tenant physical machines with direct resource access and improved performance. Yet procurement costs and idle resources increase overhead and reduce scalability.
Explore virtualization with a hypervisor that runs multiple virtual machines on shared physical hardware, enabling various operating systems, migrated legacy apps, increased utilization, and isolation of tasks.
Containerization isolates each application in lightweight environments on the same physical server, enabling quick deployment and sharing of small container images, while introducing security risks and os limitations.
Review covers cpu architecture, processes and threats, and difference between concurrency and parallelism, storage concepts like primary versus secondary storage and SAN, with RAZVAN disks for apps, virtualization, and containers.
Explore fundamental networking concepts in distributed systems, including switches, routers, hubs, subediting, and NAT, DNS, and network caching. Learn how load balancers, proxy servers, AZN, and VPNs support scalable design.
Explore the OSI model and its seven layers—application, presentation, session, transport, network, data link, and physical—and how they enable vendor-neutral, interoperable communication with IP, MAC, TCP, and UDP.
Learn the difference between switches and routers, how switches map MAC addresses for local network delivery, and how routers use IP addresses to route data across networks.
Explain how a local network uses private IPs and a router's public IP to access the internet, representing the whole network with a single public IP.
Explore how network address translation enables a router to act as an intermediary between the internet and a local network, allowing many devices to share one public IP.
Learn how dynamic IP address assignment allocates unique local IPs from a router’s predefined pool using the dynamic host configuration protocol, auto-assigning and reclaiming addresses as devices connect and disconnect.
Learn how a content delivery network caches static assets—images, stylesheets, JavaScript, and videos—across globally distributed edge servers and pops to cut latency and bandwidth costs.
Explain how a CDN edge serves static content by checking cache, fetching from the origin when needed, and caching responses to cut latency.
Distribute network traffic across a server pool to improve responsiveness and availability, with a load balancer acting as traffic police between clients and servers to enable scaling out.
Load balancers automatically redirect traffic to online servers when one fails, distribute requests across multiple servers to prevent overload, and perform health checks to remove unresponsive nodes from the pool.
Explore how load balancers assign traffic using randomized, least load, round-robin, weighted round-robin, and cookie-based sticky session algorithms to evenly distribute requests among similar-configuration nodes.
Explore how the round robin load balancing algorithm distributes requests cyclically across identical servers, its limitations with uneven resources, and how to assign weights to favor higher-capacity nodes.
Analyze why identical servers become unevenly loaded as some connections stay active longer. Use the least connection algorithm to route new connections to the server with the fewest current connections.
Examine the sticky session (session persistence) algorithm in load balancing, ensuring all requests for a session land on the same physical server to leverage cached data and boost performance.
Compare L4 vs L7 load balancing, explaining how L4 routes by IP address at the network layer and performs network address translation, while L7 inspects application content to route intelligently.
Explore how proxy servers act on behalf of clients, serving as intermediaries to forward requests and responses, and understand forward and reverse proxies that add structure to a distributed system.
Explain how a forward proxy acts as a middleman between clients and origin servers, with three components, request forwarding, and uses for filtering, bypassing restrictions, and caching.
Understand how a reverse proxy sits in front of an origin server to intercept requests, hide the origin IP, and use caching and load balancing to improve security and performance.
API gateways act as a reverse proxy between clients and services, routing requests, handling authentication, SSL termination, and rate limiting while decoupling clients from services.
Understand how VPNs create secure connections, encrypt traffic, and hide your IP on public Wi-Fi, since they operate at the operating system level and proxies do not.
Apply consistent hashing to distribute keys across multiple servers, reduce hot spots, and enable ring-based data placement in memcache deployments.
Explore how operating systems manage data through filesystems, then examine distributed filesystems, indexing, databases, and caching solutions to understand data persistence.
Explore how file systems bridge applications and hardware by organizing data in directories and supporting open and read operations, while distinguishing logical and physical layers and their roles.
Explore how directories organize files into a tree-like structure from the root slash, enabling easy retrieval and navigation of user data, executables, and libraries within the Linux file system hierarchy.
Explore the major file system types across Windows, Linux, and Mac, from fat and ntfs to ext, noting how metadata, allocation, and root file system roles shape performance and compatibility.
Explore distributed file systems as client-server architectures enabling remote file access and processing. Understand scalability, fault tolerance, and concurrent access, plus block-level writes and consistency challenges.
Explore replication and partitioning in distributed file systems, comparing master/slave replication for reliability and availability with horizontal data partitioning to scale, balance load, and improve manageability.
Explore indexing to boost database performance by mapping a sorted column to disk data, enabling logarithmic searches and highlighting tradeoffs in storage and dual write operations.
Explore how databases improve data persistence and retrieval with logical data grouping, comparing relational and non-relational systems, and understanding tradeoffs between write and read optimizations.
Compare relational SQL databases with NoSQL options to decide when to use structured data and explore key value, document, and wide column models for scalability and availability.
Compare acid and base database models, detailing atomicity, consistency, isolation, and durability, against eventual consistency and availability to explain scalability tradeoffs and reliability implications.
Leverage caching to maximize resource use and enable scalable, low-latency access as you horizontally scale across servers, using locality of reference near the front end.
Survey cache basics: cache hits and misses, writing to the database directly vs through the cache, ttl-based invalidation, write-through and write-back schemes, and consistency with latency trade-offs for read-heavy workloads.
Explore how caches manage limited space by applying eviction policies such as first in, first out; last in, first out; least recently used; least frequently used; and random replacement.
Explore how distributed systems use remote procedure calls to invoke remote procedures, featuring client, server, stub, and RPC runtime, translating arguments and exchanging request and return messages over the transport layer.
Rest is a client server protocol that keeps interactions stateless and cacheable, uses a uniform interface and a layered design to separate interface from implementation, and supports on demand extension.
Explore how rest treats any information that can be named as a resource, identified by uniform resource identifiers, with resource state and representation exchanged over http using get and post.
Explore messaging queues as the core point-to-point communication between producers and consumers in distributed systems, storing messages on a queue for asynchronous processing.
Explore asynchronous message queues that decouple producers and consumers, enable enqueueing without waiting, support scalable, reliable processing across distributed systems.
Explore pub/sub systems, where producers publish to topics and subscribers receive broadcasts, with multiple topics, filtering, and loose coupling that enables scalable, parallel message delivery.
Explore how websockets enable bidirectional, full-duplex communication with a persistent connection and a one-time handshake, reducing latency versus traditional http requests in chat apps.
Review remote procedure calls (RPC) and REST principles, including resources and RESTful methods. Explore messaging queues and publish-subscribe systems, then compare WebSocket with HTTP for low-latency performance.
This course in introduction to the fundamentals of High-Level System Design. Whether you are an undergrad who wants to learn more about a distributed system or an aspirant to crack the system design interview in one of the top tech companies - this course is for you!
The course starts by higlighting some of the considerations and tradeoffs to be made while designing a large scale system. We are gonna cover the topics of Scalability, Reliability, Availability, and Performance.
Next, we dwell on the key system resources like - compute, storage, and network and how they can be scaled in a large scale system. We then cover some of the building blocks of large scale systems like Load balances, Proxies, Gateways, Caching solution and Databases
Finally, we wrap up with an introduction to inter-process communication in large scale applications. This is key to architecting large scale micro-service-based applications
This course is designed keeping in mind the current trends in computing is filled with real-world examples. The course has quizzes at the end of each topic to keep you engaged throughout.
I'm looking forward to you joining me on this journey of unravelling the art of designing large scale systems. Let's get started!