InfoWok

Failure Modes and Resilience: Interview Follow-Ups (2026)

The interview half of resilience: a four-step answer to 'what happens when X is down?', dependency walk-throughs, health checks that do not cause outages, hedged requests, shedding by priority, error budgets, game days and what each level is expected to say.

SK
Sukhveer Kaur
Published October 24, 2026
9 min read
Open in ChatGPT Open in Claude
Resilience follow-ups: a dependency marked down with four steps beside it, detect, contain, degrade and recover, under the line what happens when it is downSoftware Architecture
RESILIENCE FOLLOW-UPS
On this page +

The design is drawn. Then the interviewer points at one box and asks: “What happens when this is down?” Candidates who list every pattern they know sound rehearsed. Candidates who walk one failure from the first error to the recovery sound like they have been on call.

This lesson is the second half of Failure modes and resilience patterns, which explains timeouts, retries, breakers, bulkheads and load shedding. Here the same tools are turned into answers.

Intermediate30 min
Before you start
Remember from the core lesson

Five layers each retry three times. What load does the database see, and which single change helps most? It sees 243 times the original load. Retrying at one layer only is the biggest single fix, and a retry budget caps what is left.

Key takeaways
  • Answer “what if X is down?” in four steps: detect, contain, degrade, recover. Name the real timeout, pool and fallback.
  • Liveness checks the process, readiness checks it can serve. A liveness probe that checks a dependency turns one outage into a restart storm.
  • Hedge only idempotent, slow-tail reads, after about the p95 latency, so extra load stays small.
  • Shed by importance and bound queue wait. Health checks and finishing work in progress come first.
  • An error budget turns “be reliable” into a number. Test failure paths on purpose, because an unused fallback is probably broken.
After this lesson you can

Answer “what happens when X is down?” for any box in a design, set health checks that help instead of hurt, decide when to hedge and when to shed by priority, link resilience to an error budget, and state what a mid, senior and staff answer sounds like.

The Four-Step Answer#

Predict first

An interviewer says: “The payment provider is down.” Name the first thing you would say. Is it a pattern, or a question?

The strong first move is a question: “Is it down, or slow, and for which operations?” Slow and down need different handling, as the core lesson showed. Then walk four steps.

  1. Detect. A timeout on every call, an error-rate alert, and a breaker state change that pages someone.
  2. Contain. A bulkhead so the sick dependency cannot take every worker, a breaker so callers stop waiting, and a retry budget so retries do not become the load.
  3. Degrade. The user gets a reduced but honest answer: cached, queued for later, or a clear message.
  4. Recover. Half-open probes, jittered backoff and gradual traffic, so the dependency is not flattened the moment it returns.

Dependency Walk-Throughs#

These rows are design judgement, not measurements. Each applies the four steps to a box an interviewer is likely to pick.

Dependency downContainDegrade
CacheCap database load with a short timeout and request coalescingServe from the database at lower rate, shed low-priority reads
Primary databaseFail writes fast, keep reads on replicasRead-only mode with a banner, queue writes if they can wait
Auth serviceCache validated tokens for their lifetimeExisting sessions continue, new logins fail with a clear message
Payment providerOwn pool and breaker, no blind retryAccept the order as pending, charge later with an idempotency key
RecommendationsOwn pool, tight timeoutShow a static popular list
Message brokerLocal buffer with a size capAccept work to a retry queue, tell the user it is delayed

Two details separate a good answer from a list. First, name what you refuse to degrade: the payment row accepts an order but never claims money was taken. Second, say who is told. A silent fallback hides an outage from the people who could fix it.

Do not fail open on money or access

A fallback that skips an authorisation check or serves a stale balance is a security or correctness bug, not resilience. Fail closed where the wrong answer costs more than no answer.

Health Checks That Do Not Cause Outages#

A load balancer or orchestrator needs to know which instances can take traffic. The Google SRE book separates two questions: process health (“is this binary responding at all?”) and service health (“can it respond to this class of request right now?”). The first suits the scheduler, the second the load balancer.

Kubernetes names three probes in its documentation:

ProbeQuestionOn failure
StartupHas the app finished starting?Container killed and restarted
LivenessIs it stuck, for example deadlocked?Container restarted
ReadinessCan it take traffic now?Removed from Service endpoints, not restarted

The trap is wiring a dependency into liveness. If the database goes down and every pod’s liveness probe checks it, Kubernetes restarts every pod together, each starts cold, and the outage grows. The same page says liveness probes must truly indicate unrecoverable failure, and that incorrect ones can cause cascading failures. Put dependency checks in readiness, and even there prefer checking a flag set by your breaker over a fresh call to the database from every probe.

Cold starts matter too

The SRE book warns that a freshly started process is often slower until its caches fill, so a restart storm hits an already stressed system.

Hedged Requests and Tail Latency#

Retries answer failure. Hedging answers slowness. The Tail at Scale paper (Dean and Barroso, CACM 2013) shows why tails matter: if a request must collect answers from 100 servers and each is slow one time in a hundred, 63% of requests see at least one slow answer.

A hedged request sends a second copy to another replica once the first has waited longer than about the 95th-percentile latency, then uses whichever answers first and cancels the other. The paper reports that this caps extra load near 5%. In its BigTable benchmark, reading 1,000 keys across 100 servers with a 10 ms hedge cut the 99.9th-percentile latency from 1,800 ms to 74 ms for 2% more requests.

Hedging has rules, which are design judgement built on the paper:

  • Hedge only idempotent operations, usually reads.
  • Hedge only when the dependency has spare capacity. Hedging an overloaded service is a retry storm with a better name.
  • Count hedges inside the retry budget, so the two do not add up.

Shed by Importance, Bound the Wait#

The core lesson covered load shedding in general. Amazon’s overload article adds the detail interviewers probe:

  • Health checks come first. If the server misses the load balancer’s pings, the balancer stops sending it traffic, so the server sits idle while overloaded. Keep a path for them.
  • Finish work before starting more. The article prioritises end() calls over start() calls, and later pages of a paginated request over the first page.
  • Bound queue wait. It recommends an upper limit on how long a request sits in a queue, and discarding anything older.
  • Watch the median. In the same article, a service shedding 60% of its traffic can show a flattering median latency, so measure goodput and the shed rate too.

Backpressure is the same idea pointed upstream: when a queue is full, push back on the sender, with a rejection or a slower accept rate, instead of buffering without limit. An unbounded queue only moves the failure to memory and adds delay no client will wait for. This definition is design judgement, not from a single source.

Retries Need Idempotency#

Retries and hedges send the same operation twice, so the operation must survive it. Amazon’s article notes that EC2’s RunInstances API accepts an explicit token so a repeat does not create a second instance. Azure’s guidance says a repeated increment or a duplicate queue message can corrupt state unless each step is idempotent.

For a payment, the pattern looks like this:

text
client: one key per intent
every attempt sends the key
server: store result under key
repeat key -> return stored result

The server answers a repeat from the stored result. The message delivery lesson covers the dedupe table.

Resilience Has a Budget#

An SLO sets how much failure is acceptable. The Google SRE Workbook defines the error budget as 100% minus the SLO.

text
SLO 99.9% over 30 days
minutes = 30 x 24 x 60 = 43,200
budget = 0.1% x 43,200 = 43.2 min

If a recommendations outage returns errors on the whole product page, 43 minutes of it spends the entire month. If a fallback serves a static list, the same outage spends almost none. That is the business case for a fallback, and a number to quote when someone asks why the team spent a sprint on one.

Alert on the burn rate

Alert on how fast the budget burns, not just on outages. The Workbook describes an error budget policy: when the budget is gone, reliability work comes before features.

Test the Failure Paths#

A fallback that has never run is a guess. The SRE book says “the code path you never use is the code path that (often) doesn’t work”, and suggests running a small subset of servers near overload to exercise degradation. It also advises load testing components until they break, with both gradual and sudden load.

Azure’s retry guidance suggests a mock dependency that returns the errors you handle, and fault injection, such as Azure Chaos Studio, for latency and process kills. A simple game day plan:

  1. State a hypothesis: “If recommendations is slow, checkout stays within its error budget.”
  2. Limit the blast radius: one cell, a small slice of traffic, a named stop button.
  3. Inject the fault, watch the breaker, queue depth and error budget.
  4. Fix what surprised you, and rerun.

Try It: Walk One Failure#

Exercise · The search service is slow10 min

A product page calls a search service for “related items”. Assume search’s p99 rises from 80 ms to 6 s during an incident. The page has a 2 s deadline and 300 requests a second, each calling search once. Answer in the four steps:

  1. What is the pool size needed in normal times, by Little’s law, and what happens at 6 s?
  2. What does the user see?
  3. What do you alert on?
Hint

Start with in flight = rate x time. Then ask what a 2 s deadline does to the 6 s calls.

One answer
text
Normal: 24 in flight (300 x 0.08)
Sick: 300/s x 2 s deadline = 600
Pool of 50 caps it; rest fail fast
Breaker opens: no related items

The deadline matters. The page never waits past 2 s, so each call holds a worker for at most 2 s, not 6.

A pool of about 50 (roughly twice normal, a judgement call) stops search taking every worker. The breaker opens once errors pass its threshold, and the page renders without the related-items row. The user sees a complete page minus one section. Alert on breaker state, timeout rate and fallback rate, and spend of the error budget. Add jittered half-open probes so recovery is gradual.

What Each Level Should Say#

This table is design judgement about interview expectations, not a published standard.

LevelA strong answer
MidNames timeouts, retries with backoff and a breaker, and says why retries can hurt
SeniorAdds deadlines, a retry budget at one layer, a bulkhead per dependency, a fallback with its limits, and what to alert on
StaffAdds blast radius and cells, SLO and error budget trade-offs, readiness vs liveness, safe recovery, game days, and what not to degrade
Strong and weak signals

Strong: asks whether the dependency is down or slow, quantifies with a pool or retry calculation, names what the user sees, and says how the fallback is tested. Weak: a list of pattern names, retries everywhere, a fallback that hides failures, or no way to know it is happening.

The 45-Minute Plan for a Resilience Round#

This pacing is a suggestion for a round that centres on failure handling.

MinutesDo
0 to 5Draw the call graph, mark critical and optional dependencies
5 to 15Timeouts, deadlines and where retries live, with the multiplication
15 to 25Breaker, bulkhead and fallback for the two riskiest dependencies
25 to 35Shedding, health checks, recovery
35 to 45SLO, alerts, game day, and follow-ups
In an interview
They askAnswer in one line
The dependency is slow, not down?Deadline, bulkhead, breaker on latency
Retries made it worse?One layer, jitter, budget
It recovers and falls over again?Half-open probes, gradual ramp, jitter
Pods restart in a loop?Liveness checked a dependency; move it to readiness
Tail latency on a fan-out?Hedge reads after p95, count in the budget
Overload with a full queue?Bound the wait, shed by priority
Duplicate charges?Idempotency key stored with the result
How do you know the fallback works?Game day, plus a small live slice
Why not a breaker everywhere?Modal behaviour; local resources and queues do not need one

Check Yourself#

Check yourself4 questions · answer, then open
1.Why is a database check in the liveness probe dangerous?

When the database fails, every pod fails liveness together and is restarted, which adds cold starts to an outage. Liveness should show only that the process is stuck. Readiness can reflect dependencies.

2.When is hedging a bad idea?

When the operation is not idempotent, or when the dependency is already overloaded, because the extra copy adds load to a service that is struggling.

3.A 99.9% SLO over 30 days: how many minutes of full outage does it allow?

0.1% of 43,200 minutes, which is 43.2 minutes. Partial degradation spends less, which is why fallbacks protect the budget.

4.Why bound how long a request waits in a queue?

A request that waits past the client’s timeout is work nobody will read. Dropping it frees capacity for requests that still matter.

Learning tip

Pick any system you know. For each arrow in its diagram write the four words: detect, contain, degrade, recover. Any blank is a follow-up question waiting for you.

In One Picture#

text
Down?  ask: down or slow, which op
Steps  detect, contain, degrade,
  recover
Probe  liveness = process stuck
  readiness = can serve
Hedge  idempotent reads, after p95
Shed   health checks and finishing
  work first, bound the wait
Budget 99.9% / 30 days = 43.2 min
Test   game day, then repeat

Name the failure, quantify it, say what the user sees, and say how you know it works.

Where to go from here

Frequently asked questions

How do you answer "what happens when this service is down?" +
Walk four steps: how you detect it, how you contain it so callers do not pile up, what the user still gets, and how it recovers without a stampede. Name the timeout, breaker, bulkhead and fallback for that one dependency instead of listing patterns.
Should a liveness probe check the database? +
No. Kubernetes restarts a container whose liveness probe fails, and its docs warn that careless liveness probes can cause cascading failures. A database outage would restart every pod. Check the app itself in liveness, and put dependency checks in readiness.
What is a hedged request? +
A second copy of a request, sent to another replica after the first has waited longer than about the 95th-percentile latency. The first answer wins and the other is cancelled. Google's Tail at Scale paper reports about 5% extra load for a much shorter tail.
How do error budgets connect to resilience? +
The error budget is 100% minus the SLO. A 99.9% target over 30 days allows about 43 minutes of failure. Retry limits, breakers and fallbacks decide how much of that budget one bad dependency spends.

References

  1. Kubernetes documentation — Liveness, readiness and startup probes
  2. Google SRE Book — Addressing Cascading Failures
  3. Amazon Builders' Library — Using load shedding to avoid overload
  4. Amazon Builders' Library — Timeouts, retries, and backoff with jitter
  5. Dean and Barroso — The Tail at Scale (CACM, 2013)
  6. Google SRE Workbook — Implementing SLOs
  7. Azure Architecture Center — Transient fault handling and retry guidance
  8. Azure Architecture Center — Circuit Breaker pattern
Written by
Sukhveer Kaur
Sukhveer KaurSoftware Developer & AI Engineer

Sukhveer is a software developer specialising in AI systems and backend engineering. She has hands-on experience designing agentic AI applications, working with large language model pipelines, autonomous agent frameworks, and cloud-native services in Java and Python. At InfoWok, she bridges the gap between cutting-edge AI research and practical implementation — helping developers understand and apply emerging technologies through clear, experience-backed writing.

New AI engineering guides, the day they ship

Real Python, production depth. No digest spam.

Comments