Skip to main content
Pixelmatters Logo

Key takeaways

  • Rehosting changes nothing about the application, replatforming changes what runs underneath it, and refactoring changes the code itself. Cost, risk and elapsed time rise in that order.

  • AWS calls refactoring "the most complex and costly of the migration strategies" and recommends, for large migrations, modernizing after the move rather than during it.

  • Rehosting is the only one of the three that doesn't reduce running costs by itself, which is why it so often fails the business case it was sold on.

  • The decision belongs to the service, not the system. Four questions settle most of them: what's blocking the business, is the code part of the problem, can you verify today's behavior, and will you still own this in three years.

  • Refactoring is gated by test coverage, not by ambition. On UJET's platform the end-to-end suite grew 4.8x with 43% of it authored by our team, and releases went from monthly to twice a week.

Frequently asked questions

Replatforming is moving an application to new infrastructure while changing the components underneath it, without rewriting the application logic. Typical examples are swapping a self-managed database for a managed one, moving virtual machines to containers, or upgrading to a supported runtime. AWS calls it "lift, tinker and shift". The application behaves the same and usually costs less to run.

Replatforming changes what the application runs on. Refactoring changes the application. If you can name the components you're swapping before you start and the business logic stays untouched, you're replatforming. If the architecture itself has to change, so that the way the system is decomposed is different afterward, you're refactoring. Refactoring costs more, takes longer, and is the only one of the two that fixes an architectural constraint.

Rehosting changes nothing about the application or its components: it's the same system on different infrastructure, which is why it's called lift and shift. Replatforming changes components underneath the application, such as the database or the runtime. Rehosting is faster and lower risk. Of the two, replatforming is the one that reduces running costs.

Yes. Lift and shift is the common name for rehosting, and AWS uses the terms interchangeably in its own migration guidance. Both mean moving an application to a new environment with no changes to the application itself. The related term "relocate" is different: that means moving a whole platform, such as a VMware estate, rather than the individual applications running on it.

Mostly, yes. In ecommerce, replatforming usually means replacing one commerce platform with another, such as moving from Magento to Shopify. In cloud migration terms that's closer to repurchase than replatform, because you're adopting a different product rather than changing the infrastructure under your own code. The word is the same and the work is not, which is worth clarifying early in any conversation where both meanings are in play.

No, and the overlap causes real confusion. In everyday engineering, refactoring means improving code structure without changing behavior, usually in small continuous increments. In the migration taxonomy, refactoring means re-architecting the application to use the target platform properly, which often does change how the system behaves. The first is routine hygiene. The second is a program with a budget.

Rehosting is measured in weeks per application and can run hundreds in parallel, which is why it suits deadline-driven programs. Replatforming is typically weeks to a few months per application, depending on how many components change and how tightly the code is coupled to them. Refactoring runs months to years, and is the one where estimates are least reliable. Timelines vary too much by system to promise numbers.

Yes, and AWS recommends exactly that for large migrations: move first, modernize after. The condition is that phase two has a budget and a date. Where it doesn't, the organization ends up running its old architecture on cloud infrastructure, paying more than before with none of the benefits it moved for. If the refactor is genuinely deferred rather than abandoned, write down which workloads it applies to before phase one starts.

Not always, but data is usually the gate. Retrieval and agent features depend on data being consistent and accessible, and in older systems it typically isn't, which makes data debt the first thing to restructure rather than the application. That's often a narrower project than a full re-architecture. Where the blocker is genuinely the architecture, the honest answer is that the AI work waits on it.


Tiago Coelho

CTO

Tiago Coelho is the CTO of Pixelmatters, a Porto-based AI-native Digital Product Studio that has shipped software for clients including Checkr, Glean, and VMware. An engineering leader who helped shape the studio's engineering processes, handbook, and quality practices, he writes about technology strategy, and engineering management.

Share this article

Related Insights

Replatforming vs. refactoring vs. rehosting: how to choose