• Formerly Platform.sh
  • Contact us
  • Docs
  • Login
Watch a demoFree trial
Blog
Blog
BlogProductCase studiesNewsInsights
Blog

Migration blueprint for moving your application without rewriting

migrationapplication modernizationtechnical debtPaaSinfrastructure automationconfiguration
12 February 2026
Jack Creighton
Jack Creighton
Senior Product Marketing Manager
Share

The decision to migrate a production application is rarely about the destination. It is about the friction of the journey. 

For most engineering leaders, the word "migration" is a synonym for "refactor." 

The industry has conditioned us to assume that moving to a modern cloud platform requires throwing away years of stable configuration, learning a new proprietary DSL, and rewriting core application logic to fit a specific container or serverless model.

This "migration tax" is the single biggest reason why technical debt accumulates. Teams stay on aging, insecure, or expensive infrastructure because the cost of moving feels higher than the cost of staying.

However, when you analyze why migrations fail to meet deadlines or budgets, it is rarely the application code that causes the blowout. It is the infrastructure primitives. 

A migration strategy (what we call a "migration blueprint") focuses on decoupling your application from those primitives. By using standardized environments, you can move the application as it is, while the platform absorbs the complexity of the underlying wiring.

Who this blueprint is for

This migration blueprint is designed for organizations managing long-lived, complex application estates where stability is non-negotiable. 

This blueprint applies if you are migrating:

  • Legacy or long-lived applications: Systems that have years of institutional knowledge baked into the code and cannot afford a multi-month refactor.
  • Multi-service applications: Workloads that depend on tight integration between databases, caches, search engines, and background workers.
  • Custom infrastructure: Applications currently running on virtual machines, Elastic Beanstalk, legacy PaaS, or self-managed Kubernetes clusters that have become difficult to patch or scale.
  • Risk-sensitive workloads: Applications in regulated industries where a failed cutover or data corruption carries significant business consequences.

The hidden cost of "primitive debt"

When you migrate to a raw cloud provider, you are forced to pay a "primitive debt" before the first line of code even runs. 

This debt is the primary source of cognitive overload for senior engineers. It includes manual provisioning of virtual machines, writing thousands of lines of Terraform to define VPCs and subnets, and manually configuring IAM roles for every service connection.

For a mid-market organization, this manual overhead often consumes the majority of senior engineering time, delaying delivery by quarters rather than weeks. 

The goal is to eliminate this work. You are evaluating a platform based on how much of this "boring" infrastructure it can automate away.

Pillar 1: Declarative service mapping over manual wiring

The first step in a rewrite-free migration is moving from imperative infrastructure to declarative service mapping. 

In a traditional migration, you tell the provider how to build a database: "Create a t3.medium instance, attach 50GB of storage, and open port 5432."

In this blueprint, your primary migration artifact is a single, version-controlled configuration file (.upsun/config.yaml). This file defines:

  • The application runtime: Your specific language and build steps.
  • Backing services: The databases (PostgreSQL, MariaDB, Redis) and search engines (OpenSearch, Solr) your app requires.
  • Resource relationships: How these components talk to each other without manual networking configuration or opening public access to the services.

Because Upsun uses standardized environments, the platform already knows how to provision and secure these services. 

You don't have to rewrite your application's connection logic; the platform provides a consistent relationship between your app and its services. 

This turns the migration into an act of deployment rather than an act of manual engineering.

Pillar 2: Eliminating environment drift through standardization

A primary reason for code rewrites during migration is "environment mismatch." 

An application that runs on a developer's laptop might fail in a legacy staging environment because of a slight difference in a library version or a different filesystem permission model.

To avoid a rewrite, you need environment parity. 

Upsun’s standardized environments ensure that the build and runtime are identical across every stage of the lifecycle. This is particularly critical for stateful workloads and monoliths that expect a specific, predictable environment.

When you define your application dependencies in your configuration, the platform creates a containerized environment that remains consistent from the first branch to final production. 

You don't have to "fix" your code to work in the cloud; the platform provides the predictability the code expects. For senior architects, this consistency is the ultimate safety net against the "it worked on my machine" syndrome.

Pillar 3: Validating with production-perfect clones

The most dangerous moment of any migration is the "cutover." Traditionally, this is preceded by testing in a staging environment that is a "close approximation" of production.

In this blueprint, "close enough" is not an option. 

Upsun allows you to create production-perfect clones for every branch. When you are testing your migration on a feature branch, you are testing against a perfect replica of your target production stack. This includes your service versions, your infrastructure configuration, and a sanitized clone of your production data.

This allows you to validate the migration of the actual application logic against real world conditions. 

This capability transforms migration from a "leap of faith" into a verified deployment process. If the migration works on the branch, you have the proof required to proceed with the production cutover.

Portability without the lock-in

A common trap in modernization is getting "locked in" to a provider's proprietary services as part of the migration. 

While these services offer power, they often require you to rewrite significant portions of your application to fit their specific APIs.

Upsun’s approach is built on portability. 

While you choose your cloud provider (AWS, Azure, GCP, IBM, or OVHcloud) at project creation, the platform layer remains identical. 

This means you can move your application from one provider to another by re-provisioning the project on the new provider, without rewriting your application code or your infrastructure configuration.

This gives you strategic optionality. You can meet data sovereignty requirements or satisfy an executive mandate for cloud diversity without the traditional increase in operational overhead.

The economic case: reallocating senior engineering time

From a leadership perspective, a "no-rewrite" migration is about resource allocation. 

In most migrations, infrastructure work consumes the majority of senior engineering time. Every hour a senior developer spends debugging a Terraform script or refactoring a legacy module for a new provider is an hour they aren't spending on your product roadmap.

By letting the platform manage the "grind" of infrastructure, you can execute a migration with a smaller team in a fraction of the time. This is the difference between a migration that costs the company months of innovation and one that serves as a springboard for faster delivery.

Making migration repeatable

The goal of this blueprint isn't to never migrate again. It is to make migration a repeatable, low-risk operation instead of a once-a-decade crisis.

By adopting a model based on standardized environments, you remove the friction of the "everything refactor" and eliminate the cognitive load of managing cloud primitives. You give your team the guardrails they need to move, scale, and iterate with confidence.

Migration doesn't have to be a rewrite. It just needs a better platform.

Stay updated

Subscribe to our monthly newsletter for the latest updates and news.

Your greatest work
is just on the horizon

Free trial
UpsunFormerly Platform.sh

Join our monthly newsletter

Compliant and validated

ISO/IEC 27001SOC 2 Type 2PCI L1HIPAATX-RAMP
© 2026 Upsun. All rights reserved.