Off shared hosting, without a maintenance window

Shared hosting has a way of becoming load-bearing. Cron jobs configured through a control panel years ago, a PHP version nobody chose deliberately, file uploads written to a path that only exists on that box — none of it in version control, all of it required.

A migration plan that only accounts for the application will discover this list one production incident at a time.

Inventory the environment, not just the app

Before moving anything, write down what the current host provides: scheduled tasks, mail relay, TLS termination, filesystem assumptions, extension versions, and every environment variable set outside the repository.

This document is the actual migration plan. The infrastructure-as-code that follows is a transcription of it, which is the point — once it is in Terraform, the next person does not have to rediscover any of it.

Move state last

Application servers are disposable and can be stood up alongside the old ones with no consequence. Databases and user-uploaded files are neither, and they are what determines whether a cutover needs downtime.

Running replication into the new database ahead of the cutover turns a multi-hour restore into a short promotion. The window shrinks to the time it takes to redirect traffic and confirm writes are landing.

Cut over by DNS, but keep the old box warm

Lower the TTL well before the migration — days, not hours — so that when the record changes it propagates in minutes. Then move traffic and watch error rates rather than declaring success.

Leave the previous environment running and reachable afterwards. Rollback that consists of changing a DNS record back is worth far more than a month of overlapping hosting costs.

Then add what the old host could not do

The migration itself is not the return. The return is what becomes possible afterwards: horizontal scaling, managed backups with tested restores, and APIs that let partners integrate directly rather than through scheduled exports.

That last one turned out to be the commercially significant part of this engagement, and it was only available once the platform was somewhere that could support it.

Tell us what you need. We will tell you what it takes.

A free first conversation, a written price before anything starts, and a reply within one working day.