Case 01 · Red Hat · Enterprise infrastructure

An interface for an operation with no undo

When you drive through a tunnel, your phone hands the call from tower to tower and it never drops. Banks wanted their software to do the same thing: keep running while it moves between two data centres. Nobody had ever designed an interface for that, so we built the first one.

Product Red Hat ACM Fleet Virtualization
My role Lead designer · Drove the design to Tech Preview
Timeframe May 2025 to present
Status Tech Preview · ACM 2.15
The problem

Big companies run their software on virtual machines, computers that exist as software, thousands of them, living in separate data centres. Moving a running one to another data centre, with zero downtime, was possible in the engine room but had no interface. Banks and telcos kept asking. There was nothing anywhere to copy from.

The solution

A four-step flow with one deliberate pause built into it: before anything irreversible happens, five safety checks must pass in front of you. Deliberately small in its first version. Shipped as an early-access release in 2025.

Try the operation yourself
Data centre A
Data centre B
running system
The system is live. The gate is closed.
The real flow, miniature: five checks must pass, the seam opens, the system crosses. The pulse never stops.

How it happened

Who this is for

The people who run private clouds for a living: think air-traffic controllers, but for thousands of virtual machines. Most of them spent years in the industry-standard tool before ours, so they arrived knowing exactly what a migration should feel like: a clear map of what's where, safety checks they can actually read, and a hard stop before anything irreversible.

Between May and July 2025 the design went through seven review rounds. The biggest shift came in round two. The safety checks started life as an error message you saw after submitting, and it became obvious nobody would trust that. These users wanted to watch the checks pass before committing. So the error message became a pre-flight gate, and that one move reshaped the whole flow.

The three calls that mattered

A hard gate before the point of no return

The flow is four steps: what you're moving → where it's going → is it safe → confirm. The third step runs five checks at once, network, storage, computing power, version, capacity, and you cannot continue until all five pass. That friction is deliberate. Once the machine is mid-flight between data centres there is no undo, so one forced pause before commit is cheap insurance.

What you're moving the machine Where it's going source · destination Is it safe 5 checks must pass the gate, no way past it until every check is green Confirm the point of no return
The flow. The third step is the design decision, a gate, not a warning.

Source and destination as equals

Moving between two data centres means trusting two different systems at once. So the "where it's going" step shows origin and destination side by side, the same details paired on each. The worst version of this screen would have made one side feel like an afterthought, the symmetry isn't a layout choice, it's the mental model.

Shipping small on purpose

The original scope had bulk moves, a browsable map of everything you own, and moving whole groups of machines at once. The first release shipped with none of it, one machine at a time, a simple table. When nothing like your product exists yet, shipping small and earning the next round of scope beats shipping big and hoping.

The hard part

The argument I had to design around

One debate ran for weeks between the engineering teams: should the migration run through the company's automation tool, or stand on its own? One side said natural fit; the other said complexity without payoff. My job was to keep the design neutral while the argument played out, the "run it as a script instead" option had to feel like a real fork in the road, not a quiet hedge for a decision nobody had made yet.

High fidelity walkthrough

Watch on YouTube

Cross-Cluster Live Migration and ACM RBAC, design walkthrough

A live discussion covering both cases. The cross-cluster migration portion begins where the host first introduces the multi-cluster topic.

The interactive prototype that drove the design is also public:

Final takeaways

  1. When nothing like your product exists yet, shipping smaller is usually the more senior call. The first release went out deliberately narrow, one machine at a time, and that turned out to be the right shape.
  2. For operations that can't be undone, a bit of deliberate friction earns its keep. The safety gate added a step, but it's the step users told us they needed in order to trust the result.
  3. Moving between two systems means trusting both. Treating origin and destination as equals on screen wasn't a layout decision, it was a model decision dressed as a layout one.
  4. What I'd push harder for next time: three separate teams each owned a different flavour of "moving machines," and we designed ours alone. Seams between products are far easier to design at the start than to retrofit later.

Public proof and customer evidence

The work shipped as Tech Preview in ACM 2.15, with GA targeted for 2.16. Cross-cluster live migration is part of the wider OpenShift Virtualization move, which already has public customer evidence behind it:

Further reading

What's new in Red Hat OpenShift Virtualization 4.20 Live migrating VMs with OpenShift Virtualization How OpenShift Virtualization supports VM live migration OpenShift Virtualization on Azure Red Hat OpenShift GA OpenShift 4.20 Virtualization · Live migration documentation ACM 2.16 GA announcement Virtualization in 2026. Red Hat roadmap Migration Toolkit for Virtualization 2.10, live migration planning FOSDEM 2026 talk. VM mobility in Kubernetes clusters TechTarget: Enterprises fleeing Broadcom move to OpenShift Virtualization Virtualization Review: Red Hat positions OpenShift Virtualization as a broader platform play Arctiq case study: 100 VMs migrated in 6 weeks OpenShift Virtualization at Red Hat Summit 2026