Course contents

Single point of failure (SPOF)

Single points of failure for system design interviews: sweep a design box by box, find hidden SPOFs like DNS, certificates, config pushes, control planes and a single region, spot correlated redundancy, and pick the cheapest fix for each.

FreeMust know for interviewsLesson11 min readBeginner → SeniorReviewed Oct 2026
On this page
  1. Picture it first: one box, whole site dark
  2. The sweep: a method you can run out loud
  3. Hidden SPOFs: the boxes nobody drew
  4. Redundant on paper, one failure in real life
  5. Fix it, cheapest first
  6. How it shows up in design problems
  7. How to say it in the interview

🎯 What is a single point of failure?

A single point of failure (SPOF) is any one component whose failure stops the whole system, or a whole user journey, from working. Remember the old strings of Christmas lights where one dead bulb turned off every bulb on the string? Each bulb was a SPOF. In a design, it might be one database primary, one load balancer, one DNS provider, or one engineer who knows how the deploy works.

For this lesson, we'll learn to sweep a diagram box by box, find the SPOFs nobody drew (DNS, certificates, config pushes, a control plane, a person), spot redundancy that only looks redundant, and fix each one with the cheapest option that's good enough. Interviewers ask "are there any single points of failure here?" in nearly every round, because it tests whether you can look at your own design critically and in a systematic way, rather than defending it.

Below the line (out of scope)

The 30-second answer

A SPOF is any component whose failure alone takes the system down. I find them with a sweep: follow each critical request from DNS to disk, and for every box ask "if this dies, what breaks?" Then I look for what isn't drawn: DNS, certificates, config and deploy pipelines, control planes, coordinators, a single region, a single person. Stateless boxes get N+1 copies across zones, stateful ones get a standby with automatic failover, and managed multi-zone services cover the load balancer and database cheaply. Then I check the copies don't share power, config or a dependency, because correlated redundancy is still a SPOF. Some SPOFs I accept on purpose, and I say so.

What you’ll learn

  • Run a SPOF sweep out loud: walk each critical flow from DNS to disk and ask what breaks if a box dies
  • Name the hidden SPOFs that never appear on a diagram: DNS, certificates, config and deploys, control planes, a person
  • Spot correlated redundancy: copies that share power, a zone, a config push or a dependency
  • Choose the cheapest fix per SPOF: managed multi-zone service, N+1, standby with failover, quorum, cells, multi-region
  • Decide which SPOFs to accept on purpose, and say why

01Picture it first: one box, whole site dark

Here's the smallest design anyone draws: a load balancer, an app server and a database. Every box in it is a SPOF. The fix isn't "make everything redundant". It's a specific, cheap change per box, and the database needs a different fix from the other two, because it holds state.

Fig. 1

The same three-tier design, before and after a SPOF sweep

The same three-tier design, before and after a SPOF sweepTop: users reach one load balancer, one app server and one database. All three are single points of failure. Bottom: users reach a managed load balancer spread over two zones, three app servers across two zones, and a primary database with a standby in another zone fed by synchronous replication and promoted on failure.Before: three boxes, three SPOFsAfter: any one box can diesync copyUsersLoad balancerone instance1App serverone instance2Databaseone primary3UsersManaged LBspans 2 zonesApp servers3 instances2 zonesstatelessDB primaryzone 1DB standbyzone 2, promoted on failuredies: site downdies: site downdies: site down, data at riskCheapest fixes first: managed LB, N+1 stateless servers, a standby for the stateful box
Each box gets the cheapest fix that removes it as a SPOF. Stateless tiers get more copies across zones; the stateful database gets a standby that's already running and promoted on failure.

Notice that the "after" picture is barely more complex. Most SPOF fixes in an interview are one sentence and one extra box. The hard part is finding them, and the boxes that aren't on the diagram.

02The sweep: a method you can run out loud

Azure's Well-Architected guidance calls the formal version failure mode analysis: break the workload into components, follow each critical flow, and for every component ask how it can fail and what the blast radius is. In an interview I run a lighter version in about two minutes:

  1. Pick the critical flows. "Place an order" and "view the product page", not every endpoint.
  2. Walk each flow from the user to the disk. DNS, CDN, load balancer, gateway, services, caches, queues, databases, third-party APIs.
  3. For each box, ask three questions. If it dies, what breaks? If it's slow, what breaks? Is there exactly one of it?
  4. Rate it. How likely is the failure, and how many users does it hit? A one-in-ten-years event on an internal report can stay.
  5. Fix it or accept it, out loud. "I'll add a standby" or "I'm accepting this one because...".

Asking about reads and writes separately pays off: a database primary is often a SPOF for writes while replicas keep reads alive.

Try it yourself first

Before reading on, sweep this design. A mobile app resolves api.shop.com through one DNS provider, then hits a pair of load balancers, then six app servers, all in one zone. Sessions live on a single Redis node. Orders go to a Postgres primary with one asynchronous replica. A cron job on one VM sends invoices every night. The TLS certificate is renewed by hand once a year. List every SPOF and the cheapest fix for each.

Here's how I'd walk it:

Component If it dies SPOF? Cheapest fix
DNS provider Nobody can find the API Yes, a hidden one Second DNS provider, or a managed DNS service with a strong track record and long-enough TTLs
Load balancer pair The other one takes over No None needed (check they're in different zones)
Six app servers Five keep serving No, but... ...all six are in one zone, so the zone is the SPOF: spread them over 2-3 zones
Redis sessions Every user is logged out Yes Replica with automatic failover, or make sessions stateless (signed tokens)
Postgres primary Writes stop Yes, for writes Promote the replica automatically; make the standby synchronous if losing recent orders is unacceptable
Invoice cron VM Invoices don't go out Yes, but low urgency Accept it with an alert, or run it on a scheduler with leader election
Manual TLS renewal Every client fails the handshake on expiry day Yes, a hidden one Automated renewal plus an expiry alert weeks ahead

Notice that the two worst items, DNS and the certificate, aren't boxes on the diagram at all. And notice the "No, but..." row: six servers sounds redundant until you ask where they live.

03Hidden SPOFs: the boxes nobody drew

The obvious SPOFs (one database, one load balancer, one cache node) are the ones interviewers expect you to catch. The ones that separate a senior answer are shared things that sit underneath every box:

Hidden SPOF Why it bites Typical fix
DNS If names don't resolve, nothing else matters Managed DNS, a secondary provider, sensible TTLs
TLS certificates Expiry fails every connection at once, on a known date Automated renewal, expiry alerts
Config and deploy pipeline One bad push reaches every replica in minutes Staged rollouts zone by zone, fast rollback
Control plane Recovery needs it exactly when it's impaired Static stability: keep spare capacity running
Coordinator or leader One ZooKeeper, one scheduler, one lock server A 3- or 5-node quorum (survives 1 or 2 failures)
A single region A regional outage takes everything Multi-region only if the budget justifies it (Disaster recovery)
Your tooling Dashboards and runbooks that depend on the thing that's down Host status and access paths outside the main system
One person Only Priya knows how to fail over the database Runbooks, rotations, practised drills

Two real incidents show how these chain together.

Facebook, October 2021: DNS and tooling on the same network

In Facebook's write-up of its October 4 outage, a routine maintenance command unintentionally took down the backbone connecting its data centres, and a bug in the audit tool failed to stop it. Facebook's DNS servers are designed to withdraw their BGP advertisements when they can't reach the data centres, so they became unreachable even though they were still running. The loss of DNS also broke many internal tools engineers would normally use, and with normal and out-of-band access down, engineers had to go on site. The backbone was a shared dependency under DNS, the apps and the recovery tooling at once.

AWS S3, February 2017: a dependency under the status page

AWS's summary of the S3 disruption in US-EAST-1 says an input to a capacity-removal command was entered incorrectly, removing more servers than intended and forcing a full restart of the index and placement subsystems. Other AWS services in the region that relied on S3 were affected too. The AWS Service Health Dashboard's admin console depended on S3, so for a while AWS couldn't update service status there; afterwards it changed the console to run across multiple regions.

The lesson from both: your recovery path and your status page are part of the system. Sweep them too.

04Redundant on paper, one failure in real life

Two boxes on a whiteboard aren't automatically two failure domains. If both servers hang off one power feed, one top-of-rack switch or one zone, a single fault takes both. The same goes for things you can't see on any diagram: the same config, the same deploy, the same OS image, the same bug.

Fig. 2

Redundant on the diagram, one failure in real life

Redundant on the diagram, one failure in real lifeLeft: two servers drawn as a redundant pair both hang off one power feed and one rack switch, so a single fault takes both down. Right: the same two servers placed in two zones, each with its own power and network, so one fault takes down only one. A note at the bottom lists other things replicas often share: config pushes, deploys, the OS image and the same bug.Looks redundantActually independentServer AServer BOne power feed,one rack switchServer AServer BPower + networkzone 1Power + networkzone 2one fault, both downone fault, one serverReplicas also share things you cannot see here: a config push, a deploy, the OS image, the same bug
Redundancy only counts if the copies fail separately. Two servers on one power feed are one failure domain; the same two in different zones are two.
Where candidates slip

Many candidates "fix" a SPOF by drawing a second box and moving on. Interviewers then ask "what do those two share?", and the answer is often a zone, a database or a deploy pipeline. Say where the copies live and what they don't share. The second trap is redundancy you never test: a standby that has never been promoted, or a backup never restored, is a hope, not a fix. The third is gold-plating: making every box multi-region when the requirements only justify multi-zone. Matching the fix to the requirement is part of the answer.

05Fix it, cheapest first

Once you've found a SPOF, go up this ladder only as far as the requirements push you:

Step Fix Removes Cost
1 Use a managed, multi-zone service (load balancer, database, queue) Most infrastructure SPOFs Low: a config choice
2 N+1 stateless instances across 2-3 zones Single server, single zone Low: one or two extra instances
3 Standby for stateful components with automatic failover Single DB primary, cache node, leader Medium: extra instance, replication lag or latency
4 Quorum for coordination (3 or 5 nodes) Single coordinator or lock server Medium: more nodes, consensus latency
5 Isolation: cells or shuffle sharding One bad tenant or deploy hitting everyone Medium to high: routing layer
6 Multi-region active-passive or active-active Region loss High: data replication, cost, complexity

A few defaults I use:

  • N+1 vs N+2. N+1 means one spare beyond the capacity you need. N+2 means you can lose one instance while another is down for a deploy or maintenance. For the critical path I'd say N+2, or N+1 per zone across three zones.
  • Stateless first. Moving state out of a box (sessions into signed tokens or a replicated store) turns a hard SPOF into an easy one.
  • Accept some on purpose. An internal admin tool, a nightly batch job that can rerun, a single-region analytics pipeline. Saying "this is a SPOF and I'm accepting it because the impact is small" is a strong signal, not a weak one.

Azure's guidance on designing for redundancy lands in the same place: size redundancy to how critical each flow is, prefer managed services that handle replication and failover for you, and keep enough spare capacity that the survivors aren't overloaded when a copy dies. Two nodes each running at 60% can't absorb each other.

06How it shows up in design problems

Every design round has a SPOF moment. These are the ones where it's the heart of the problem:

  • Design a distributed lock: the lock service itself is the SPOF everyone forgets. The answer is a quorum (Consensus algorithms, ZooKeeper and etcd) plus leases so a dead holder doesn't block forever.
  • Design a job scheduler: one scheduler process is a SPOF; several running at once fire jobs twice. You need leader election and idempotent jobs.
  • Design a distributed cache: one node per shard is a SPOF for that key range, and a hot key can make one node the bottleneck. Replicas per shard and data replication fix the first.
  • Design a payment system: the external payment provider is a dependency you can't make redundant yourself; some designs add a second provider for exactly this reason.

For the infrastructure pieces, see Load balancing and DNS. For how a dead node gets noticed in the first place, see the health checks pattern.

07How to say it in the interview

When I ask "any single points of failure?", I'm listening for a systematic sweep rather than a guess, at least one hidden SPOF that isn't on the board, and a fix sized to the requirement. Candidates who say "I'd accept this one, here's why" usually impress me more than those who make everything redundant.

In the interview

"Let me sweep the order flow from DNS to disk. DNS is a managed service, and I'd automate certificate renewal with an expiry alert, because both are SPOFs that never show up on a diagram. The load balancer is a managed multi-zone service. The app tier is stateless, N+1 per zone across three zones, so a server or a zone can go. Sessions are signed tokens, so there's no session store to lose. The database primary is a SPOF for writes, so I'd add a synchronous standby in another zone with automatic failover; reads keep going from replicas during the switch. Then I'd check what the copies share: config and deploys roll out zone by zone so one bad push can't hit all of them. The nightly reporting job runs on one worker. That's a SPOF I'd accept, with an alert and a rerun, because a late report doesn't hurt users."

On the whiteboard

  • SPOF = one box down -> journey down
  • sweep: flow by flow, DNS -> disk, "if this dies / is slow?"
  • hidden: DNS, certs, config/deploy, control plane, coordinator, region, tooling, a person
  • copies must not share: power, zone, config push, dependency
  • fixes: managed multi-zone -> N+1 -> standby + failover -> quorum -> cells -> multi-region
  • N+2 on the critical path (failure during deploy)
  • accept low-impact SPOFs out loud
Further reading (5)