Skip to main content
CF
System Design thumbnail

System Design

44 courses 2 categories

System design is the discipline of putting services, data stores, queues, caches, and clients together so that the resulting system meets its functional requirements at the load and latency it actually has to handle. The topic covers both the backend side (sharding, replication, consistency, distributed transactions, queue-based decoupling) and the frontend side (client-side caching, rendering strategies, CDN architecture, asset delivery) — two distinct skill trees that share vocabulary but solve different problems.

The 2026 reality is that most production systems are converging on a small set of patterns. CDN in front, an API gateway or load balancer, stateless application servers, a primary relational database with read replicas, Redis for cache and ephemeral state, an object store for blobs, a queue (SQS, Kafka, RabbitMQ) for async work, and observability with OpenTelemetry feeding into Grafana or Datadog. The interesting decisions are no longer "Postgres or Mongo" but "where exactly does the read split happen," "what is idempotent vs not," and "how does this system behave when a region goes dark."

What you'll find under this topic

  • Scaling patterns: horizontal vs vertical, sharding, read replicas, write-through cache
  • Distributed systems fundamentals: CAP, consensus, leader election, quorum reads
  • Caching strategies: cache-aside, write-through, write-behind, invalidation problems
  • Async architecture: queues, event streams, outbox pattern, sagas
  • Frontend system design: render strategies, asset pipelines, edge compute, CDN tiers
  • Reliability: retries, circuit breakers, timeouts, bulkheads, graceful degradation
  • Capacity planning: back-of-envelope estimation, load tests, headroom budgeting

System design shows up twice in most senior engineers' careers: in the interview loop (where it is one of the highest-signal rounds at any FAANG-tier company) and on the job, every time a feature outgrows its original architecture. The patterns transfer across employers because the physics underneath — network latency, disk seeks, queue saturation — do not change.

Categories (2)

Frontend System Design thumbnail
Frontend system design is the system-design discipline applied to client-side architecture. The questions look…
System Design & Architecture thumbnail
System design is the discipline of choosing how a software system is laid out at the level above any single codebase…

Courses (44)

Showing 130 of 44 courses

Frequently asked questions

How important is system design for senior roles?
Decisive. Almost every senior, staff, and principal interview loop includes one or two system-design rounds, and the bar rises steeply with level. Strong algorithmic skill is necessary but not sufficient; what differentiates senior offers is the ability to scope ambiguous problems, propose architectures, and discuss tradeoffs without hand-waving. Worth treating as a core skill, not an interview-only one.
How do I learn system design without senior production experience?
Read 'Designing Data-Intensive Applications', a handful of system-design-focused books and video courses, and especially real engineering blogs (Discord, Figma, Stripe, GitHub, Cloudflare, Notion). Build smaller systems end-to-end so the tradeoffs feel concrete rather than theoretical. Mock interviews with peers are essential — the gap between knowing and articulating is large.
What topics come up most in system-design interviews?
Load balancing, caching strategies, database scaling (read replicas, sharding, partitioning), CAP and consistency tradeoffs, message queues, rate limiting, geo-distribution, observability, the design of common products (news feed, chat, URL shortener, geo search, rate limiter, payment ledger). Senior loops also test schema design, capacity estimation, and incident handling.
Do I need to memorise specific numbers (latency, QPS)?
Useful to know the order of magnitude — disk vs RAM vs network, single-node QPS for common systems, rough latency for cache hits versus database calls. Interviewers don't expect exact figures, but they do expect you to estimate capacity and bandwidth at the right scale. Jeff Dean's classic 'latency numbers' list is worth internalising.
System design vs distributed systems theory — what's the difference?
System design is the applied interview-and-practice skill of architecting real products. Distributed systems theory is the academic underpinning — consensus protocols, formal consistency models, failure detectors. Theory makes you sharper at design and is required for some specialist roles, but most senior interviews focus firmly on the applied tier.

Top instructors in System Design

Authors with the most System Design courses on CourseFlix.