DEV Community

OneLifeVibe
OneLifeVibe

Posted on

Your Cross-Cloud Failover Will Fail at the Seams: Designing the Parts Nobody Tests

Most multi-cloud failover plans look convincing on a diagram. Traffic enters at the top, a box fails, arrows bend, traffic lands in the second cloud. The diagram is not wrong exactly — it is just drawn at the layer where failover is easy. Compute can be recreated from images and infrastructure code in minutes. What actually decides whether a failover works is everything underneath and around that compute: routes that were never built in the second cloud, data that is further behind than anyone assumed, identities that only exist on one side, and a cutover procedure the team has only ever read.

Failover fails at the seams between clouds, because the seams are the parts nobody owns end to end and nobody tests under load. Designing for that reality means treating recovery as a network and state problem first, and an application problem second.

1. Failover is a network event before it is an application event

When a primary cloud or region becomes unavailable, the application does not move — the paths to it change. Every private route, peering, gateway attachment, and firewall rule that the workload depended on in the primary needs an equivalent, already-built counterpart on the recovery side. "Already built" is the phrase that matters. Connectivity that has to be provisioned during an incident will be provisioned slowly, by tired people, with whatever defaults the console offers.

Practical implications:

  • Private paths must pre-exist. If services in cloud B need to reach data in cloud A during normal operation, users assume a private path exists. During failover the direction reverses and doubles. Recovery-side networks need their routes, DNS resolvers, and egress paths built, documented, and exercised in peacetime — not discovered to be missing mid-incident.
  • DNS is a timer, not a switch. Low TTLs help, but resolvers, clients, and connection pools cache answers well beyond the stated TTL. A cutover plan that assumes traffic moves "when DNS updates" should be tested against real client behaviour, including long-lived connections that never re-resolve.
  • Health checks define what "down" means. An overly sensitive check flaps traffic between clouds; an insensitive one leaves users on a degrading primary. The check should measure what users experience — a real request through the real path — and the failover threshold should be a deliberate decision, not a default value.
  • Return is part of the design. Failing back is a second migration, with its own data-direction problem: writes made in the recovery cloud now have to return. Plans that only describe the outbound trip strand teams in the recovery environment for weeks.

2. State decides the recovery time, not compute

Teams quote recovery times based on how fast instances start. The honest number is set by data: how far behind is the replica, and how long does catch-up take under production write load?

  • Measure replication lag at peak, not at idle. A replica that is two seconds behind at 9 a.m. can be forty minutes behind during the evening write peak. The failover you get is the one your worst lag allows, and an incident is statistically likely to arrive at a busy moment.
  • Decide the write story before the incident does. During a partition, does the recovery side accept writes? If yes, there is a reconciliation problem later, and it should be designed — conflict rules, ordering, who wins — while everyone is calm. If no, the business has explicitly accepted read-only or downtime, which is also a legitimate design, as long as it was actually chosen.
  • Backups are not replication. Restoring from backup into a second cloud involves transfer time, restore time, and consistency questions that replication avoids. Both have a place, but quoting replication-grade recovery times for a backup-grade design is how post-incident reviews get uncomfortable.
  • Test a restore, then time it. An untested backup is a hypothesis. A timed restore, repeated occasionally, turns recovery objectives from aspirations into measurements.

3. Identity, secrets, and policy travel badly

A workload recovered into a second cloud wakes up in a place where its identity may not exist. Workload identities, service accounts, certificates, secret stores, and policy engines are frequently cloud-local, built once for the primary and never mirrored.

A short audit usually finds the gaps quickly: the service account that exists in one cloud only, the certificate expiring next month that nobody owns on the recovery side, the firewall policy expressed in one provider's rule language with no equivalent written for the other. None of these are exotic failures. All of them stop a failover cold, late, in front of an audience.

The fix is procedural rather than clever: identity and policy for critical workloads are defined once, in a form that can be applied in both clouds, and the recovery-side objects are created and verified as part of normal change management — every change to the primary's identity or policy carries a matching change on the recovery side, or an explicit decision that it does not need one.

4. Test in slices, because a full test never gets scheduled

"Full failover game day" is the meeting that gets postponed every quarter. Smaller slices actually happen, and they find most of the problems:

  • Kill one path, not the cloud. Withdraw a route, disable a gateway, or block a private link in a maintenance window and watch what users and dashboards report. This tests monitoring as much as recovery.
  • Fail one service over for real. Pick a low-risk service, move it to the second cloud for a day, and run production traffic there. The runbook stops being a document and becomes a memory.
  • Measure the seams specifically. Time DNS convergence with real clients, time route propagation, time replica catch-up at load. Write the numbers in the runbook, dated. Undated numbers are folklore.
  • Include the humans. The on-call engineer at 3 a.m. is the actual failover mechanism. If the procedure requires knowledge that lives in one architect's head, the design has a single point of failure with a phone number.

5. Where managed connectivity fits

Keeping equivalent private paths, consistent policy, and tested recovery routes in place across AWS, Azure, Google Cloud, and Oracle is steady, unglamorous work that competes with feature delivery for the same engineers. That is the layer specialist providers operate in. CloudVerg, for example, focuses on private cloud and AI connectivity for US businesses — VergMesh for multi-cloud networking, VergRail and VergForge for moving and building workloads, VergMind for AI infrastructure connectivity, and VergShield for zero-trust security and SOC 2 readiness: https://cloudverg.com

Built in-house or with outside help, the test of a failover design is the same: it should be boring. If a recovery has never been rehearsed in slices, the first real incident becomes the rehearsal — with production as the audience.

A short checklist

  • [ ] Recovery-side private routes, resolvers, and egress built and exercised before any incident
  • [ ] DNS behaviour tested with real clients, including cached answers and long-lived connections
  • [ ] Health checks measuring a real request through the real path, with deliberate thresholds
  • [ ] Replication lag measured at peak load; recovery-time claims based on that number
  • [ ] Write behaviour during partition decided in advance, with reconciliation rules if both sides write
  • [ ] A restore timed end to end at least once, with the result recorded
  • [ ] Workload identities, certificates, secrets, and policies verified present in the recovery cloud
  • [ ] Failback planned as its own migration, including data direction
  • [ ] Partial failover drills run regularly, with seam timings written into the runbook

Failover diagrams bend arrows. Real estates bend at the seams — routes, state, identity, and procedure. Designing those four things deliberately, and testing them in slices, is what turns a cross-cloud recovery plan from a document into a capability.

Top comments (0)