Korab CenajTechnical articleAll articles

Disaster recovery · 3 min read

Backup completion does not prove recoverability

The common shortcut is to equate a green backup job with a recoverable application. Completion proves that one workflow reached its success condition. It does not establish that the artifact is independent of the failure, readable with available keys, applicable to a clean environment, or consistent enough for the application to start.

Protection is a sequence of stronger claims

The shortcut occurs because backup systems expose a convenient object and status while restore work crosses ownership boundaries. Job success may represent little more than a completed upload call; the backup controller cannot infer application semantics from that return value. A backup object proves presence. Comparing local and remote sizes checks upload completeness, not content meaning. Decrypting and listing tests key access plus archive structure. A server-side dry run can catch some API and schema problems without persistence. Applying into an isolated cluster tests creation, ordering, and controller behavior. An application-consistency test asks whether the restored workload can perform meaningful reads and writes. A full drill adds people, credentials, DNS, external services, timing, and failure handling. Replicas and snapshots can improve availability or rollback options, but copies in one failure domain do not replace this progression.

Follow the recovery dependency graph

  1. Application state
  2. Workload definition
  3. PVC and PV
  4. Storage system
  5. Backup artifact
  6. Independent target
  7. Ordered recovery

Reason backward from the user-visible service, not forward from the backup job. The application needs its data and workload definition; those require storage, controllers, credentials, network, identity, and name resolution. The artifact and decryption identity must survive the same scenario. A GitOps source, object-store credential, or DNS service hosted only inside the failed cluster creates a bootstrap cycle. Recovery order is therefore part of recoverability, not an administrative detail added after the incident. RPO and RTO can only be interpreted against this graph: age bounds possible data loss, while measured execution across the whole chain bounds downtime.

A concrete boundary in the recorded checks

Hybrid archive · recorded 15 July 2026
Backup object: present
Upload-size comparison: matched
Decrypt-and-list: passed
Server-side dry run: not recorded
Isolated apply: not recorded
Application-consistency test: not recorded
Full recovery drill: not recorded

For the hybrid-cloud archive, the recorded restore-side check stops at decrypt-and-list. Object presence and matching upload size are creation and transport checks; they do not raise the restore claim. The test shows that a 4,973-byte encrypted metadata archive could be retrieved, decrypted with the recovery identity, and parsed well enough to list its members. It did not apply resources or restore application data. Calling that a full restore would erase precisely the uncertainty the check was meant to expose.

Questions that turn artifacts into a recovery case

Make the conclusion match the test

A completed backup is useful, but recoverability grows only as stronger checks succeed under the relevant failure scenario. The Kubernetes Disaster Recovery Validator case study implements that reasoning with protection tiers, dependency cycles, scenario analysis, and ordered plans. Its assessment can identify the next missing test; it does not convert a backup record or proposed plan into a completed application recovery drill. That final claim requires an observed drill with an application-level result and elapsed time.