Background image

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.

24 topics across 3 major areas

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

Learning Notes

Detailed notes and insights are kept in a private journal for personal reference.

Access Private Notes