Networking & the Request Lifecycle
Trace a request from the address bar to a database row and back, naming every hop (DNS, TCP, TLS, CDN, LB, proxy, app, cache, database), the latency each adds, and where each can fail.
The Network Stack (OSI / TCP-IP)
Reason in the practical 5-layer stack and know that L4 sees only the 4-tuple while L7 can read and route on request content.
DNS Resolution & Traffic Steering
Use the cached resolver chain, TTL tradeoffs, and GeoDNS/latency/weighted routing with health checks to steer users to the nearest healthy region.
TCP & UDP Fundamentals
The TCP handshake and slow start make new connections expensive; reuse connections, multiplex, move endpoints closer, and reach for UDP when late data is worthless.
TLS / HTTPS & the Secure Handshake
TLS 1.3 is a 1-RTT handshake; cut cost with resumption and reuse, choose the termination point deliberately, and use mTLS for service identity.
HTTP/1.1 vs 2 vs 3 (QUIC)
Locate head-of-line blocking in each version: H1 blocks per request, H2 still stalls on TCP loss, H3/QUIC removes it, so H3 belongs at the mobile edge and H2/gRPC internally.
End-to-End Request Lifecycle
Name every hop from browser cache to database and back, the RTT each adds, the cache that can short-circuit it, and the timeout that bounds it.
API Design & Contracts
Choose the right API paradigm, design schema-first contracts that evolve without breaking clients, make mutations safe to retry, and use HTTP semantics, pagination, real-time delivery, and serialization like production systems do.
REST vs gRPC vs GraphQL
Match the paradigm to the consumer and traffic shape (REST public, gRPC internal, GraphQL flexible clients) and name what each choice costs.
Contract & Schema-First Design
Make a machine-readable schema the source of truth, design for tolerant additive evolution, and enforce compatibility with consumer-driven contract tests in CI.
Versioning & Backward Compatibility
Prefer additive change with tolerant readers so you rarely version, use visible /v1 path versioning for true breaks, and retire versions with deprecate-warn-remove.
Idempotency & Safe Retries
Give mutations a client-generated idempotency key, store the full response behind a unique-constraint insert, and turn at-least-once delivery into effectively-once.
Pagination & Error Modeling
Use opaque cursor/keyset pagination for O(1) stable paging, and RFC 9457 structured errors with precise status codes so clients retry 5xx/429 but never other 4xx.
Real-Time Delivery: Short-Poll, Long-Poll, SSE, WebSocket & Webhooks
Choose by direction, latency, per-connection cost, and delivery guarantee: SSE for one-way streaming, WebSocket for true duplex, webhooks for server-to-server.
HTTP Semantics: Methods, Status Codes & Caching Headers
Use safe/idempotent method semantics to drive retries and caching, conditional GETs with ETag for cheap 304s, and ETag + If-Match for optimistic concurrency.
Serialization, Content Negotiation & Compression
Choose format and codec by bottleneck (JSON+Brotli public, Protobuf+zstd internal), skip compressing tiny payloads, and keep schemas evolvable with field-tag discipline.
Edge, Proxies & Caching Foundations
Design the front half of any system: redundant load balancing over a stateless tier, an API gateway that owns cross-cutting concerns, and a full browser-to-database caching stack with a defensible invalidation strategy.
Load Balancing: L4 vs L7 & Health Checks
Pick L4 for raw speed or L7 for HTTP-aware routing and TLS, use least-connections for variable durations, and combine health checks with connection draining.
Reverse Proxy, API Gateway & the Edge
Push cross-cutting concerns (TLS, authn, rate limits, routing) to a thin gateway, shape per-client payloads with BFFs, and keep business logic in the services.
CDN & Caching Across Layers
Cache as high up the browser-CDN-app-Redis stack as possible, default to cache-aside, mix TTL/purge/event invalidation, and never let a shared cache hold user data.
Performance & Resilience Fundamentals
Reason about latency the way users experience it (tails, not averages), size systems with Little's Law, design timeouts/retries/breakers, protect against overload, and pick the right concurrency model.
Latency, Throughput, Percentiles & Little's Law
Averages hide the tail: target p99, understand how fan-out amplifies it, and size concurrency with Little's Law (L = arrival rate x latency).
Timeouts, Retries, Backoff & Circuit Breakers
Propagated deadlines on every call, retries gated by idempotency with backoff-jitter-budget, circuit breakers to fail fast, and bulkheads to contain the blast.
Backpressure, Flow Control & Load Shedding
Bound every queue, run below saturation (latency explodes near 100% utilization), and reject early with 429/503 while prioritizing critical traffic.
Server Concurrency Models: Thread-per-Request vs Event Loop & C10k
CPU-bound work wants a core-sized worker pool; IO-bound fan-out wants an event loop that you never block; past 10k connections, tune fds, ports, and memory.