Disaster Recovery and Business Continuity Questions
Planning and executing recovery from large-scale outages and disasters. Covers recovery objectives (RTO/RPO), failover and backup strategy, DR runbook automation, and business-continuity planning that keeps critical operations running through major disruptions. The resilience-and-recovery planning discipline for worst-case events.
What does a disaster recovery runbook actually need to contain to be usable by someone under pressure at 3am, and who should own keeping each section current? Walk through the essential sections and why each one earns its place.
Sample Answer
Direct answer
A usable 3 a.m. runbook has to work for someone who is tired, stressed, and not the person who wrote it, so every section exists to answer a question that person will actually have in the moment: am I authorized to act, exactly what do I do, how do I know it worked, and who do I call if it doesn't. Ownership has to be distributed across the people who actually know each piece, not centralized in whoever happened to draft the document, because a runbook only stays accurate if its owner is the one who'd notice when their piece goes stale.
Essential sections and why each earns its place
| Section | What it answers | Typical owner |
|---|---|---|
| Purpose, scope & triggers | What event this runbook is for, and the specific conditions that mean "use this one" | Service or function lead |
| Preconditions & prerequisites | What has to already be true or confirmed before starting (e.g., declaration made, backup integrity confirmed where relevant) | Continuity or incident commander |
| Roles & ownership for this runbook | Who executes, who verifies, who's the backup if the primary is unreachable | Engineering manager / function lead |
| Step-by-step procedure | Ordered, numbered actions specific enough for someone unfamiliar with the system to follow | The person closest to the recovery work, reviewed by their manager |
| Verification checks | Concrete, observable confirmation each major step actually worked, not just that it executed | Whoever owns that step |
| Rollback criteria & procedure | The specific conditions that mean "this isn't working, reverse it," and how | Release / change owner |
| Estimated per-step timelines | A rough expectation for how long each major step should take | Step owner, refined after each real use or exercise |
| Contact lists & escalation matrix | Who to reach, and at what elapsed time or procedural point each escalation level triggers | On-call / escalation manager |
| Communication templates | Pre-written internal and external status language for this scenario | Communications lead |
| Post-recovery actions | Root-cause capture, runbook update, scheduling the next exercise of this runbook | Incident commander |
A precondition section without a trigger stops someone from starting a recovery sequence that assumes a decision hasn't actually been made. A verification section separate from the step it checks exists because executing a step isn't the same as confirming it succeeded, and conflating the two is how partial recoveries get reported as complete. A per-step timeline exists so someone can tell "this is taking the expected amount of time" from "this step has stalled and needs escalation," a distinction that's very hard to judge from scratch under pressure.
Multiple runbook types, not one document
A mature program doesn't maintain a single generic "disaster runbook." It maintains several distinct runbooks, each using this same skeleton but with different triggers, sequencing, and named owners: one for a full data-center-loss scenario, with its own escalation and contact list because the responders differ; one specifically for a ransomware or security-incident scenario, where the preconditions section is doing much more work because it has to gate on backup-integrity confirmation before any restore step; one for a database primary-region outage specifically, where the contact-list and timeline sections matter even more, since escalation routes to the database team and expected step durations look different from other scenarios; and one for a critical third-party or vendor outage. Treating these as separate documents, rather than branches inside one bloated runbook, keeps each one short enough to actually follow under pressure. NIST's SP 800-34 contingency-planning guidance, written for U.S. federal information systems but widely used as a general template, reflects this same idea: multiple purpose-specific plans rather than one document trying to cover every scenario.
Maintenance ownership
Every section above has a named owner specifically because "the runbook" as a whole has no natural owner. Distributing ownership by section is what keeps individual pieces current as systems and people change, paired with a fixed review cadence tied to the service's criticality tier, the same logic as the exercise cadence, so staleness gets caught on a schedule rather than discovered during a real event.
Worked example: critical authentication service outage
- Purpose & scope: use this runbook when the primary authentication service is confirmed unreachable or failing above a defined threshold of login attempts.
- Preconditions: confirm this isn't a downstream dependency issue (check the identity provider's own status) before proceeding; confirm continuity declaration has occurred if the outage has crossed the Tier 1 trigger duration.
- Step-by-step (abbreviated): (1) engage the secondary authentication path per the platform team's documented failover procedure; (2) notify downstream service owners that authentication is degraded, using the pre-written template; (3) confirm with each downstream owner that their service functions against the backup path.
- Verification: confirm login success rate has returned to the expected baseline range, and confirm at least the top dependent services report normal operation, not just that the failover step completed.
- Rollback criteria: if the backup path itself shows elevated failures beyond a defined threshold, escalate to the platform on-call lead rather than continuing to push traffic through it.
- Escalation: unresolved after 30 minutes, escalate to the platform engineering manager; unresolved after 60 minutes, escalate to the incident commander for continuity-declaration review.
This mirrors the same skeleton the data-center-loss, ransomware, and database-outage runbooks use, with the specific triggers, steps, and named escalation owners swapped for what's actually true of authentication as a service.
Trade-offs and pitfalls
- A runbook centralized under one owner tends to rot, because no single person notices every section going stale. Section-level ownership is more work to coordinate but far more likely to stay accurate.
- Steps that are too vague ("restore the service") fail exactly when they're needed most; steps scripted too rigidly for every possible variation become unmaintainable and get skipped. The right level of detail is specific enough to follow without deep system expertise, general enough to survive minor environment changes.
- Skipping verification checks in favor of "the step ran without erroring" produces false-confidence recoveries that unravel later, often in front of a customer.
- A single sprawling runbook trying to cover every disaster type becomes too long to use under pressure; splitting into scenario-specific runbooks with a shared skeleton keeps each one usable, at the cost of a bit more coordination to keep the shared skeleton consistent across all of them.
- Estimated timelines never revisited after real exercises stay theoretical and stop being useful for spotting a stalled step; they need the same review cadence as the rest of the document.
You're partway through a sequenced recovery when a third-party dependency you were counting on stays down longer than expected. Which services do you bring online anyway, how do you handle the transactions that would normally rely on that dependency, and how do you communicate the degraded state to customers in the meantime?
Sample Answer
Direct answer. Bring online everything that doesn't strictly need the down dependency, and put a firm, visible hold on anything that does, rather than letting it silently degrade or silently retry. Decide what "handling a transaction" means without the dependency in a way that never risks a customer being charged, billed, or committed twice: hold, don't guess. And tell customers proactively, in plain language, before they have to ask.
1. Decide what comes online, using criticality, not convenience
This decision should trace back to the business impact analysis, the process that ranks business functions by how much an hour or a day of downtime actually costs, so it isn't made ad hoc mid-incident. Functions that don't touch the down dependency come online first. Functions that touch it only on a non-essential path (browsing, viewing account history) come online in a read-only or informational mode. Functions where the dependency is essential to the transaction itself (authorizing a new charge) stay explicitly gated, not silently attempted.
The authority to declare "we're operating in a degraded state" and to approve which functions run that way should be defined in the continuity plan ahead of time, not improvised in the room. That's usually someone senior enough to own the customer and regulatory risk of the decision, not just whoever is closest to the outage.
2. Handle the affected transactions without guessing
Accept the transaction, record the customer's intent, and hold it in a clearly marked pending state rather than attempting it against a dependency that isn't there, or silently retrying it in the background where the customer can't see what happened. Be honest about the state: "received and pending" is very different from letting a customer believe it went through, and that distinction is also what stops a customer from trying again themselves out of uncertainty.
When the dependency comes back, process the backlog in order and reconcile before declaring the incident closed: confirm, transaction by transaction, that what your system believes happened matches what the dependency's own records show, and follow up individually on anything that doesn't match rather than assuming the queue drained cleanly.
3. Communicate the degraded state to customers
Say something before they have to ask. A visible status message in the product itself, not only on a status page nobody checks mid-transaction, that names what's affected, sets expectations (their action is saved but pending, not lost), and gives a realistic timeframe, even a wide one, beats silence. Update it as the situation changes, and if any pending items need a customer to take action, reach out directly instead of leaving them to notice on their own. Keep the message consistent across channels so a customer who checks two of them doesn't get two different stories on top of the outage itself.
4. Protect service levels for what's still running
The functions still online need their own expectations reset for the duration. It's reasonable to temporarily relax targets for anything adjacent to the affected dependency (background jobs that would also normally touch it) so they don't cause a second incident by retrying aggressively against something that's down. That should be a deliberate, communicated decision, not something that just happens because nobody planned for it.
Worked example
A checkout flow depends on a third-party payment processor down for two hours, well past what anyone expected. Browsing, cart building, and order history don't touch the processor, so they stay fully online. Checkout is gated: a customer can complete every step through "place order," and the order is recorded as pending payment with the cart and the chosen payment method captured, but no charge is attempted. The product tells them directly: order saved, payment processing is delayed, confirmation will follow once it's back, expected within the hour. No background retry loop fires against the processor. When it recovers, pending orders are processed in the order placed, and each is reconciled against the processor's own transaction record before being marked complete, so a customer is never charged twice even if an earlier attempt is later discovered to have partially gone through.
Trade-offs & pitfalls. The tempting shortcut is to keep retrying the transaction in the background hoping the dependency returns soon; that's exactly how a customer ends up double-charged if the retry succeeds silently after they've already tried again themselves out of frustration. Hold and communicate, don't guess and retry. Silence is worse than an honest "we don't know exactly when," because customers who get no information assume the worst or attempt workarounds that make reconciliation harder afterward. And bringing too much online too fast, without a clear degraded-mode decision from someone with the authority to own that risk, is how a team ends up shipping a feature that looks live but isn't actually safe to depend on.
After a full-scale DR drill, you've found several gaps. Design a post-exercise review process: how findings get classified as people, process, or technology gaps, how remediation gets prioritized and assigned an owner and a timeline, and how you'd verify a fix actually closes the gap instead of just getting marked done.
Sample Answer
Direct answer
After a drill I run a structured post-exercise review that classifies every finding as people, process, or technology, scores it for severity, assigns a single named owner and a due date scaled to that severity, and requires an independent verification test before the finding can be closed, not just the owner's word that it's fixed. Individual findings then roll up into a small set of trend metrics that a recurring governance review looks at, so leadership can tell whether the continuity program is actually improving over time rather than just accumulating a backlog of open tickets.
Structured elaboration
Classification. People (training, staffing, or awareness gaps, like nobody being reachable at the right time), process (a missing, wrong, or unclear runbook step), or technology (a system or tooling failure). Many findings are genuinely two categories at once, for example an automated failover script that failed is a technology issue, but nobody catching the error before the drill is a process issue in the review or testing procedure itself; classify the root cause that, if fixed, prevents recurrence, not just the surface symptom.
Severity and ownership. Score each finding by business impact: does it threaten a documented recovery time objective (RTO, the target time to get a function working again) or recovery point objective (RPO, how much recent data the function can afford to lose, measured in time), or does it block declaration authority (who has the standing to formally declare and activate the plan) entirely? Assign one accountable owner per finding, with a sponsor who can escalate if it stalls. Critical findings get the shortest fuse and the most visible tracking.
Verification before closure. The distinction that matters most: "marked done" is not the same as "closed." A finding should only close once there's an independent verification test, ideally at the next scheduled exercise from the tabletop-to-full-scale ladder, confirming the fix actually works, not a self-report from the person who made the change.
Governance cadence and trend metrics. Individual findings feed a recurring review, for example a quarterly continuity steering meeting, that tracks two things at the aggregate level: how quickly findings are actually closing (with verification, not just ticket status), and whether the same root cause is recurring across drills, which indicates the underlying plan or system was never really fixed the first time. This is what turns a series of one-off reviews into evidence the program is maturing, and it's also the artifact regulators and auditors typically want (see the regulatory-obligations answer on this topic for what a compliance program expects to see documented).
Tooling. Track findings in a central, auditable system (a ticketing tool with status, owner, and due date, not a slide deck that gets archived and forgotten), since the whole point of the review is a defensible trail from finding to verified fix.
Worked example
A team ran four quarterly drills and tracked how many days it took to close each Critical finding, from the day it was logged to the day its verification test passed. In Q3, five Critical findings closed with these lead times in days: 12, 18, 21, 25, and 29.
Average close time=512+18+21+25+29=5105=21 daysThat 21-day average, tracked quarter over quarter alongside a second metric (the percentage of findings that recur in a later drill), is what the quarterly steering review actually looks at. A shrinking average close time with a low recurrence rate is real evidence the program is improving; a shrinking close time with a high recurrence rate usually means findings are being marked closed to hit the metric without the underlying gap actually being fixed, which is exactly why the verification-test requirement exists.
Trade-offs and pitfalls
Measuring only closure speed creates a perverse incentive to close findings before they're actually fixed, which is why speed has to be paired with a recurrence-rate metric, not tracked alone. Remediation work reliably stalls when the team is busy with feature delivery unless a named executive sponsor has the standing to protect capacity for it; without that sponsor, "we'll get to it" quietly becomes never. It's also worth being explicit about what this process is not: it's a review of the continuity plan and program itself, not a technical incident post-mortem of a system failure, so the findings and remediation often land on documentation, staffing, and ownership as often as they land on a system fix.
Design and facilitate a tabletop exercise for a specific scenario, say the loss of your primary data center for several hours. Who's in the room, what injects would you introduce as the scenario unfolds, and what are you actually probing for in how people respond?
Sample Answer
Direct answer
A tabletop exercise is a facilitated, discussion-based drill: participants talk through how they'd respond to a scenario in real time, in their actual roles and using the real plan, without touching production systems, distinct from a functional exercise (partial live actions) or a full-interruption test (an actual failover or live activation). For a primary-data-center-loss scenario, the room needs the same roles that would activate in a real event, a sequence of timed injects that escalate realistically, and a facilitator whose job is to probe decision-making and plan gaps, not to check whether anyone remembers the right terminology.
Who's in the room
Mirror the real activation roster, not a subset: the continuity commander or their designated backup (which also tests the succession structure), function leads for the services most exposed by the scenario, the communications lead, and, since data-center loss carries real business and legal weight, a legal or compliance representative and a finance representative who can speak to emergency-spend authorization. An executive observer is useful for buy-in but should stay observing, not steering.
Structuring the injects
Injects are short, timed pieces of new information dropped into the scenario to force decisions, not a single static scenario dumped up front. Good injects escalate:
- T+0: "Monitoring shows the primary data center has lost power; status unknown." Tests whether anyone moves to declare or the group waits for certainty.
- T+20 min: "Power confirmed out, no restoration ETA from the facility. Two Tier 1 services are now inaccessible." Tests whether the group applies the criticality tiers to prioritize, and whether declaration actually happens.
- T+45 min: "Customer support is fielding a spike in complaints and asking what to tell customers." Tests whether the pre-agreed communications cadence and templates get used.
- T+90 min: "The facility now says restoration could take 6-8 hours, not the 1-2 originally estimated." Tests whether the group re-evaluates its recovery sequencing and communications, or stays anchored to the first estimate.
A genuinely useful alternate scenario, testing different plan assumptions, is a regional outage that takes down authentication and payments specifically rather than a single data center: because those two services sit upstream of almost everything else, this scenario is better at exposing dependency-ordering gaps, which service has to come back first because everything else depends on it, than a straightforward single-site loss.
What the facilitator is actually probing for
Not whether participants can recite the runbook, but whether the plan itself holds up under realistic pressure: does the right person actually step up to declare, or does the room wait for permission that was supposed to be pre-granted; do function leads know their own recovery sequencing without being told; does the communications lead use the pre-built templates or improvise, under time pressure, exactly what the templates exist to prevent; and when an inject invalidates an earlier assumption, does the group visibly adapt or keep executing a plan that no longer fits the facts. The gaps surfaced here are the actual output of the exercise, more than the scenario itself.
Capturing readiness afterward
The exercise should produce artifacts, not just a shared feeling that it went fine:
- A timestamped log of decisions made and by whom, using the same decision-log discipline as a real event, which doubles as practice for that skill.
- A list of plan gaps or ambiguities surfaced by each inject.
- Explicit action items with owners and due dates.
- A short facilitator's readiness note scoring how close the group's real-time behavior tracked the documented plan, and whether any divergence revealed a plan flaw or a training gap.
These artifacts are what make the exercise auditable and feed the next plan revision, rather than the exercise being a one-off team-building event.
Worked example
Continuing the T+90 inject above: told the outage will now run 6-8 hours instead of 1-2, the finance representative in the exercise realizes the pre-approved emergency-spend threshold only covers a 2-hour activation of the backup facility contract, and the group has to work out, live, who can authorize the additional spend. That gap, an approval threshold that never anticipated a longer event, is exactly the kind of finding a tabletop is meant to surface cheaply, before it's discovered for real during an actual multi-hour outage.
Trade-offs and pitfalls
- Making the scenario too easy, a clean, fast resolution, teaches nothing. The value concentrates in injects that force genuine judgment calls and expose where the plan is silent or wrong.
- Running the exercise with only technical responders, leaving out legal, finance, or comms, validates only part of the plan and gives false confidence about the rest.
- A tabletop that never produces a documented action item is a team-building exercise, not a continuity exercise. The artifacts are the point, not just the conversation.
- Reusing the same scenario every time tests memorized responses, not real plan quality. Rotating scenario type, single-site loss, service-specific regional outage, third-party or supplier failure, surfaces different weaknesses each round.
Runbooks and continuity documentation go stale fast once systems, teams, and org structure keep changing. How do you keep them accurate over time? Cover ownership, versioning, and how you'd catch drift before it matters during a real event rather than after.
Sample Answer
Direct answer. Ownership has to be a named role tied to the business function or system the runbook covers, not "whoever wrote it last," with versioning that ties each revision to a specific trigger, not just a date. Catching drift before a real event means testing the runbook during a planned exercise instead of discovering it's wrong while executing it under pressure, paired with a lightweight review trigger whenever something the runbook depends on changes.
1. Ownership
Assign a named owner to every runbook, ideally the person or role accountable for the business function or system it covers, not a shared team inbox and not necessarily the original author, who may move on. Ownership means being responsible for the runbook's accuracy, not personally executing every step during a real event. Make it visible on the document itself (name, role, last-reviewed date) so anyone opening it during an incident can see who to ask if something looks wrong, and so a stale "owner" who's left the organization is an obvious red flag rather than a hidden one. When ownership changes hands, require an explicit handoff with a fresh review as part of the transition, not a silent reassignment.
2. Versioning
Treat runbooks as controlled documents: every change gets a version number, a date, who made it, and why, kept in the document's own change history rather than relying on file metadata or institutional memory. Tie versions to triggers, not just a calendar. A scheduled review is a reasonable baseline, but the more reliable trigger is linking review to the events that actually make a runbook wrong: the system it depends on changes, the org structure around it changes, or a real exercise or incident surfaces a gap. A runbook untouched for eighteen months right after the system it describes was rebuilt is far more suspect than one reviewed on schedule six months ago. Keep prior versions accessible, not just the latest, so a post-event review can tell whether a gap that showed up was already known and fixed but hadn't propagated to whoever was executing, or was genuinely new.
3. Catching drift before it matters
The strongest mechanism is using the runbook for real, on a schedule, inside an exercise (a tabletop discussion or a functional exercise that actually executes some steps), before a live event forces the discovery. A runbook nobody has walked through since it was written is a hypothesis, not a tested procedure. Build a lightweight checklist step into whatever process generates the kind of change that breaks runbooks: when a system change, a supplier change, or an org change is being planned, that process flags which runbooks might be affected, so the review happens close to the change instead of being discovered much later. Track a simple staleness signal across the whole runbook set (time since last review, time since the system or team it covers last changed) and report on it the way you'd report any other risk metric, so an accumulating backlog of unreviewed runbooks is visible to whoever owns the continuity program overall, not discovered runbook by runbook.
Worked example
A payments-processing runbook is owned by the payments platform lead, currently at version 4: v2 added a fallback provider, v3 corrected an escalation contact list after a reorg, v4 followed a functional exercise that found the documented rollback step no longer matched how the system actually rolled back. Six months after v4, the team migrates the payments platform to new infrastructure as part of an unrelated project. Because "infrastructure migration for a system with an owned runbook" sits on that project's change-review checklist, the payments platform lead is flagged automatically and confirms the runbook needs an update before the migration ships, catching the drift as part of the planned change rather than during the next incident. At the next scheduled functional exercise three months later, the team walks through the updated runbook end to end and finds one further step, a monitoring dashboard link, still pointing at the decommissioned infrastructure. That becomes a logged finding and v5.
Trade-offs & pitfalls. A purely calendar-based review cadence catches drift too slowly for a fast-changing system and too often for a stable one; tying review to real change triggers is more work to set up but matches effort to actual risk. Ownership without accountability for staleness (a name on a document nobody ever checks) is barely better than no ownership; the staleness signal has to surface to someone, not just exist. And testing a runbook only during a real event is the worst possible time to discover it's wrong: the exercise programme is what lets a team find the gap on an ordinary afternoon instead of during an actual outage.
Unlock Full Question Bank
Get access to all 20 Disaster Recovery and Business Continuity interview questions and detailed answers.
Sign in to ContinueJoin thousands of developers preparing for their dream job.