/01
Inventory more than compute
A service rarely consists of only a virtual machine. Record DNS, certificate renewal, storage permissions, persistent volumes, background jobs, secrets, monitoring, outgoing mail and third-party callbacks. A migration plan that omits those dependencies is incomplete.
/02
Establish a measurable baseline
Before moving, capture expected behavior, response times, error rates, backup state and representative workflows. Keep the checks repeatable. A healthy container does not imply a functioning checkout, report generator or email notification.
/03
Rehearse deployment and rollback
Build the destination in isolation, validate credentials and access boundaries, and exercise a small set of real user journeys. Plan how data changes affect reversibility: restoring a service binary is different from reversing database writes. Avoid a cutover before rollback assumptions are tested.
/04
Close the migration deliberately
Verify DNS, TLS, scheduled jobs, logs, backups, alerts and costs after the move. Keep the previous environment only as long as necessary, after documenting what remains dependent on it. Retirement should be an explicit decision, not an assumption.