System Design
System Design & Systems Programming
Core concepts and topics in system design, operating systems, and distributed systems that I'm studying
🚧 This page is still under construction. More content and notes will be added soon.
System Design
Interview foundations and key infrastructure technologies that show up repeatedly in backend and large-scale system design
Networking Essentials
HTTP over TCP by default, latency and timeouts, and when to use WebSockets or SSE for real-time updates
API Design
Resource-oriented REST endpoints, pagination, idempotency, and keeping API design proportional in interviews
Data Modeling
Choosing entities, keys, relationships, normalization versus denormalization, and matching storage to access patterns
Caching
Cache-aside with TTLs, invalidation on writes, and reducing database read pressure without hiding consistency tradeoffs
Sharding
Picking a shard key, balancing distribution against query locality, and avoiding hotspots as data grows
Consistent Hashing
Distributing keys across nodes while minimizing key movement when servers are added or removed
CAP Theorem
Reasoning about consistency, availability, and network partitions when distributed systems fail
Redis
In-memory cache, rate limiter, lock primitive, and fast ephemeral state when sub-millisecond access matters
Elasticsearch
Full-text search, inverted indexes, relevance scoring, and eventually consistent secondary indexing
Kafka
Durable event log, partitions, consumer groups, and stream replay for analytics or async pipelines
API Gateway
Entry point for routing, auth, rate limiting, and aggregating cross-cutting concerns at the edge
Cassandra
Wide-column storage built for high write throughput, tunable consistency, and multi-node availability
DynamoDB
Managed key-value and document store optimized around access patterns, partition keys, and predictable scale
PostgreSQL
Relational default for strong consistency, rich queries, transactions, and mature indexing support
Flink
Stream processing engine for event-time windows, stateful computations, and low-latency data pipelines
ZooKeeper
Coordination service for leader election, configuration, and distributed locks in older distributed stacks
Operating Systems
Process management, memory systems, file systems, and kernel internals
Process Scheduling & Concurrency
CPU scheduling algorithms, context switching, threads, and synchronization primitives
Memory Management
Virtual memory, paging, segmentation, and memory allocation strategies
File Systems
Inodes, directory structures, journaling, and distributed file systems
I/O Subsystems
Device drivers, interrupt handling, DMA, and storage hierarchies
Distributed Systems
Consensus algorithms, distributed transactions, and fault tolerance
Consensus Algorithms
Raft, Paxos, Byzantine fault tolerance, and leader election
Distributed Transactions
Two-phase commit, Saga pattern, and eventual consistency
Service Discovery & Configuration
Service mesh, API gateways, and configuration management
Monitoring & Observability
Distributed tracing, metrics collection, and logging strategies
Learning Notes
Detailed notes and insights are kept in a private journal for personal reference.
Access Private Notes