System Design Glossary
A
Category: databases and storage.
ACID is the set of guarantees a database transaction gives: Atomicity (all of the writes happen or none do), Consistency (the data moves from one valid state to another), Isolation (concurrent transactions do not see each other's half-finished work) and Durability (once committed, the data survives a crash). Relational databases such as PostgreSQL and MySQL are built around it.
Category: availability and reliability.
Two ways to run redundant copies of a component or a whole site. Active-passive keeps a standby that takes over only when the primary fails. Active-active serves traffic from all copies at the same time, which uses the hardware fully but means writes may happen in several places at once.
Category: media and content delivery.
A way of delivering video in which the file is transcoded into several quality levels, cut into short segments (typically 2 to 10 seconds) and described by a manifest. The player downloads the segments over plain HTTP and switches quality as the network allows. HLS (Apple) and MPEG-DASH are the two common formats.
Category: networking and communication.
A single entry point in front of a set of backend services. It routes requests to the right service and handles cross-cutting concerns such as authentication, rate limiting, request logging, TLS termination and sometimes response aggregation. Examples: Amazon API Gateway, Kong, Apigee, NGINX used as a gateway.
Category: architecture patterns.
Doing work outside the request-response path: the server accepts the request, puts a job on a queue, replies immediately, and workers finish the job later. Sending e-mails, resizing images, generating reports and updating search indexes are typical examples.
Category: scalability.
Adding or removing instances of a service automatically based on a signal such as CPU load, request rate, queue length or a schedule. Cloud platforms and Kubernetes provide it for stateless workloads.
Category: availability and reliability.
The fraction of time a system is able to serve requests, usually written as a percentage. Each extra nine cuts the allowed downtime by ten: 99% allows about 3.65 days of downtime a year, 99.9% about 8.8 hours, 99.99% about 53 minutes and 99.999% about 5 minutes. Availability of a chain of components is the product of their individual availabilities, so adding dependencies lowers it; redundant parallel components raise it.
Category: availability and reliability.
Cloud providers group their data centres into regions (a geographic area such as Frankfurt or Virginia) made of several availability zones (physically separate data centres with independent power and networking, connected by fast links). A failure of one zone should not take down the others.
B
Category: interview method.
Rough arithmetic, done out loud, that turns the requirements into numbers: daily and peak requests per second, storage per year, bandwidth, cache size. The goal is the right order of magnitude, not precision.
Category: availability and reliability.
A mechanism by which a slow consumer signals a fast producer to slow down, instead of letting unbounded work pile up in memory or in queues until something falls over. Bounded buffers, blocking writes, TCP flow control and "429 Too Many Requests" responses are all forms of backpressure.
Category: databases and storage.
The counterpart of ACID for systems that favour availability: Basically Available (the system answers even during partial failures), Soft state (data may be in flux while replicas catch up) and Eventually consistent (replicas converge given time). Dynamo-style NoSQL stores follow it.
Category: data and algorithms.
Representing a number using 62 characters (0-9, a-z, A-Z) so that it is short and safe to put in a URL. Seven base62 characters give 62^7, about 3.5 trillion, distinct values.
Category: data processing.
Processing a large, bounded set of data in one scheduled job: nightly reports, recomputing recommendations, building search indexes. MapReduce (the 2004 Google paper, later Hadoop) split such work into map and reduce steps across many machines; Apache Spark is the modern, in-memory successor.
Category: data and algorithms.
A compact probabilistic structure that answers "is this item possibly in the set?" It can return false positives but never false negatives, and it uses a few bits per item instead of storing the items. Items cannot be removed from a standard Bloom filter.
Category: databases and storage.
The two main ways storage engines organise data on disk. A B-tree keeps sorted pages and updates them in place; reads are fast and predictable, writes cost random I/O. PostgreSQL, MySQL (InnoDB) and most relational databases use it. A log-structured merge (LSM) tree appends writes to an in-memory table, flushes it as sorted files (SSTables) and merges them in the background (compaction); writes are very fast, reads may check several files. Cassandra, RocksDB, LevelDB and HBase use it.
Category: availability and reliability.
Isolating resources (thread pools, connection pools, instances) per dependency or per customer so that one slow or failing part cannot exhaust everything, named after the watertight compartments of a ship.
C
Category: caching.
Keeping a copy of data in a faster or closer place so that repeated reads do not go back to the slow source. Caches exist at every layer: the browser, the CDN, a reverse proxy, an in-memory store such as Redis or Memcached in front of the database, and the database's own buffers. The key metric is the hit ratio.
Category: caching.
Rules for which entry to drop when a cache is full. LRU (least recently used) drops what was not touched for the longest time and is the default almost everywhere. LFU (least frequently used) keeps popular items even if briefly untouched. FIFO and random eviction are simple but worse. Redis also offers TTL-based and approximate LRU/LFU modes.
Category: caching.
How the cache and the database are kept in step. Cache-aside (lazy loading): the application reads the cache, on a miss reads the database and fills the cache; writes go to the database and delete or update the cache entry. Read-through: the cache itself loads from the database. Write-through: every write goes to the cache and the database synchronously, so the cache is always fresh but writes are slower. Write-back (write-behind): writes go to the cache and are flushed to the database later; fast, but data can be lost if the cache dies. Write-around: writes bypass the cache.
Category: distributed systems.
In a distributed data store, when a network partition separates the nodes, you must choose between Consistency (every read sees the latest write, in the strict, linearizable sense) and Availability (every request gets a non-error answer). Partition tolerance is not optional, because networks do fail. PACELC extends this: even without a partition (Else), there is a trade-off between Latency and Consistency.
Category: media and content delivery.
A network of servers spread around the world that cache content close to users and serve it with low latency: images, video segments, JavaScript, CSS, downloads and increasingly whole API responses. Requests go to the nearest edge server; on a miss it fetches from the origin and caches the result. Cloudflare, Akamai, Fastly and CloudFront are examples.
Category: data processing.
Reading the database's own change log (the binlog in MySQL, the WAL in PostgreSQL) and publishing every insert, update and delete as an event stream. Debezium is the common open-source tool; it typically feeds Kafka.
Category: availability and reliability.
Deliberately injecting failures (killing instances, adding latency, cutting a zone) in a controlled way to check that the system degrades as designed. Netflix's Chaos Monkey made the practice known.
Category: databases and storage.
Splitting a large file into fixed-size or content-defined blocks (Dropbox used 4 MB), storing each block under a hash of its content, and keeping a small metadata record that lists the blocks of each file. Unchanged blocks are shared between versions and between users (deduplication), and syncing a change uploads only the changed blocks.
Category: availability and reliability.
A wrapper around calls to a dependency that counts failures and, once a threshold is crossed, "opens" and fails fast for a while instead of waiting on timeouts. After a cool-down it lets a few test requests through (half-open) and closes again if they succeed. Hystrix and resilience4j popularised it.
Category: distributed systems.
Machines' clocks drift and are only roughly synchronised (NTP typically keeps them within milliseconds, sometimes much worse), so wall-clock time cannot reliably order events across nodes. Lamport timestamps (1978) are counters that give a consistent "happened-before" order; vector clocks (one counter per node) additionally detect that two updates were concurrent and therefore conflict. Hybrid logical clocks combine both with physical time; Google Spanner's TrueTime uses GPS and atomic clocks to bound the uncertainty.
Category: data and algorithms.
Trading CPU time for smaller data on the wire or on disk. Gzip, Brotli and zstd are general-purpose; columnar formats such as Parquet compress analytics data very well; images and video use their own lossy codecs.
Category: distributed systems.
What to do when two replicas accept different writes to the same item before they have synchronised. Options: last-write-wins (LWW, keep the one with the later timestamp, losing the other), keep both versions and let the application or user merge (Dynamo's "siblings"), use data types that merge automatically (CRDTs), or avoid the problem by routing all writes for a key to one leader.
Category: databases and storage.
Keeping a set of open database connections and reusing them, because opening a connection is slow and databases handle only a limited number of them (a few hundred to a few thousand). PgBouncer and ProxySQL are stand-alone poolers; most frameworks have one built in.
Category: distributed systems.
Getting a group of nodes to agree on a value or an ordered log of operations even though some of them may crash or be slow, as long as a majority is alive. Paxos (Leslie Lamport) is the classic algorithm; Raft (2014) was designed to be understandable and is used by etcd, Consul and CockroachDB. ZooKeeper uses a similar protocol called Zab.
Category: distributed systems.
The contract about what a read may return in a replicated system. Linearizable (the strongest usual form of "strong consistency"): every read returns the latest completed write, as if there were one copy. Causal: operations that depend on each other are seen in order, but independent ones may appear in any order. Session guarantees such as read-your-writes (a user sees their own updates) and monotonic reads (a user never sees time go backwards) are weaker, practical promises. Eventual: replicas converge if writes stop, with no promise about the meantime.
Category: scalability.
A way to assign keys to servers so that when a server is added or removed only about 1/N of the keys move, instead of almost all of them as with simple "hash mod N". Keys and servers are placed on a ring by hash; each key belongs to the next server clockwise. Virtual nodes (each server placed many times on the ring) balance the load and let stronger servers take more. Used in Dynamo, Cassandra, Memcached clients and many load balancers.
Category: distributed systems.
A small, strongly consistent, highly available store built on a consensus protocol, used for the things that must be agreed on by everyone: leader election, distributed locks, service discovery, configuration and membership. ZooKeeper (from Hadoop, used by Kafka until recently) and etcd (used by Kubernetes) are the common ones.
Category: data and algorithms.
A probabilistic structure that estimates how many times each item has been seen using a fixed, small amount of memory. It can overestimate (because of hash collisions) but never underestimate.
Category: architecture patterns.
Separating the write model (commands that change state) from the read model (queries), often with different data stores: writes go to a normalised transactional store, reads come from denormalised views built for each screen. The read side is updated through events.
Category: distributed systems.
A data structure designed so that replicas can be updated independently and merged automatically, always arriving at the same result regardless of the order in which updates arrive. Examples: a grow-only counter, a set where adds win over removes, and sequence types used for collaborative text editing. Figma, Apple Notes and Redis Enterprise use them; Google Docs uses the related operational transformation (OT) approach.
D
Category: databases and storage.
A separate structure (usually a B-tree, sometimes a hash) that lets the database find rows by a column's value without scanning the whole table. Composite indexes cover several columns in order; a covering index contains every column a query needs so the table is never touched. Every index slows down writes, because it must be updated too.
Category: data processing.
A data warehouse is a database optimised for analytical queries over huge volumes (column storage, compression, parallel scans): Snowflake, BigQuery, Amazon Redshift. A data lake is cheap object storage holding raw files (often Parquet) that several engines can query; "lakehouse" products such as Databricks blur the line.
Category: messaging and streaming.
A queue where messages are moved after they have failed processing a set number of times, so they stop blocking the main queue and can be inspected, fixed and replayed.
Category: messaging and streaming.
What a messaging system promises about each message. At-most-once: fire and forget, messages can be lost but never duplicated. At-least-once: the producer retries and the consumer acknowledges after processing, so nothing is lost but duplicates happen. Exactly-once: each message takes effect once; in practice achieved by at-least-once delivery plus idempotent or transactional processing (Kafka offers it within its own ecosystem).
Category: databases and storage.
Normalization organises relational data so that each fact is stored once (separate tables for users, orders, products, joined by keys), which keeps writes simple and consistent. Denormalization deliberately copies data (storing the author's name on each post, pre-joined documents, counters) so reads need fewer joins and are faster.
Category: operations.
Ways to release a new version without downtime. Rolling: replace instances a few at a time. Blue-green: run the new version next to the old one and switch traffic at once, keeping the old one for instant rollback. Canary: send a small share of traffic (1%, then 10%) to the new version and watch error rates before rolling out further.
Category: availability and reliability.
Planning for the loss of a whole data centre or region, or for data corruption. RPO (recovery point objective) is how much data you may lose, measured in time since the last usable backup or replica. RTO (recovery time objective) is how long the system may be down while you recover. Backups, cross-region replicas and tested restore procedures are the tools.
Category: distributed systems.
A lock that processes on different machines can take to make sure only one of them does something at a time: running a scheduled job, processing a particular account, resizing one image. Implemented with a coordination service (ZooKeeper ephemeral nodes, etcd leases) or with Redis (SET with NX and an expiry, and the contested Redlock algorithm). Locks must expire so a crashed holder does not block everyone, and a fencing token (an increasing number handed out with the lock) lets the protected resource reject a stale holder whose lock expired while it paused.
Category: distributed systems.
A transaction that must commit atomically across several databases or services. Two-phase commit uses a coordinator: it asks every participant to prepare (write everything and promise to commit), and only when all say yes does it tell them to commit. It is correct but slow, and if the coordinator crashes after the prepare phase, participants are stuck holding locks until it returns.
Category: networking and communication.
The system that turns a name such as api.example.com into IP addresses. Answers carry a TTL and are cached by resolvers, so changes propagate slowly. DNS can also route: GeoDNS returns a nearby region's address, weighted records split traffic, and health-checked records drop a failed region. Anycast announces the same IP from many places and lets the network route to the nearest one (used by CDNs and public DNS).
Category: databases and storage.
A NoSQL database that stores self-contained JSON-like documents with flexible schemas: MongoDB, Couchbase, Amazon DocumentDB, Firestore. A document usually holds everything one screen needs (an order with its lines), which avoids joins but duplicates data.
Category: availability and reliability.
The guarantee that once the system has acknowledged a write, the data will not be lost, even if a machine crashes or a disk dies. Achieved by writing to a write-ahead log before acknowledging, replicating to other machines (ideally in another zone) and taking backups. Object storage services advertise "eleven nines" (99.999999999%) of durability per year.
E
Category: security.
In transit: TLS (HTTPS) between clients and servers and, increasingly, between internal services (mTLS). TLS is usually terminated at the load balancer or API gateway. At rest: disk and database encryption, with keys in a key-management service (KMS), plus field-level encryption for the most sensitive values.
Category: architecture patterns.
Services communicate by publishing events ("order placed") to a broker, and any service that cares subscribes, rather than calling each other directly. Producers do not know who consumes, which decouples teams and lets new consumers be added without changing the producer.
Category: architecture patterns.
Storing the full sequence of events that happened to an entity (account opened, 100 deposited, 30 withdrawn) as the source of truth, and deriving the current state by replaying them. Snapshots speed up replay; projections build read models.
Category: messaging and streaming.
A durable, ordered, append-only log of events, split into partitions, that many consumers can read at their own pace and re-read from any offset. Apache Kafka is the standard; Amazon Kinesis, Apache Pulsar and Redpanda are alternatives. Unlike a traditional queue, messages are not deleted when consumed; they are kept for a retention period (days or longer).
Category: distributed systems.
The promise that if no new writes are made, all replicas will eventually hold the same value. Until then a read may return stale data. It is what asynchronous replication, caches with a TTL and most NoSQL stores give you.
F
Category: availability and reliability.
Switching from a failed component to a standby: promoting a replica to primary when the database leader dies, moving a virtual IP to the standby load balancer, or sending traffic to another region. It can be manual or automatic; automatic failover needs reliable failure detection to avoid promoting a replica while the old leader is still alive (split brain).
Category: architecture patterns.
How a social feed is built. Fan-out on write (push): when a user posts, the system writes the post into the pre-computed feed of every follower, so reading a feed is one lookup. Fan-out on read (pull): a feed is assembled at read time by fetching the latest posts of everyone the user follows. Push makes reads cheap and writes expensive; pull is the opposite.
Category: availability and reliability.
The ability of a system to keep working, possibly in a reduced way, when some of its parts fail. It comes from redundancy (no single point of failure), failure detection, failover, and isolation so that one failure does not cascade.
Category: interview method.
Functional requirements are what the system does (post a message, search by name, upload a file). Non-functional requirements are the qualities it must have: scale (users, requests, data), latency targets, availability, consistency, durability, security, cost. The non-functional ones drive most of the architecture.
G
Category: data and algorithms.
Ways to index locations so that "everything within 2 km of here" is a cheap query. A geohash encodes latitude and longitude into a string whose prefixes describe ever larger cells, so nearby points share prefixes and the query becomes a prefix search. A quadtree splits the map into four recursively until each cell holds few points. Google's S2 and Uber's H3 are hierarchical cell systems with better behaviour at cell edges. PostGIS and Redis GEO offer such queries out of the box.
Category: distributed systems.
Nodes periodically exchange what they know with a few random peers, so information (membership, health, metadata) spreads through the cluster in a logarithmic number of rounds without a central coordinator. Cassandra, Consul and Dynamo-style systems use it.
Category: availability and reliability.
Designing so that when a part fails the system loses a feature rather than the whole experience: show the product page without recommendations, serve a slightly stale feed from cache, accept orders and queue them when the payment provider is slow.
Category: databases and storage.
A database that stores nodes and edges directly and is optimised for traversals: "friends of friends", shortest path, fraud rings. Neo4j, Amazon Neptune and JanusGraph are examples. The same data can be held in a relational table of edges, but multi-hop queries become expensive joins.
Category: networking and communication.
An API style where the client sends a query describing exactly the fields it wants and the server returns that shape, from a single endpoint. It replaces many REST endpoints and avoids over-fetching, at the cost of a more complex server (resolvers, the N+1 query problem, caching that is harder than for REST URLs).
Category: networking and communication.
A remote procedure call framework from Google that uses HTTP/2 and Protocol Buffers: a strongly typed contract, compact binary messages, generated client code, and support for streaming in both directions. It is the common choice for communication between internal services; browsers need a proxy layer (gRPC-Web).
H
Category: availability and reliability.
Periodic signals used to detect failure. A health check is a request the load balancer or orchestrator makes to each instance ("are you alive and able to serve?"); instances that fail several checks in a row are removed from rotation. A heartbeat is the reverse: a node reports regularly to a coordinator, and silence for a few intervals means it is presumed dead.
Category: scalability.
A single key, user, partition or shard that receives far more traffic than the others, so that the system is bottlenecked on one node while the rest sit idle: a celebrity's profile, a viral post, a flash-sale product, or a shard key that puts today's data on one shard.
Category: caching.
The caching rules built into HTTP. Cache-Control headers tell browsers, CDNs and proxies how long a response may be reused (max-age) and whether shared caches may store it. An ETag is a version identifier; the client sends it back and the server answers "304 Not Modified" if nothing changed, saving the body transfer.
Category: data and algorithms.
A probabilistic structure that estimates the number of distinct items in a stream (unique visitors, unique search terms) with about 1-2% error using only a few kilobytes, regardless of how many items there are. Redis implements it (PFADD, PFCOUNT).
I
Category: distributed systems.
An operation is idempotent if doing it twice has the same effect as doing it once. "Set balance to 100" is idempotent; "add 10 to balance" is not. Since networks and queues deliver duplicates and clients retry after timeouts, non-idempotent operations need an idempotency key: the client sends a unique ID with the request, and the server stores the result under that key and returns the same result on a repeat.
Category: databases and storage.
The structure behind search engines: a mapping from each term to the list of documents containing it (and positions), the reverse of a document-to-words layout. Lucene, and the systems built on it (Elasticsearch, OpenSearch, Solr), add tokenisation, stemming, ranking (such as BM25) and sharding of the index.
Category: databases and storage.
How much concurrent transactions may see of each other. From weakest to strongest: read uncommitted, read committed (the default in PostgreSQL and Oracle), repeatable read or snapshot isolation (the default in MySQL InnoDB; each transaction sees a consistent snapshot), and serializable (the result is as if transactions ran one after another). Weaker levels allow anomalies such as non-repeatable reads, phantom reads and write skew; stronger levels cost throughput or cause more aborts.
K
Category: databases and storage.
The simplest database model: get, put and delete by key, with no joins or secondary queries. In-memory stores such as Redis and Memcached are used as caches and for fast data structures (Redis also offers lists, sorted sets, streams and pub/sub); persistent ones such as DynamoDB, Riak and RocksDB scale horizontally by partitioning on the key.
L
Category: fundamentals.
The time a single request takes from send to response, usually measured at percentiles (p50, p95, p99) rather than as an average, because averages hide the slow tail. Network round trips, disk access, queueing and downstream calls add up along the critical path.
Category: distributed systems.
Choosing one node among several to be the one that accepts writes, runs a scheduled job or coordinates the others, and choosing a new one when it fails. Done safely through a consensus-based coordination service (a lease or ephemeral node that only one holder can own), or in simple setups by a fixed priority with a monitor (the bully algorithm). The danger is two nodes both believing they are the leader.
Category: distributed systems.
Replication where any replica accepts writes and reads, and clients (or a coordinator) send each request to several replicas in parallel, waiting for a quorum of acknowledgements. Stale replicas are fixed by read repair (the client writes back the newest version to lagging replicas) and anti-entropy (background comparison of replicas, often with Merkle trees); hinted handoff stores writes meant for a down node temporarily on a neighbour. Amazon's Dynamo paper (2007) defined the pattern; Cassandra, Riak and ScyllaDB follow it.
Category: distributed systems.
The strongest practical consistency guarantee for a single object: every operation appears to take effect instantly at some point between its start and its end, so once a write is acknowledged every later read, from any client, sees it. It is what people usually mean by "strong consistency" and what CAP's "C" means. It is not the same as serializability, which is about transactions over many objects; databases that offer both are called strictly serializable.
Category: networking and communication.
A component that spreads incoming requests across a pool of servers, removes unhealthy ones using health checks and makes the pool look like one address. Layer 4 balancers route by IP and port and are very fast; layer 7 balancers understand HTTP and can route by path, host or header, terminate TLS and do sticky sessions. Algorithms: round robin, weighted round robin, least connections, least response time, hashing on client IP or on a key. Examples: NGINX, HAProxy, Envoy, AWS ELB/ALB.
Category: availability and reliability.
Deliberately dropping or rejecting some requests when the system is near its capacity, so that the remaining requests still succeed instead of everything slowing to a crawl and timing out. Usually done by priority: keep checkouts, drop analytics pings; keep logged-in users, reject anonymous crawlers; return 503 with a Retry-After header.
Category: networking and communication.
A way to push updates to a client over plain HTTP: the client sends a request, the server holds it open until there is new data or a timeout passes, answers, and the client immediately sends the next request. It works through every proxy and firewall but costs a held connection per client and a request cycle per message.
M
Category: databases and storage.
A query result stored as a table and refreshed periodically or incrementally, so that an expensive aggregation or join is computed once and read many times: daily sales per product, a user's follower count, a leaderboard.
Category: data and algorithms.
A tree of hashes in which each leaf is the hash of a data block and each parent is the hash of its children, so the root summarises the whole data set. Two replicas can find which blocks differ by comparing hashes top-down, exchanging only a logarithmic number of hashes. Used for anti-entropy in Cassandra and Dynamo, in Git, in BitTorrent and in blockchains.
Category: messaging and streaming.
A buffer between a producer and one or more consumers (workers). The producer puts a message in and moves on; a worker takes it, processes it and acknowledges it, after which it is removed; if the worker fails to acknowledge in time the message becomes visible again. RabbitMQ, Amazon SQS, ActiveMQ and Redis-based queues (Sidekiq, Celery) are typical. Each message is usually processed by one consumer.
Category: architecture patterns.
A monolith is one deployable application with one codebase and usually one database. Microservices split the system into independently deployed services, each owning its data, communicating over the network. Microservices let teams scale and deploy independently and let each part use the right storage; they add network latency, partial failures, distributed data problems, and operational overhead. A "modular monolith" keeps clear internal boundaries without the network between them.
Category: distributed systems.
Replication in which more than one node accepts writes (typically one leader per region or data centre) and leaders replicate to each other asynchronously. Writes are fast and local and the system survives a region outage, but concurrent writes to the same item in two regions conflict and must be resolved.
Category: availability and reliability.
Running the system in several geographic regions, either active-passive (one serves, the other is a warm standby with replicated data) or active-active (all serve, usually with users routed to the nearest region). It cuts latency for distant users, survives a whole-region outage and can satisfy data-residency laws, at the cost of cross-region replication lag, conflicts, and much more complexity.
Category: architecture patterns.
Serving many customers (tenants) from one deployment while keeping their data and performance isolated. Options range from a tenant_id column in shared tables (cheapest, needs care in every query) through a schema or database per tenant to fully separate stacks for the largest customers.
N
Category: distributed systems.
A failure in which nodes are alive but cannot reach each other (a cut link, a misconfigured switch, a zone isolated), so each side may continue to operate on its own view of the data. It is the "P" in CAP and the situation that forces the choice between consistency and availability.
Category: databases and storage.
A family of databases that give up parts of the relational model (fixed schemas, joins, multi-row transactions) in exchange for horizontal scaling, flexible data and high write throughput. Four main types: key-value (Redis, DynamoDB), document (MongoDB), wide-column (Cassandra, HBase, Bigtable) and graph (Neo4j).
O
Category: databases and storage.
A service that stores files of any size as objects under a key, with HTTP access, very high durability, practically unlimited capacity and low cost per gigabyte: Amazon S3, Google Cloud Storage, Azure Blob Storage, MinIO. Objects are written whole and read whole or by byte range; there is no file system or in-place editing. Pre-signed URLs let a client upload or download directly, bypassing your servers.
Category: operations.
Being able to tell what a system is doing from the outside. Logs are per-event records; metrics are numbers over time (request rate, error rate, latency percentiles, queue depth, saturation); traces follow one request across services with a shared trace ID. OpenTelemetry is the common standard; Prometheus and Grafana, the ELK stack, Jaeger and Datadog are typical tools.
Category: databases and storage.
OLTP (online transaction processing) workloads are many small reads and writes touching a few rows each, with low latency and strong consistency: the user-facing database. OLAP (online analytical processing) workloads scan millions of rows to aggregate: reports, dashboards, data science. They need different storage (row-oriented vs. column-oriented) and should run on different systems.
Category: databases and storage.
Two ways to handle concurrent updates to the same row. Pessimistic: lock the row when reading it (SELECT ... FOR UPDATE) so others wait; safe, but locks held across user think-time or slow calls hurt throughput. Optimistic: read a version number along with the row, do the work, and write with "WHERE version = the one I read"; if zero rows update, someone else got there first and you retry. Compare-and-set operations in key-value stores are the same idea.
Category: architecture patterns.
A way to update a database and publish an event atomically without distributed transactions: the service writes the business row and an "outbox" row describing the event in the same local transaction; a separate relay process (or CDC) reads the outbox and publishes to the broker, marking rows as sent. Consumers may see duplicates, so they are idempotent.
P
Category: networking and communication.
Returning a long list in pages. Offset pagination ("page 50, 20 per page") is simple but gets slower the deeper you go (the database still walks past the skipped rows) and shifts items when the list changes between requests. Cursor (keyset) pagination returns an opaque token pointing at the last item seen (usually its sort key) and the next request continues from there; it is fast at any depth and stable under inserts.
Category: architecture patterns.
An architecture without central servers where each participant both consumes and provides the service: BitTorrent for file distribution, some video-call media paths, blockchain networks. Discovery, trust and NAT traversal are the hard parts.
Category: messaging and streaming.
A messaging pattern in which publishers send messages to a topic and every subscriber of that topic receives its own copy, without publishers knowing who the subscribers are. Implemented by Kafka topics with consumer groups, RabbitMQ exchanges, Google Pub/Sub, Amazon SNS and Redis pub/sub (which is fire-and-forget, with no persistence).
Category: architecture patterns.
Whether the producer sends data to consumers as it happens (push: WebSockets, webhooks, notifications, fan-out on write) or consumers ask for it when they need it (pull: polling, fan-out on read, consumers fetching from Kafka). Push gives low latency and can overwhelm slow consumers; pull lets consumers control their pace at the cost of delay and wasted empty requests.
Q
Category: distributed systems.
The minimum number of replicas that must take part in an operation for it to count. With N replicas, if a write waits for W acknowledgements and a read queries R replicas, then W + R > N guarantees that every read overlaps at least one replica holding the latest write. Typical: N = 3, W = 2, R = 2. Consensus protocols need a majority quorum, which is why clusters have 3 or 5 nodes.
R
Category: availability and reliability.
Capping how many requests a client, user, API key or IP may make per period, returning 429 when exceeded. Token bucket: tokens drip into a bucket at a fixed rate, each request takes one, bursts are allowed up to the bucket size (the most common choice). Leaky bucket: requests drain at a fixed rate, smoothing bursts. Fixed window counters are simple but allow double bursts at the boundary; a sliding window log or sliding window counter fixes that. Distributed implementations keep counters in Redis.
Category: scalability.
Copies of the database that receive changes from the primary (usually asynchronously) and serve read queries, multiplying read capacity and providing failover candidates. Because replication is asynchronous, a replica may be behind by milliseconds or, under load, seconds: replication lag. A user who writes and then reads from a lagging replica may not see their own change.
Category: databases and storage.
A database of tables with fixed schemas, joined by keys and queried with SQL, offering ACID transactions and secondary indexes on any column: PostgreSQL, MySQL, SQL Server, Oracle. One well-tuned node handles thousands to tens of thousands of simple queries per second and terabytes of data; beyond that you add replicas, caches and eventually sharding (manually, or with tools such as Vitess and Citus, or with distributed SQL databases such as CockroachDB and Spanner).
Category: distributed systems.
Keeping copies of the same data on several nodes. In single-leader (primary-replica) replication, one node accepts all writes and streams them to followers, which serve reads and can be promoted on failure. Synchronous replication waits for a follower to confirm before acknowledging (no data loss on failover, higher latency); asynchronous does not (fast, but a failover may lose the last writes); semi-synchronous waits for one follower. Multi-leader and leaderless replication relax the single-writer rule at the price of conflicts.
Category: networking and communication.
The dominant style for HTTP APIs: resources identified by URLs (/users/42/orders), standard methods (GET to read, POST to create, PUT or PATCH to update, DELETE), status codes for outcomes, JSON bodies, and stateless requests that carry everything the server needs. Caching and load balancing work naturally because requests are self-contained.
Category: availability and reliability.
Repeating a failed call, waiting longer each time (exponential backoff: 100 ms, 200 ms, 400 ms...) with a random element (jitter) so that thousands of clients do not retry in lock-step, up to a limit. Retries are only safe for idempotent operations and for failures that may be transient (timeouts, 503s, connection resets), not for 400s or business errors.
Category: networking and communication.
A server that sits in front of backend servers and forwards client requests to them, hiding the backends and handling TLS termination, compression, caching, static files and basic routing. NGINX, HAProxy, Envoy and Caddy are common. A load balancer is a reverse proxy that focuses on distributing load; an API gateway is a reverse proxy that understands the API.
S
Category: architecture patterns.
A way to run a business transaction across several services without a distributed transaction: a sequence of local transactions, each publishing an event or calling the next step, with a compensating action for each step to undo it if a later step fails (cancel the reservation, refund the payment). Choreography: services react to each other's events. Orchestration: a central coordinator tells each service what to do and tracks state.
Category: scalability.
The ability to handle more load by adding resources. Vertical scaling (scaling up) means a bigger machine: simple, no code changes, but has a ceiling and a single point of failure. Horizontal scaling (scaling out) means more machines: practically unlimited for stateless services, but state (databases, sessions, caches) must be partitioned or replicated, and the system becomes distributed.
Category: architecture patterns.
Sending one query to many partitions or services in parallel and merging the answers: a search over a sharded index, a price comparison across providers, a count across shards. The latency is that of the slowest participant, so tail latency matters, and the merge step needs the partial results to be combinable (top-K from each shard, then top-K overall).
Category: networking and communication.
How data is encoded for the wire or for storage. JSON is human-readable, schemaless and verbose. Protocol Buffers (Protobuf), Thrift and Avro are binary, schema-based, several times smaller and faster to parse, and support schema evolution (adding fields without breaking old readers) when the rules are followed. Avro is common in Kafka with a schema registry; Protobuf is used by gRPC.
Category: architecture patterns.
Running code as functions that the cloud provider starts on demand, scales automatically and bills per invocation: AWS Lambda, Google Cloud Functions, Azure Functions. No servers to manage, scales to zero, but functions have cold-start latency, execution time limits, no local state and limited control over connection pooling to databases.
Category: networking and communication.
A standard way for a server to push a stream of text events to a browser over one long-lived HTTP response. One direction only (server to client), automatic reconnection built into browsers, simple to run through proxies and load balancers.
Category: networking and communication.
How services find the current addresses of other services when instances come and go. A registry (Consul, etcd, Eureka, or the DNS built into Kubernetes) holds healthy instances; clients either query it directly and balance themselves (client-side discovery) or call a stable address behind a load balancer or service mesh that does the lookup (server-side discovery).
Category: networking and communication.
An infrastructure layer (Istio, Linkerd, Consul Connect) that puts a small proxy (a sidecar, typically Envoy) next to each service instance and handles service-to-service concerns uniformly: mutual TLS, retries, timeouts, circuit breaking, traffic splitting and tracing, without changing application code.
Category: scalability.
Where a logged-in user's session state lives. Sticky sessions make the load balancer send a user to the same server every time, so state can stay in that server's memory; simple, but a server failure logs users out and load spreads unevenly. The scalable choice is stateless servers with the session in a shared store (Redis) or in a signed token (JWT).
Category: availability and reliability.
Any component whose failure takes down the whole system: one database, one load balancer, one message broker, one zone, one DNS provider, one person with the only credentials. Removing SPOFs means redundancy at every layer and tested failover.
Category: operations.
An SLI (service level indicator) is a measured quantity: the fraction of requests served under 300 ms, the fraction of successful responses. An SLO (objective) is the internal target for an SLI: 99.9% of requests succeed over 30 days. An SLA (agreement) is the external contract with customers, with penalties, and is usually looser than the SLO. The gap between 100% and the SLO is the error budget that can be spent on releases and risk.
Category: distributed systems.
The situation in which a network partition leaves two nodes each believing they are the leader, both accepting writes, so the data diverges and cannot be cleanly merged. Prevented by requiring a majority quorum to be leader (so at most one side can have it), by leases that expire, and by fencing stale leaders from the shared resource.
Category: scalability.
A stateless service keeps nothing between requests that another instance would need: any instance can handle any request, so you can add, remove and replace instances freely. A stateful service holds data that matters (a database, a cache, a WebSocket connection, an in-progress upload) and must be replicated, partitioned or carefully handed over.
Category: data processing.
Continuously processing events as they arrive, with results seconds or milliseconds old: real-time aggregations (views per minute), fraud detection, enrichment, alerting, maintaining materialized views. Engines keep state, group events into windows (tumbling, sliding, session), use watermarks to handle late events and checkpoint their state so they can recover without losing or duplicating results.
T
Category: fundamentals.
The latency experienced by the slowest requests, usually expressed as the 99th or 99.9th percentile. It matters more than the average because a page that makes 20 backend calls will hit the slow tail of at least one of them on most loads, and because the slowest requests are often the most valuable users with the most data. Causes: garbage-collection pauses, cache misses, hot keys, queueing, slow disks, retries.
Category: networking and communication.
TCP delivers bytes reliably and in order, with connection setup, acknowledgements, retransmission and congestion control; HTTP/1.1 and HTTP/2 run on it. UDP sends individual packets with no delivery or ordering guarantee and no connection, so it is faster and lighter; DNS, video calls, online games and HTTP/3 (through QUIC, which rebuilds reliability on top of UDP) use it.
Category: fundamentals.
How much work a system completes per unit of time: requests or queries per second (QPS, RPS), messages per second, megabytes per second. Bandwidth is throughput of the network link. A system's throughput is limited by its narrowest component; raising it means parallelism (more instances, more partitions) or doing less work per request (caching, batching).
Category: caching.
Many clients or requests hitting the same slow resource at the same moment: a popular cache entry expires and thousands of requests all miss and query the database together; a service restarts and every client reconnects at once; a cron job fires on every server at the same minute.
Category: availability and reliability.
The maximum time a caller waits for a response before giving up. Without a timeout a hung dependency ties up a thread or connection forever and the failure spreads upward. Timeouts should be set per call, be shorter than the caller's own deadline, and be propagated so that a request that has already exceeded its budget is not still being processed downstream.
Category: databases and storage.
A database optimised for timestamped measurements that arrive in order and are queried by time range and aggregated: metrics, sensor data, prices. It compresses well, writes fast (append-only), downsamples old data (per second to per minute to per hour) and expires it by retention policy. InfluxDB, TimescaleDB (on PostgreSQL), Prometheus and ClickHouse are examples.
Category: data and algorithms.
A tree in which each node is one character and each path from the root spells a prefix, so all words starting with "sys" are found by walking three nodes and collecting the subtree. For autocomplete, each node can cache its most popular completions so a query returns the top suggestions in constant time.
Category: caching.
An expiry attached to a piece of data: a cache entry, a DNS record, a session, a message in a queue, a short URL. When the TTL passes the item is removed or refreshed. It bounds staleness without explicit invalidation and keeps storage from growing forever.
U
Category: distributed systems.
Generating identifiers that are unique across many machines without a central counter. A UUID (128 bits; version 4 is random, version 7 is time-ordered) needs no coordination but is large and, for v4, random, which hurts B-tree index locality. Twitter's Snowflake scheme packs a 41-bit millisecond timestamp, a 10-bit machine ID and a 12-bit per-millisecond sequence into a 64-bit integer: compact, roughly time-sorted and generated locally. A database auto-increment is simplest but is a single point of failure and does not shard; a ticket server or key-generation service hands out ranges in advance.
W
Category: networking and communication.
An HTTP callback: a service calls a URL the customer registered when something happens (payment succeeded, repository pushed), instead of the customer polling. The sender must retry with backoff when the receiver is down, sign payloads so the receiver can verify them, and the receiver must handle duplicates.
Category: networking and communication.
A protocol that upgrades an HTTP connection into a persistent, bidirectional channel over which either side can send messages at any time with little overhead. The basis of chat, collaborative editing, live games, trading screens and presence indicators.
Category: databases and storage.
A NoSQL model in which each row is identified by a partition key and holds many columns, often grouped and sorted by a clustering key, so that one partition holds, for example, all messages of a chat in time order. Data is distributed by partition key across many nodes (consistent hashing in Cassandra) and written with an LSM tree, giving very high write throughput and linear scaling. Queries must follow the key design; there are no joins and limited secondary indexes.
Category: databases and storage.
An append-only file to which a database writes every change before applying it to its data structures. Because appends are sequential and fast, the database can acknowledge a write as soon as the log entry is on disk, replay the log after a crash to recover, and ship the log to replicas. PostgreSQL's WAL, MySQL's binlog and redo log, and the commit log in Cassandra are examples; Kafka is essentially a distributed WAL.
How to Use This Glossary
Each entry names the area it belongs to, explains the term in plain language and then says, under "In interviews", when to bring it up, what to say and which trade-off to name. Search for a term with the field at the top of the glossary; many entries list alternative names in the title (e.g. "Sharding (partitioning)" or "Thundering herd (cache stampede)"), so searching for either one works.
Entries are grouped into areas so that you can study one area at a time: fundamentals, scalability, availability and reliability, caching, databases and storage, distributed systems, messaging and streaming, networking and communication, architecture patterns, data processing, media and content delivery, security, operations, data and algorithms, and interview method. Terms that appear as "See also" at the end of an entry are the ones interviewers tend to ask about next.
A Structure for the Interview
Most system design interviews last 45 to 60 minutes and reward a visible structure more than any particular technology. A sequence that works:
- Requirements (about 5 minutes). Agree on three to five functional requirements and the non-functional ones that drive the design: number of users, read/write ratio, latency target, availability target, consistency needs, data retention. Write them down and narrow the scope out loud.
- Estimation (about 5 minutes). Turn the requirements into requests per second, storage per year and bandwidth, at average and at peak. Use the numbers to decide where one machine is enough and where it is not.
- High-level design (10 to 15 minutes). Draw clients, DNS, load balancer, the services, the database, the cache, the queue and the object storage, and show the main request flows. Sketch the data model and the key API endpoints.
- Deep dive (15 to 20 minutes). Pick the two or three hardest parts, usually scaling the database (replication, sharding), the consistency model, a hot path (feed, search, matching) and failure handling. This is where most of the terms in this glossary belong.
- Wrap-up (about 5 minutes). Walk through the design once more asking "what if this fails?", name the trade-offs you made, how you would monitor it, and what you would do next with more time.
Lead with the simplest design that meets the numbers, then add complexity only where the numbers or the interviewer's follow-up questions demand it. "I would start with one relational database with read replicas, and shard by user ID when writes exceed what one primary handles" is a stronger answer than starting with a sharded NoSQL cluster.
Numbers Worth Remembering
Approximate latencies, useful for reasoning about where time goes (the exact figures depend on hardware, but the orders of magnitude hold):
- Main memory access: about 100 nanoseconds.
- Random read from an SSD: about 100 microseconds.
- Read 1 MB sequentially from memory: about 0.25 milliseconds; from an SSD: about 1 millisecond; from a spinning disk: about 20 milliseconds.
- Network round trip within one data centre: about 0.5 milliseconds.
- Round trip between Europe and the US east coast: about 80 to 100 milliseconds; around the world: 150 milliseconds or more.
- Send 1 KB over a 1 Gbps link: about 10 microseconds.
Time and volume conversions:
- A day has 86,400 seconds, so divide a daily number by about 100,000 to get a per-second rate: 1 million requests a day is about 12 per second; 100 million a day is about 1,200 per second. A month has about 2.6 million seconds; a year about 31.5 million.
- Assume peak traffic is two to three times the average.
- 2^10 is about a thousand (KB), 2^20 about a million (MB), 2^30 about a billion (GB), 2^40 about a trillion (TB).
- 1 million records of 1 KB each is 1 GB. 1 billion is 1 TB.
Downtime allowed per year by availability target: 99% about 3.65 days; 99.9% about 8.8 hours; 99.99% about 53 minutes; 99.999% about 5 minutes.
Rough single-node capacities (vary widely with workload and hardware): a tuned relational database handles thousands to tens of thousands of simple queries per second; Redis around 100,000 simple operations per second per instance; a Kafka cluster millions of messages per second; a single application server a few thousand requests per second.
Terms That Are Easy to Confuse
- Latency vs. throughput: how long one request takes vs. how many the system completes per second. Both matter; neither implies the other.
- Availability vs. durability vs. reliability: being up and answering vs. not losing acknowledged data vs. working correctly over time.
- Consistency in ACID vs. consistency in CAP: the data obeys the schema's rules vs. every read sees the latest write across replicas. Two unrelated meanings of one word.
- Linearizability vs. serializability: the ordering guarantee for operations on one object across replicas vs. the isolation guarantee for transactions over many objects. Strict serializability is both.
- Replication vs. sharding (partitioning): copying the same data to several nodes (for availability and reads) vs. splitting the data across nodes (for writes and size). Real systems do both.
- Horizontal vs. vertical scaling: more machines vs. a bigger machine.
- Load balancer vs. reverse proxy vs. API gateway: distributing traffic vs. fronting backends vs. fronting an API with auth and rate limits. One product often does all three.
- Message queue vs. event stream (pub/sub): each message to one worker, deleted when done vs. a retained log that many consumers read independently and can replay.
- Event-driven architecture vs. event sourcing: services communicating through events vs. storing events as the source of truth. The first does not imply the second.
- Cache-aside vs. write-through: the application fills the cache lazily on reads vs. every write updates the cache and the database together.
- Idempotent vs. exactly-once: an operation that is safe to repeat vs. a delivery guarantee that, in practice, is built out of at-least-once delivery plus idempotency.
- Failover vs. fault tolerance: the act of switching to a standby vs. the overall property of continuing to work through failures.
For the names and history of specific technologies (Kafka, Redis, Kubernetes, PostgreSQL and the rest) and when each was created, see also the Tech Skills Glossary for Recruiters.