Systems get stuck quietly. A region becomes an assumption. A managed service leaks into the design. One machine becomes too special to replace. By the time the business needs to move, the architecture has already said no.
What this means in an architecture
The goal is not to chase every cloud or make every choice abstract. Mobility means keeping the important location decisions late, explicit and reversible. Where the system runs should be something you can revisit without rebuilding the product around it.
- Portability over placement. Workloads packaged to move: containers, clear boundaries, externalized config and state.
- No silent roots. No hidden dependency on a region, a managed-service quirk, or a machine that has been up for 400 days.
- Reversible decisions. The expensive choices are kept few, explicit, and cheap to walk back.
The test we apply
Could we recreate production from source? Could we stand the system up in a second region without discovering half the architecture in a runbook, a shell history, or someone's memory? When the honest answer is no, that is where the work starts.
If moving the system means rewriting it, the system is not portable yet.
