HIVE80lab — Ops notes

RTO and RPO for small teams: the two numbers that price your backups

Every disaster-recovery document has two acronyms in it, and most small teams copied them from an enterprise template: RTO 4 hours, RPO 15 minutes. Then the disk dies on a Thursday evening, and the real numbers turn out to be RPO 22 hours (the nightly dump ran at 02:00) and RTO 19 hours (nobody had ever restored it before). The declared numbers were not a plan; they were a mood. RTO and RPO are useful exactly when they are treated as prices: RPO is how much work you can afford to lose, RTO is how long your customers can afford to wait, and every improvement in either costs real money every month.

This note defines the two numbers in customer terms, sets them per service tier so they are affordable, shows the arithmetic that prices them, lists the five traps that make them lie, and gives a one-afternoon rollout anchored on a restore drill you can run this week.

1. What the two numbers actually mean

2. Set them per tier, not per company

One pair of numbers for the whole company is a category error: the checkout database and the internal wiki do not have the same value per hour. Set RTO/RPO where the tiers already live — the service catalog — and let the tier do the arguing:

The test for each number is affordability: write down what the next 10× improvement costs — managed PITR vs nightly dumps vs a warm standby — and pick the cheapest number the business can actually absorb. A number you cannot afford to implement is not an objective; it is a wish with an acronym.

3. The arithmetic that prices the promise

4. The five traps

Declaring enterprise numbers with small-team plumbing. RPO 15 minutes written above a nightly cron job is not ambition, it is fiction with a footer. Measure the current gap first (when did the last restorable copy happen?), then declare, then buy down if the tier needs it.

RTO measured to “server up.” The database host is back; the app now replays two days of queue, rebuilds search indexes, and support answers “where did my Tuesday go?” The customer clock runs until the promise is kept — the severity language you already use should end at the same line.

Backups that have never been restored. A backup is a hope until a restore has been run end to end — same law as the untested rollback script in the change review. The restore drill checklist exists because the first drill almost always finds that the dump is fine and everything around it (credentials, network path, disk space, ordering) is not.

One number for the whole company. The DR PDF says 4 hours; the ingest pipeline's customers lose a day and the checkout queue loses nothing, because they have different tiers. Declare per service, per tier — or the number is an average of things that never happen.

Numbers that grew stale silently. The RTO was rehearsed when the database was 20 GB; two years later the restore takes nine hours and the dump window overlaps business hours. RTO/RPO decay as data grows — which is why the drill is a calendar event, not a memory.

5. Worked example

An eight-person B2B expense tool declares “RTO 4h, RPO 1h” in its security questionnaire. The plumbing underneath: a nightly database dump at 02:00, never restored, on the same availability zone as the primary. A disk failure on the database host lands at 18:40 on a Thursday. Recovery takes 22 hours — a new host, a permissions puzzle, a 14-hour dump restore — and the company loses 17 hours of customer receipts (the real RPO was 24h minus four).

The redo takes one afternoon and $85/month. They restore the existing dump into a scratch host and measure: 3h40m, most of it dump-transfer. Tier-1 database moves to managed point-in-time recovery (RPO 5 minutes, measured by the provider's SLA and spot-checked monthly), and a read replica gets a rehearsed promotion runbook — promoted in a drill in 41 minutes end to end. New declared numbers, per tier: checkout RPO 5 min / RTO 1 hour; reporting RPO 24h / RTO 8h; internal tools RPO 7d / best effort. The next real failure — six weeks later, an hour-long provider outage — costs 40 minutes of replica lag and one status-page update. The counter-example is the competitor whose DR PDF promised RPO 15 minutes while the “replication” was an rsync cron job to a server in the same rack; their real outage lost three days, and the PDF survived as a sales artifact.

6. Metrics (for the metric itself)

From the HIVE80lab kit

Related: the disaster recovery plan template for small teams is the document these two numbers anchor, the backup restore drill checklist is how measured RTO gets its number, and the restore test template is the recurring version.

Put this to work. The Ops Starter Kit bundles the highest-leverage templates — incident response, runbooks, onboarding, checklists — into one download ($14).

Free start: grab the First 30 Minutes incident-response checklist, or get the free template library by email.