System Design Interview Questions: Reliability & Availability
Reviewed by Mark Dickie · Last updated
Availability in system design is the fraction of time a service is operational and able to serve requests, typically expressed as a percentage of uptime over a given period (e.g., 99.9% per month). For interview purposes, reliability and availability are closely linked: reliability asks whether the system produces correct results, while availability asks whether the system is up to serve them at all. You should be able to reason about SLA/SLO targets, translate "nines" into concrete downtime budgets, and explain how redundancy, replication, and failover strategies keep a system within those budgets.
Reliability and availability questions tend to test whether you can identify single points of failure, choose the right redundancy pattern for a given workload, and explain the tradeoffs between consistency and uptime that the CAP theorem imposes.
What does a system design interview test about availability?
Interviewers want to see that you can take a vague reliability requirement ("the service should almost never go down") and turn it into concrete architectural decisions. That means knowing the vocabulary, the math behind uptime budgets, and the standard patterns engineers use to stay within them.
| Concept | What to know for the interview |
|---|---|
| SLI | A measurable indicator of service health (e.g., request latency p99, error rate) |
| SLO | The target you set for an SLI (e.g., 99% of requests under 200 ms) |
| SLA | The contractual consequence of missing an SLO (often a refund or credit) |
| Nines | Shorthand for availability percentage; each nine roughly halves the allowed downtime |
| Redundancy | Running multiple copies of a component so one failure does not take down the system |
How do you translate availability targets into downtime budgets?
A common interview warm-up is converting a percentage into real minutes of allowable downtime. Each additional nine shrinks the budget by roughly ten times:
- 99% (two nines) allows about 3.65 days of downtime per year, or 7.2 hours per month.
- 99.9% (three nines) allows about 8.76 hours per year, or 43.8 minutes per month.
- 99.99% (four nines) allows about 52.6 minutes per year, or 4.38 minutes per month.
- 99.999% (five nines) allows about 5.26 minutes per year, or 26 seconds per month.
What patterns do interviewers expect you to mention?
When asked to improve a system's availability, draw on the standard set of fault-tolerance techniques and explain when each one fits:
- Active-passive failover: a standby replica takes over when the primary dies. Simpler to reason about, but the standby adds cost without handling traffic during normal operation.
- Active-active redundancy: multiple nodes serve traffic concurrently. Better utilization and faster failover, but you must handle write conflicts or use consensus.
- Quorum-based replication: writes and reads require agreement from a majority of replicas. Trades some latency for stronger durability guarantees.
- Graceful degradation: shed non-critical features under load so the core path stays available (e.g., switch a recommendation feed to cached results).
- Circuit breakers: stop calling a downstream service that is failing, so its outage does not cascade into your own service.
How does the CAP theorem constrain availability?
CAP says that during a network partition you must choose between consistency and availability. In practice, most teams pick partition tolerance (P) as non-negotiable because networks do partition, then decide per subsystem whether consistency or availability matters more. A payments ledger leans toward CP; a product-search cache leans toward AP. Being able to name that tradeoff and justify it for the specific service in your design is often what separates a passing answer from a strong one.
Key facts
- Tarmac has 19 System Design interview questions on this topic, 10 of them on this page, at difficulty 2–5 of 5.
- Tarmac tracked 4,937 job postings asking for System Design in August 2026.
- Roles asking for System Design advertise a median base salary of US$182,500, across 1,211 job postings as of August 2026.
- Tarmac last reviewed these System Design interview questions on 14 September 2026.
At a glance
| Questions | 10 shown · 19 in the bank |
|---|---|
| Difficulty | 2–5 of 5 |
| Formats | Multiple choice, True / false, Ordering, Short answer, Fill in the blank, Multiple answer |
What you'll review
- availability
Practice questions
Try one before you open the answer. Pick an option and press Check; it's marked on the spot.
System Design/sd-reliability/availability
A web service is composed of three independent components, each with an availability of 99%. All three components must be operational for the service to function (i.e., they are in series). What is the overall availability of the service?#
Options
Show answer
The overall availability is 97.03%. When components are arranged in series—meaning all must be operational simultaneously—you multiply their individual availabilities: 0.99 × 0.99 × 0.99 ≈ 0.9703, or 97.03%. Each additional serial dependency compounds downtime risk, which is why minimizing critical-path dependencies improves overall system reliability.
When components are arranged in series (all must be up), the combined availability is the product of each component's availability. With three components each at 99% (0.99), the overall availability is 0.99 × 0.99 × 0.99 = 0.970299, or approximately 97.03%. This is why reducing the number of serial dependencies or improving individual component reliability is critical in system design.
System Design/sd-reliability/availability
Adding redundant (parallel) replicas of a component always increases the overall availability of a system, regardless of how many replicas are added.#
Options
Show answer
False. Adding parallel replicas generally improves availability — the system fails only when all replicas fail — but it does not always help. Replicas sharing a common failure domain (same rack, power supply, or availability zone) are vulnerable to correlated failures that can take all of them down simultaneously. Beyond a few replicas, improvements also become negligibly small.
While adding parallel replicas generally improves availability because the component only fails if ALL replicas fail simultaneously, it does not help indefinitely. In practice, there are diminishing returns — the improvement becomes negligible after a few replicas. More importantly, if the replicas share a common failure domain (e.g., same power supply, same network switch, same availability zone), a correlated failure can bring all of them down at once, making redundancy ineffective. The statement is therefore false in general.
System Design/sd-reliability/availability
A production service has just experienced a full outage. Place the following incident-response steps in the correct order, from first to last, according to industry-standard SRE practice. Note: assume each step represents the primary focus of that phase, and that ongoing parallel activities (e.g., communication) have already begun at declaration.#
Put these in order
Show answer
The correct order is: (1) Detect/declare the incident and send an initial 'investigating' notification, (2) Mitigate the immediate impact, (3) Diagnose the root cause once the service is stabilising, (4) Fully resolve the incident and send an all-clear, (5) Conduct a blameless post-mortem. SRE practice prioritises stopping the outage first ('stop the bleeding'), with communication starting at declaration rather than as a later discrete step.
Standard SRE incident response is governed by 'stop the bleeding first,' but initial communication is embedded in the declaration step rather than treated as a separate later phase. Step 1 (a): monitoring fires, an incident is declared, an incident commander is assigned, and an immediate 'we are investigating' notice goes out to stakeholders — communication begins here, not after mitigation. Step 2 (b): the team applies the fastest available remediation (rollback, failover, traffic rerouting) to minimise MTTR; this is the primary focus until service is restored. Step 3 (c): with the immediate impact contained and the service stabilising, the team pivots to diagnosing the root cause; earlier exploratory diagnosis may have run in parallel, but deep analysis becomes the primary focus only after mitigation succeeds. Step 4 (d): once the root cause is understood and fully resolved, the incident is formally closed, the status page is updated to 'resolved', and a final all-clear is sent. Step 5 (e): after full resolution, the team conducts a blameless post-mortem, documents contributing factors, and prioritises long-term corrective actions to prevent recurrence. By folding the initial stakeholder notification into the declaration step, the ordering avoids ambiguity about where communication sits relative to mitigation and diagnosis.
System Design/sd-reliability/availability
A service has an SLO of 99.9% monthly availability. In a 30-day month, how many minutes of allowable downtime does that SLO budget provide? Show your calculation and explain what this figure is called in SRE practice.#
Show answer
A 30-day month contains 30 × 24 × 60 = 43,200 minutes. 99.9% availability means 0.1% downtime is allowed: 43,200 × 0.001 = 43.2 minutes of allowable downtime. This budget is called the error budget. It represents the maximum amount of unreliability (downtime, errors, or latency violations) the service is permitted to have while still meeting its SLO, and it guides decisions about how aggressively new features can be shipped versus how much stability work must be prioritised.
The calculation is straightforward: 30 days × 24 h × 60 min = 43,200 total minutes. 99.9% uptime leaves 0.1% for downtime: 43,200 × 0.001 = 43.2 minutes. The correct SRE term for this allowance is the 'error budget.' Understanding error budgets is critical for mid-level system design because they translate abstract SLO percentages into concrete operational guidance—when the budget is nearly exhausted, feature releases are slowed to protect reliability.
System Design/sd-reliability/availability
An availability target of _____ percent is referred to as "three nines" and permits roughly _____ of downtime per year.#
Show answer
An availability target of 99.9 percent is referred to as "three nines" and permits roughly 8.76 hours of downtime per year.
99.9% ('three nines') leaves 0.1% of a 8,760-hour year unavailable, which is about 8.76 hours per year. Each additional nine cuts allowed downtime by 10x — four nines (99.99%) is ~52 minutes/year, five nines (99.999%) is ~5 minutes/year. Knowing these conversions lets you sanity-check whether a proposed SLA is realistic given the architecture's redundancy and failover design.
System Design/sd-reliability/availability
Your team is designing a globally distributed payment service that must achieve 99.99% availability (≈52 minutes downtime/year). Which of the following architectural decisions directly contribute to hitting that target? Select all that apply.#
Options
Pick every one that applies.
Show answer
The decisions that directly contribute to 99.99% availability are: (a) active-active multi-region deployment with DNS failover, (c) circuit breakers to stop cascading failures, and (d) idempotent async messaging to decouple callers from downstream outages. A single-region Redis primary introduces a SPOF, and a monolithic rolling-restart strategy does not inherently address the availability target.
Active-active multi-region failover (a) eliminates single-region SPOFs and keeps the service up during region-level outages. Circuit breakers (c) prevent a failing dependency from cascading and taking down the entire service. Idempotent async messaging (d) decouples availability of the caller from the availability of downstream services, making partial outages invisible to end users. A single Redis primary (b) is itself a SPOF—losing it loses sessions globally—so it hurts availability. A monolithic rolling restart (e) can improve deploy uptime, but a monolith is not inherently more available than microservices and does not directly address the 99.99% target; it is neutral-to-negative for this goal.
System Design/sd-reliability/availability
A production database replica falls behind the primary and eventually becomes unavailable. Place the following automated recovery steps in the correct order that a well-designed high-availability system should execute them.#
Put these in order
Show answer
The correct order is: (1) health-check detects the replica as unhealthy, (2) the load balancer removes it from the read pool, (3) an alert fires and traffic is rerouted to healthy nodes, (4) automation provisions a replacement replica that begins replication catch-up, and (5) the replacement is re-added to the pool only after replication lag reaches near-zero. This sequence minimises user impact while ensuring no stale node is prematurely reintroduced.
The canonical sequence is: (1) detect failure via health-check, (2) immediately stop sending traffic to the failed node so user impact is minimised, (3) notify humans and redirect traffic to healthy capacity, (4) provision replacement and let it catch up, (5) only re-introduce the node after it is verified healthy and in sync. Skipping detection before routing removal would send requests to a broken node; re-introducing a lagging replica before confirming lag ≈ 0 can serve stale or inconsistent data.
System Design/sd-reliability/availability
You are reviewing the SLO definition for a critical checkout service. The SLO states: "P99 latency < 500 ms, measured over a rolling 30-day window."#
Show answer
The blind spot is that a pure latency percentile SLO measured over a rolling 30-day window can hide severe but short availability windows. For example, if the service goes completely down for 10 minutes, those failed requests typically generate errors (not high-latency responses) and may be excluded from the latency percentile calculation entirely—meaning P99 latency looks fine even though users experienced a total outage. Additionally, a 30-day window dilutes recent spikes with a large volume of historical good data, masking acute degradation. A concrete fix is to add a complementary error-rate / availability SLO (e.g., 'success rate ≥ 99.9% of requests over any 5-minute window'), measured as a separate indicator. This ensures that request failures—not just slow requests—count against the SLO budget, giving a complete picture of user-facing reliability.
A latency-only SLO is a classic availability blind spot: when the service is completely down, requests fail fast (often with a TCP reset or immediate 5xx) rather than timing out, so they record near-zero latency or are excluded from percentile calculations altogether. The P99 therefore looks healthy during an outage. The fix is to pair every latency SLO with an error-rate/availability SLO so that both slowness and unavailability are captured in the error budget.
System Design/sd-reliability/availability
A critical payment pipeline consists of three microservices called in strict sequence (A → B → C). Each request must pass through all three for the transaction to succeed. The individual availability SLAs are:#
Options
Show answer
The correct composite availability is approximately 99.84%, corresponding to roughly 70 minutes of downtime per month. When services are chained in series, their availabilities multiply: 0.9999 × 0.9995 × 0.9990 ≈ 0.9984. This means you lose nines relative to every individual component — the pipeline is less reliable than its weakest link. Neither the best SLA nor the worst SLA alone determines the composite; the product does.
This question tests deep knowledge of availability math and SLA composition. When services are chained sequentially, their availabilities multiply: 0.9999 × 0.9995 × 0.9990 = 0.9984005. Expressed as nines, 0.9984 ≈ 99.84%, which is between two-nines (99%) and three-nines (99.9%). The composite is only ~99.84% available, meaning roughly 1.4 hours of downtime per month — far less than any single component's SLA. This is a critical trap: engineers often assume the 'best' component's SLA dominates, but in series, the worst combination wins and you always lose nines.
System Design/sd-reliability/availability
You operate a 5-node Raft cluster (nodes N1–N5) used as the coordination backbone for a high-availability service. The cluster experiences a network partition that splits into two groups: {N1, N2} and {N3, N4, N5}. The current Raft leader is N1.#
Options
Pick every one that applies.
Show answer
The correct statements are B, C, and D. The majority partition {N3, N4, N5} can elect a new leader and commit entries (B). N1 cannot commit new entries without quorum, and may step down either proactively (via check-quorum in implementations like etcd) or upon receiving a higher-term message (C). Clients on the minority side requiring linearizable reads will get errors or unavailable responses since N1 cannot confirm leadership without quorum (D).
In a 5-node Raft cluster, a quorum of 3 nodes is required to commit any log entry. Option A is wrong: N1 cannot commit new entries because it can only hear acknowledgments from N2 (2 nodes < quorum of 3); leadership alone does not grant commit authority. Option B is correct: {N3, N4, N5} form a majority of 3 and will hold an election after their election timers fire without receiving heartbeats from N1, electing a new leader capable of committing writes. Option C is correct: N1 cannot commit new entries because quorum is unreachable with only N2. The Raft paper (Figure 2) does not mandate a proactive step-down on replication failure, but many production implementations (e.g., etcd's check-quorum) do cause N1 to step down after an election timeout of missed quorum acknowledgments. The statement correctly reflects both behaviors — N1 cannot commit regardless, and the precise step-down timing is implementation-dependent. Option D is correct: clients requiring linearizable reads routed to N1 or N2 cannot be safely served; a correct implementation must return an error or unavailable response because N1 cannot confirm it holds current leadership without quorum, and serving reads without that confirmation would violate linearizability. Option E is wrong: {N1, N2} has only 2 nodes and cannot form a quorum of 3, so no leader election in that partition can succeed.
Related interview questions
Job market
See system-design salaries and hiring demand from live job postings.
The other 9 questions
This page shows 10 and marks what you pick. That's as far as a page can go. A free account opens the other 9 and keeps every answer. What you miss comes back until it's right: after a day, then at longer gaps.
Free · the whole bank · 100 marked answers per 30 days · written feedback on the paid plan