NALSD — Non-Abstract Large System Design

The SRE Workbook's structured approach to system design interviews: requirements quantification, component sizing, and explicit trade-off documentation.

Overview

Non-abstract means real numbers

SRE Workbook Chapter 12 introduces Non-Abstract Large System Design (NALSD), a structured method for designing production systems that SREs must operate. "Non-abstract" is load-bearing: unlike whiteboard designs that wave at "a database" or "a cache," NALSD requires concrete numbers at every step.

Actual QPS, actual storage bytes, actual machine counts, actual failure domains.

> [!IMPORTANT] "A distributed system that requires 10,000 machines to handle a 1,000 QPS workload is not a good design, even if it is functionally correct." A review that skips capacity estimation cannot judge operational feasibility.

The five phases

  • 1. Clarify requirements — Functional (what the system must do) and non-functional (scale, latency targets, availability SLO, geographic distribution)
  • 2. Estimate capacity — Derive steady-state load from first principles, plus storage growth per day
  • 3. Design components — Which components, how they communicate, where state lives
  • 4. Analyze reliability — Single points of failure, failure domains, and whether the design meets the SLO under realistic failures
  • 5. Document trade-offs — What you sacrificed to get the design's strengths

Capacity from first principles

  • Users — 10M DAU
  • Requests per user per day — 50
  • Steady-state load — ~5,000 QPS
  • Peak load, 3x factor — ~15,000 QPS

Key concepts

NALSD
Non-Abstract Large System Design. A structured method requiring concrete numbers (QPS, storage, machine counts) at each design phase, not abstract component names.
Requirements phase
Establish functional requirements (what must it do) and non-functional requirements (scale, latency SLO, availability SLO, geographic constraints) before designing anything.
Capacity estimation
Derive steady-state QPS, storage growth rate, and bandwidth from first principles (DAU × requests/day, record size × write rate). The most-skipped and most-important design step.
Failure domain analysis
For each component, identify the blast radius of its failure: what breaks, how many users are affected, and whether the stated SLO can still be met.
Trade-off documentation
Every design choice has a cost. NALSD requires naming what you gave up: latency for throughput, consistency for availability, cost for redundancy.

When to use it

  • System design interviews — the NALSD framework gives a structured answer to "design X at Google scale"
  • Production readiness reviews — the reliability analysis phase exposes SPOFs before launch
  • Capacity planning for a new service — requirements → estimate → component → sizing
  • "Walk me through how you would design this system" — NALSD provides the five-phase structure

Interview questions

  • Walk through the NALSD method for designing a URL shortener serving 100M users.

Sign up free to read the full topic

More SRE topics

Start free on Cariara · Coding problems · System design studio