Fundamentals & Concepts
The building blocks every distributed system stands on — scaling, caching, storage and the trade-offs between them.
High Level Design
System Architectural Styles
Event-Driven Architecture in an E-commerce SystemServerless ArchitectureStateless and Stateful SystemsStateful Vs Stateless ArchitecturePub/Sub ArchitectureMonolithic ArchitectureMicroservicesMonolithic Vs Microservices ArchitectureEvent-Driven Architecture
Scalability
Designing Highly Scalable SystemsPrimary Scalability Bottlenecks in System DesignAmdahl's LawScalability in System DesignHorizontal and Vertical ScalingChoosing the Right Scalability Approach
Latency & Throughput
Caching
CDN Vs Edge ServerCache Eviction PoliciesCold and Warm Cache in System DesignCaching Strategies (Cache Aside, Write Through, etc.)Caching in System DesignDistributed CacheDesign Distributed CacheEdge Caching
Load Balancing
Load BalancerTypes of Load BalancerLoad Balancing AlgorithmsConcurrency and ParallelismStateless Vs Stateful Load BalancingLoad Balancing Vs FailoverConsistent Hashing
Consistency
PACELC TheoremACID vs BASEStrong vs Eventual ConsistencyConsistency in System DesignConsistency patternCAP Theorem
Reliability
Retry Patterns and Exponential BackoffIdempotencyHeartbeatReliability in System DesignFault Tolerance in System DesignCircuit Breaker PatternBulkhead Pattern
Maintainability
Replication
Replication Patterns (Master Slave, Master Master)Database Replication in System DesignTypes of Database Replication
Partitioning
Sharding (Data Partitioning)Consistent HashingDatabase ShardingData Partitioning
Modeling & Storage
Normalization Process in DBMSDenormalization in DatabasesNormalization vs DenormalizationPolyglot PersistenceVector DatabasesDesigning the DatabaseTypes of DatabaseChoosing a Database - SQL or NoSQLFile and Database Storage SystemsBlock, Object, and File Storage
Database Internals
Write Ahead Logging (WAL)Bloom FiltersSQL Query OptimizationIntro to RedisDatabase Indexing (B Trees, LSM Trees)
API Gateway, Message Queues & Rate Limiting
Rate Limiting AlgorithmPub Sub (Publish Subscribe)Dead Letter QueuesAPI GatewayMessage QueuesRate Limiting
Protocols
HTTP/2 and HTTP/3 (QUIC)gRPC vs RESTWebSocket and Server-Sent Events (SSE)Communication ProtocolsLong Polling and Short PollingWebsocketsTCP vs UDP
DNS & CDN
Time to Live(TTL)Content Delivery Network(CDN)Domain Name SystemDNS CachingFlushing(Reset) of DNS Cache
Event-Driven Architecture
IntroductionEvent Sourcing PatternEvent Sourcing Vs Event StreamingEvent-Driven APIs in Microservice ArchitecturesError Handling in Event-Driven ArchitectureRestore State in an Event-Based, Message-Driven Microservice Architecture on Failure ScenarioEvent-Driven Architecture Patterns in Cloud Native ApplicationsRequest-driven Vs Event-driven MicroservicesEvent-Driven Architecture Vs Microservices ArchitectureMessage-Driven Architecture Vs Event-Driven Architecture
Distributed System Design
IntroductionConsensus Algorithms in Distributed SystemDistributed TracingSecure Communication in Distributed SystemDesign Issues of Distributed SystemGossip ProtocolLeader Election (Paxos, Raft)Distributed Transactions (SAGA Pattern)Two Phase Commit (2PC)
Low Level Design (LLD) - Core Concepts
Low Level Design or LLDDifference between High Level Design(HLD) and Low Level Design(LLD)Object-Oriented Programming(OOP) ConceptsModularity and Interfaces
Design Principles
Security Measures
Security Measures in System DesignAuthentication and AuthorizationSecure Socket Layer (SSL) and Transport Layer Security (TLS)Secure Software Development Life Cycle (SSDLC)Data Backup and Disaster RecoveryOAuth 2.0 and OIDCTLS/SSL HandshakeZero Trust Security
Cost & Performance Optimizations
Cost Vs PerformanceSoftware Cost EstimationPerformance Optimization Techniques