Reference · 39 terms

Glossary

Every short form used across the series. Inside a lesson, hover or tap any dotted term to see the same entry in place.

Method

QPSQueries (requests) per second
The request rate. A million requests a day is about 12 per second. Multiply by 2 to 10 for the busy peak.Lesson 0 →
read-heavyRead-heavy
A system with many more reads than writes, so caches and replicas matter most. A URL shortener is about 100 reads to 1 write.Lesson 0 →
trade-offTrade-off
A choice that gains one thing and loses another. A good answer names both sides and says when you would choose the other way.Lesson 0 →

Encoding and IDs

301301 Moved Permanently
A permanent redirect that can be cached. Browsers may skip your server on later visits, so you lose analytics.Lesson 1 →
302302 Found
A temporary redirect. Browsers do not cache it by default, so every click reaches your server.Lesson 1 →
Base62Base62
A way to write numbers with 0-9, a-z and A-Z: 62 characters that are safe in URLs. Seven characters give about 3.5 trillion codes.Lesson 1 →
collisionCollision
Two different inputs get the same code. Handle it with a unique rule in the database and a retry.Lesson 1 →
KGSKey Generation Service
A service that makes unique short codes in advance and hands them out in batches. Nothing needs checking at request time.Lesson 1 →
SSRFServer-Side Request Forgery
Tricking your server into fetching an internal address (like a cloud metadata endpoint) by sending it a crafted URL.Lesson 1 →

Rate limiting

429429 Too Many Requests
The status code for rate limiting. It comes with a Retry-After header that says when to try again.Lesson 2 →
fail closedFail closed
If the limiter is down, reject requests. This is right for login and OTP, where unlimited tries allow brute force.Lesson 2 →
fail openFail open
If the limiter is down, let requests through. The API stays up, but it is not protected.Lesson 2 →
leaky bucketLeaky bucket
Requests wait in a queue and leave at a constant speed. Bursts become a steady flow.Lesson 2 →
LuaLua script (Redis)
A small script that Redis runs in one step, so nothing can interrupt it. A read-then-write like a token bucket update cannot race.Lesson 2 →
Retry-AfterRetry-After header
A header with the number of seconds (or a date) after which the client may try again.Lesson 2 →
sliding windowSliding window
Count the requests in the last N seconds, at any moment. This avoids the double burst at the edge of fixed windows.Lesson 2 →
token bucketToken bucket
A bucket that fills at a steady speed. Each request takes one token. Short bursts are allowed up to the bucket size, but the average rate stays fixed.Lesson 2 →

Data access

keyset paginationKeyset (cursor) pagination
Page by saying 'give me the rows after the last one I saw', using the sort key. It stays fast and stable at any depth.Lesson 3 →
OFFSETOFFSET pagination
Skip N rows with LIMIT/OFFSET. It is simple, but the database reads and throws away N rows, and results shift when data changes.Lesson 3 →
opaque cursorOpaque cursor
A token the client sends back without understanding it. The server can change what is inside whenever it wants.Lesson 3 →
RelayRelay connections
GraphQL's standard cursor paging: edges with cursors, plus pageInfo (hasNextPage, endCursor).Lesson 3 →
tiebreakerTiebreaker column
A unique column (usually the ID) added to the sort, so rows with equal values always keep the same order.Lesson 3 →

Uploads and delivery

at-least-onceAt-least-once delivery
A message may arrive more than once, but it is never lost. So consumers must be idempotent.Lesson 5 →
DLQDead-letter queue
A side queue for messages that keep failing. They stop blocking the main queue, and you can look at them and replay them.Lesson 5 →
fan-outFan-out
Turning one event into many deliveries, like one broadcast into a million notifications.Lesson 5 →
magic bytesMagic bytes
The first bytes of a file show its real type. Check them. Do not trust the file extension or the Content-Type.Lesson 4 →
multipart uploadMultipart upload
Split a large file into parts. The parts upload in parallel and can be retried one by one. The storage service joins them.Lesson 4 →
presigned URLPresigned URL
A web address with a time limit, signed with your credentials. Whoever holds it can upload or download one file directly to storage.Lesson 4 →
SSEServer-Sent Events
A one-way stream from the server to the browser over HTTP. It reconnects by itself and can resume with Last-Event-ID.Lesson 5 →
WebSocketWebSocket
A two-way connection between browser and server, opened with an HTTP upgrade. Use it when the client also sends messages often.Lesson 5 →

Classic components

circuit breakerCircuit breaker
After many failures, stop calling a dependency for a while and fail fast. Then test now and then to see if it works again.Lesson 7 →
comboboxARIA combobox
The accessibility pattern for an input with a popup list. It uses aria-expanded and aria-activedescendant.Lesson 6 →
exponential backoffExponential backoff
Double the wait between retries (1 s, 2 s, 4 s…) up to a limit. A struggling service gets time to recover.Lesson 7 →
feature flagFeature flag
A switch that turns a feature on or off, or gives it to a share of users, without a new deploy.Lesson 7 →
IMEInput Method Editor
Software for typing languages like Chinese or Japanese in several steps. Do not search while the user is still composing.Lesson 6 →
jitterJitter
A bit of random time added to retry delays, so many clients do not retry at the same moment.Lesson 7 →
kill switchKill switch
A flag that switches a feature off at once during an incident.Lesson 7 →
LRULeast Recently Used
A cache that removes the entry that was not used for the longest time. A hash map plus a doubly linked list makes it O(1).Lesson 7 →
trieTrie (prefix tree)
A tree where each path spells a prefix. If each node stores the top suggestions, autocomplete takes O(prefix length).Lesson 6 →