Engineering

What belongs in a disaster recovery plan

Editorial · Reveneau · October 30, 2026

What belongs in a disaster recovery plan

We have sat in more than one planning session where the disaster recovery plan was a page in a wiki, last edited by someone who left the company, describing a backup process nobody in the room had actually run. Everyone nodded. Nobody had restored from that backup in the past year. That gap between a plan that reads well and a plan that works is the subject of this post, because it is also the gap that turns an outage into an outage that costs a business its data.

A disaster recovery plan is not a description of your backup system. It is a tested procedure for getting a working system back inside a time limit you have written down, with a named person responsible for making that happen. Four things separate a plan that meets that bar from a document that only looks like one: numeric targets, a verified restore, a named owner per failure mode, and an honest record of what happens when you actually try.

Set RTO and RPO as numbers, not adjectives

RTO, recovery time objective, is how long the system can be down before the cost becomes unacceptable to the business. RPO, recovery point objective, is how much data you can afford to lose, measured in time since the last good backup. Both need to be a number: "four hours" and "fifteen minutes," not "as fast as possible" and "minimal data loss."

The reason a number matters is that it forces a decision your backup schedule has to match. If your RPO is fifteen minutes, a nightly backup already fails the plan on day one, and everyone in the room needs to know that before an outage, not during one. If your RTO is four hours, a restore process that takes six hours is not a disaster recovery plan, it is a longer disaster.

Write one RTO and one RPO per system, not one pair for the whole company. A marketing site and a payments ledger do not carry the same cost per hour of downtime, and a single blanket target usually means the number was picked to sound reasonable rather than to match what any one system actually needs.

Verify the restore, not the backup

This is where most plans quietly fail, and it is worth being specific about why. A backup existing is a fact a monitoring dashboard can confirm on its own: a file landed in storage, a snapshot completed, a job ran to success. A backup restoring into a working system is a different fact, and nothing checks it automatically unless someone builds that check.

The gap between those two facts is not a small one. Veeam's 2026 Data Trust and Resilience Report, based on more than 900 senior IT, security, and risk leaders worldwide, found that 90 percent expressed confidence in their ability to recover quickly from a cyber incident. Among organizations that had actually been hit by ransomware, only 28 percent fully restored all affected data, and 44 percent recovered less than 75 percent of it. Confidence and proof are two different things, and the report's own framing names "proven recovery through realistic testing and validation" as one of the capabilities that separates the organizations that actually recover from the ones that only believed they would.

A verified restore is a scheduled event with a recorded outcome, not a step someone assumes happened during setup two years ago. Restore into an isolated environment that mirrors production closely enough to catch the real problems: a schema that drifted since the backup script was written, an environment variable nobody updated, a restore script that pointed at infrastructure that no longer exists. Time the whole thing, from the moment you declare the drill started to the moment the restored system is confirmed working, and write that number down next to your stated RTO. If the two numbers do not match, you have found the actual gap in your plan before an outage found it for you.

Name an owner for every failure mode, not a team

"Engineering owns disaster recovery" is not an answer anyone can act on at three in the morning. Every person on a team the size of engineering will reasonably assume someone else has it, and that assumption is exactly how a real incident goes unanswered for the first critical hour.

The fix is specific: one named person, or one named on-call rotation with a real paging path, per failure mode. Database corruption has an owner. A compromised credential has an owner, and it may not be the same owner. A full region outage on your cloud provider has an owner. Write the name, not the department, next to each scenario, along with how to reach them and what their first three actions are.

This matters more, not less, once a build includes AI-written code, because the failure surface is wider and less predictable by default. Reveneau builds against an eval suite, automated checks written from the specification, precisely so that a defect gets caught before it ships rather than discovered during an incident. But an eval suite tells you a system meets its spec. It does not tell you who answers the page when the underlying infrastructure fails for reasons the spec never covered, which is exactly the job a named owner does.

Keep a record of every restore attempt, including the failed ones

A disaster recovery plan without a log is a plan with no evidence behind it. The log does not need to be complicated: date, system, what was tested, how long it took, what passed, what failed, what changed afterward. What it needs is to exist and to include the failures.

Teams often skip logging a failed drill because it feels like admitting the plan does not work. That instinct gets it backward. A failed drill that gets logged and fixed is the entire reason the drill exists. A failed drill that gets quietly forgotten means the same failure is waiting, unrecorded, for the day it happens for real, and the Uptime Institute's 2026 Annual Outage Analysis is a reminder of how often the cause on the day it happens for real is not exotic: the report names failure to follow established procedure as the leading driver among human-error outages, which is precisely the kind of gap a written, followed log closes.

What this looks like when we scope a build

When we plan a system's reliability with a client, the disaster recovery conversation happens before the first line of infrastructure code, not after launch. We set the RTO and RPO per system with whoever owns the cost of downtime for that system, we write the restore test into the eval suite so it runs on a schedule rather than depending on someone remembering, and we name the owner for each failure mode as part of the handoff, not as a follow-up task. A plan built in that order has already answered the question an outage would otherwise ask for the first time.

None of this is complicated. It is four commitments: a number for how long you can be down, a number for how much you can afford to lose, a restore that has actually been run and timed, and a name next to every way the system can fail. A disaster recovery plan you have not tested is a guess wearing the shape of a plan, and the only way to know which one you have is to try the restore before you need it.

Sources

Common questions

What is the difference between RTO and RPO?

RTO, recovery time objective, is how long the system can be down before the cost becomes unacceptable, stated as a number like four hours. RPO, recovery point objective, is how much data the business can afford to lose, stated as a number like fifteen minutes, and it comes from your backup frequency, not from a wish.

Why do most disaster recovery plans fail when they are actually needed?

Because most plans list where backups are stored but nobody has restored from one recently, so the plan is unverified until the day it is tested by a real outage. A backup that exists and a backup that restores cleanly are two different facts, and only one of them shows up on a status dashboard.

How often should a backup restore be tested?

On a schedule your team commits to and tracks, not on a schedule you assume happened. A quarterly full restore with a written pass or fail result is a reasonable baseline for most teams, and any system with a strict RTO deserves a tighter interval than that.

Who should own a disaster recovery plan?

Every failure mode needs one named person or one named on-call team, not "engineering" as a group. A plan that names a team instead of a role or a rotation is a plan nobody will follow at 3 a.m., because everyone will assume someone else has it.

What should a disaster recovery plan actually contain?

Four things at minimum: a numeric RTO and RPO for each system, a documented and scheduled restore test with a recorded outcome, a named owner per failure mode with contact information, and a log of every past restore attempt including the ones that failed. A plan missing any of these four is a document, not an operational tool.

Is a cloud provider's built-in backup enough for disaster recovery?

A managed backup service covers the mechanics of storing data on a schedule, but it does not know your recovery time target, does not test whether your specific application restores in a working state, and does not tell you who acts when it fails. The plan layer, the targets, the test, the owner, still has to be built on top of it.

What is the difference between a backup and a disaster recovery plan?

A backup is a copy of data. A disaster recovery plan is the tested procedure that turns that copy back into a running system inside a stated time limit, with a named person responsible for making it happen. Having the first without the second means you have preserved data you may not be able to use in time.

How do you test a disaster recovery plan without disrupting production?

Restore into an isolated environment that mirrors production closely enough to catch real problems, such as schema drift, missing environment variables, or a restore script nobody updated after the last migration. Time the whole process from the moment the outage is declared to the moment the system is verified working, and record that number against your stated RTO.

What is a realistic RTO for a small engineering team?

There is no single correct number. It depends on what the system does and what an hour of downtime costs the business, so it should come from a conversation between engineering and whoever owns that cost, not from a template. What matters is that the number is written down, specific, and checked against a real restore rather than assumed.

Why do backup verification failures happen so often?

Because verifying that a backup exists is a status check a monitoring tool can run automatically, while verifying that it restores into a working system takes a human to run the restore, check the result, and write it down. The first is easy to automate and the second is easy to skip, so teams end up with strong evidence for the wrong question.