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.
On this page
🎯 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)
- How much each fix buys, in nines: Availability and the nines
- How traffic actually moves to the standby: Failover
- Runtime techniques once the redundancy exists (timeouts, retries, bulkheads): Fault tolerance
- The vocabulary (faults, failures, SLOs): Reliability
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.
The same three-tier design, before and after a SPOF sweep
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:
- Pick the critical flows. "Place an order" and "view the product page", not every endpoint.
- Walk each flow from the user to the disk. DNS, CDN, load balancer, gateway, services, caches, queues, databases, third-party APIs.
- For each box, ask three questions. If it dies, what breaks? If it's slow, what breaks? Is there exactly one of it?
- 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.
- 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.
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'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.
Redundant on the diagram, one failure in real life
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)
- Azure Well-Architected: Architecture strategies for performing failure mode analysis: The systematic version of the sweep: decompose the workload, follow critical flows, list failure modes and blast radius.
- Azure Well-Architected: Architecture strategies for designing for redundancy: Where to add redundancy, layer by layer, sized to each flow's criticality.
- Amazon Builders' Library: Static stability using Availability Zones: How Amazon keeps a control-plane impairment or a zone loss from becoming a SPOF.
- Meta Engineering: More details about the October 4 outage: A backbone change took down DNS and the internal tools needed to fix it: hidden SPOFs in one incident.
- AWS: Summary of the Amazon S3 Service Disruption in the Northern Virginia (US-EAST-1) Region: One mistyped command, many dependent services, and a status dashboard that depended on the thing that was down.