Cloud Migration
Cloud migration planned workload by workload, with a rehearsed rollback
We inventory what you run today, choose a path for each workload, move data with verified integrity and switch traffic only when agreed go and no-go checks pass. You land on AWS, Azure or Google Cloud with infrastructure in code and a cost baseline you understand.
Cloud & DevOps
What is cloud migration?
Cloud migration is the planned move of applications, data and infrastructure from on-premises servers, a hosting provider or another cloud onto a platform such as AWS, Microsoft Azure or Google Cloud. Each workload is assessed and then rehosted, replatformed, refactored or retired, its data is transferred and verified, and traffic is switched over with a rehearsed rollback.
Migrations that go wrong usually fail for ordinary reasons: an undocumented dependency on a file share, a cron job nobody knew existed, a database that took longer to copy than the maintenance window allowed. The cloud platform is rarely the problem. The plan is.
We start with an inventory of what actually runs: servers, applications, databases, scheduled jobs, DNS records, certificates and the traffic between them. Each workload then gets a migration path chosen on its merits. Some are rehosted as they are, some are replatformed onto managed databases or containers, and a few are worth refactoring before they move. Some are simply retired.
The target environment is defined in Terraform, deployed through pipelines and tested with production-like data before any customer traffic moves. Cutover follows a written runbook with go and no-go checks and a rehearsed rollback. Afterwards we compare running costs with the estimate, right-size anything over-provisioned and decommission the old servers only once you have signed off.
Challenges
The problems we are usually brought in to solve
Hidden dependencies between systems
Hard-coded IP addresses, shared file mounts, scheduled jobs and undocumented integrations tend to surface only when something stops working after the move.
Downtime the business cannot absorb
Busy applications and large databases cannot simply be switched off for a weekend, yet many migration plans quietly assume they can.
Oversized servers copied straight across
Moving servers into the cloud at their current size, running around the clock, often produces a bill higher than the old hosting, with none of the benefits of managed services.
No clear decision per workload
Teams debate rehosting versus refactoring in general terms instead of deciding application by application on value, risk and effort.
Data nobody can prove is complete
Without row counts, checksums and reconciliation, there is no evidence the migrated data matches the source until a customer finds the gap.
An unfamiliar platform after go-live
Internal teams inherit cloud accounts with no runbooks, no infrastructure code and no tested restore procedure, so every change feels risky.
Capabilities
What the service covers
Discovery and dependency mapping
An inventory of servers, applications, databases, jobs, DNS and certificates, plus observed network flows, turned into a dependency map that groups systems into migration waves.
Migration path per workload
A recorded decision for every application to rehost, replatform, refactor, retain or retire, weighing operating system support, licensing, latency to the systems it talks to and the data it must bring.
A landing zone ready for the first wave
Separate production and non-production accounts, IP ranges that do not clash with your offices or VPN, private links back to systems that stay behind, plus logging and backups, all in Terraform.
Rehosting and replatforming
Virtual machines replicated with the provider's migration tooling for a like-for-like move, or rebuilt on managed databases, load balancers and containers where that removes patching and failover work.
Cloud-readiness code changes
Focused changes that let an application run on more than one instance: configuration from the environment, uploads in object storage, sessions outside memory and jobs safe to run anywhere.
Database transfer and integrity checks
Bulk transfer followed by continuous replication for PostgreSQL, MySQL and MongoDB, verified with row counts, checksums on key tables and application-level reconciliation.
Cutover runbooks and rollback
Step-by-step runbooks with owners, timings, lowered DNS TTLs, write freezes, go and no-go criteria and a rollback route that is rehearsed before the real event.
Before-and-after cost comparison
A monthly running-cost estimate built from measured CPU, memory, storage and data transfer before the move, then checked against the first real bills so oversized resources are cut back.
Our process
How an engagement runs
Every engagement has a named lead, a written scope and working software to review every one to two weeks.
- 01
Discovery and inventory
We gather data from servers, hosting panels, DNS, monitoring and billing, and interview system owners to record dependencies, peak periods and acceptable downtime.
- 02
Assessment and wave plan
Each workload is assigned a migration path and grouped into waves, with a target architecture, cost estimate and risk list set out in a written plan.
- 03
Landing zone build
We build the target environment in Terraform with identity, networking, logging and backups, and set up GitHub Actions pipelines to deploy into it.
- 04
Pilot wave
A low-risk but representative workload moves first, proving the tooling, runbook, monitoring and rollback before critical systems are touched.
- 05
Replication and cutover
Data is synchronised, cutover is rehearsed, and each wave goes live against agreed go and no-go checks, followed by a period of close monitoring.
- 06
Optimise and hand over
We right-size resources, decommission the old estate after sign-off, and hand over runbooks and infrastructure code or continue with agreed support.
Technology
Technology we use
Chosen per project for fit, maintainability and your team's ability to own it.
Target clouds
- AWS
- Microsoft Azure
- Google Cloud
Infrastructure and delivery
- Terraform
- GitHub Actions
- Docker
- Kubernetes
Databases
- PostgreSQL
- MySQL
- MongoDB
Source stacks we work with
- Linux
- Nginx
- PHP
- Laravel
- Node.js
- WordPress
Use cases
Where it makes the biggest difference
Data centre or colocation exit
Racks of virtual machines move in planned waves ahead of a contract end date, starting with the least critical systems and finishing with the core platform.
Hosting provider to cloud
PHP, Laravel and WordPress platforms and their MySQL databases leave shared hosting or a single VPS for containers or managed instances with TLS and a CDN.
Provider-to-provider move
Workloads shift between AWS, Azure and Google Cloud to consolidate after an acquisition or a contract change, with managed services mapped to their equivalents.
Self-managed database to a managed service
A MySQL or PostgreSQL server patched and backed up by hand moves to a managed database service, kept in sync by replication so the final switch needs only a short write freeze.
File shares and uploads to object storage
Documents and user uploads held on a network share or a server's local disk move into cloud object storage, with access rules mapped and the application pointed at the new location.
Partner integrations tied to fixed IP addresses
SFTP drops, payment callbacks and bank feeds that allowlist your current addresses move with reserved IPs and change windows agreed with each partner in advance.
Industries
Industries we apply this to
Why Softweb Planet
Why teams choose us for this work
Migrations planned by engineers who build cloud platforms
Wave plans and cutover runbooks are written by our DevOps and SRE engineers, whose daily work is AWS and Google Cloud environments and CI/CD, and our CTO reviews each target architecture.
We change the code, not just the servers
When a workload needs configuration moved out of files or uploads moved off local disk, our own application engineers make the change, so a replatform does not stall waiting for another supplier.
Every cutover written down
Each migration has a named lead and a written scope, each cutover has a written runbook, and you review working environments every one to two weeks.
Fixed quote after discovery
A discovery call comes first, then a written proposal with a fixed quote for the migration and an estimate of monthly running costs, so both are clear before you commit.
What you can expect
- Each workload running on the path chosen for it, not one approach forced on everything
- Migrated data backed by documented, reconciled checks
- Cutovers completed against a rollback route that was rehearsed beforehand
- A landing zone in Terraform that later waves and new projects can use the same way
- Running costs checked against the pre-move estimate, with oversized resources cut back
Cloud Migration FAQ
Frequently asked questions
We combine automated discovery with conversations, because neither finds everything on its own. Network flow data and connection logs show which servers talk to each other and on which ports. We then read configuration files, crontabs, DNS zones, firewall rules and certificate stores for hard-coded addresses, scheduled jobs and expiring certificates. Interviews with system owners add what no tool sees, such as a monthly export the finance team relies on. The result is a dependency map that decides which systems move together.
We start with workloads that are low risk but representative, so the first wave proves the tooling, runbook and monitoring without endangering critical services. During assessment each application is scored on business criticality, complexity, dependencies and the effort its migration path needs. Tightly coupled systems move together in the same wave. Systems already due for retirement are often left out entirely, which reduces both scope and cost.
For most applications downtime can be reduced to a short planned window, and for some it can be close to none. The main driver is data. If a database can be replicated continuously to the cloud, the final switch needs only a brief write freeze while the last changes sync and DNS updates. Systems that cannot replicate need a longer window, which we measure during rehearsals and agree with you in advance.
We copy the bulk of the data first, keep source and target in sync with replication until cutover, and verify the result before switching traffic. Depending on the engine, that means native replication for PostgreSQL or MySQL, or the cloud provider's own migration service. Verification includes row counts, checksums on key tables and application checks such as matching order totals. The source database stays intact until you sign off.
Cost depends on scope: the number of workloads, the path chosen for each, data volumes, downtime constraints and how much refactoring is worthwhile. We run discovery first, then give a fixed quote for the migration work alongside an estimate of your monthly cloud running costs. Seeing both figures together lets you judge the move properly, because a one-off project cost and an ongoing bill affect the business in different ways.
It can be, if servers are copied across at their current size and left running around the clock, so we compare like for like before you commit. The estimate includes costs that are often missed, such as data transfer out, snapshots, NAT gateways and support plans, alongside what you stop paying for, such as hardware refreshes and hosting contracts. Workloads are sized from measured utilisation, and after cutover we check real bills against the estimate and right-size.
Timelines typically depend on the number of workloads, how well they are documented, the volume of data and how much downtime each system can tolerate. Moving one application and its database is a far smaller project than leaving a data centre with dozens of interdependent systems. After discovery we give you a wave plan showing sequence and dependencies, and you review working environments every one to two weeks as each wave progresses.
We run the application in the new environment against a recent copy of production data and test it the way users and other systems will, before any real traffic moves. That covers functional checks, third-party integrations whose IP allowlists may need updating, scheduled jobs, outgoing email, backups with a test restore, and load tests sized to your busiest periods. Monitoring and alerts go live first, so the same dashboards are watched during rehearsal and cutover.
Yes, cloud-to-cloud migrations follow the same assessment, data and cutover discipline as a move from physical servers. The differences lie in mapping managed services such as databases, queues, object storage and identity to their equivalents on the new platform, and in planning for data egress charges. Where the source infrastructure was never written as code, we define the target in Terraform so the new environment is documented from the start.
We roll back to the original environment, which stays running and unchanged until the new one has been accepted. Every cutover runbook defines the go and no-go checks, who makes the call, and the exact steps to reverse the switch, including DNS and any data written during the window. We rehearse the cutover beforehand, so the real event repeats something the team has already done at least once.
No, most applications can move with little or no code change, and a rewrite is rarely the right first step. Rehosting or light replatforming gets you off ageing infrastructure sooner. We recommend code changes only where they clearly pay back, for example storing uploads in object storage instead of on local disk, or moving session state out of memory so the application can run on more than one instance.
Switch them off only after the new environment has run through a full business cycle and nothing still points at the old one. In practice that means month-end, payroll or peak trading has passed cleanly, cloud backups have been restored in a test, and logs on the old servers show no remaining traffic from users, partners or scheduled jobs. We then take a final archive copy, remove old DNS records and firewall rules, and decommission only with your sign-off.
Handover gives your team what it needs to run the new environment without depending on us. The cloud accounts, credentials, Terraform code and pipelines already belong to your organisation. We add a migration record showing where every workload, database and DNS name now lives, runbooks for deployments, backups, restores and common incidents, and walkthroughs on the live system. If you prefer, we continue with support covering monitoring, patching, cost reviews and further waves under an agreed scope.
Keep exploring
Related services and solutions
Start your project
Tell us what you're building.
Share the problem, the systems involved and where you want to be. A senior engineer replies with honest advice on scope, architecture and the fastest safe path to production.