Upgrade vs Migration

We often encounter these terms being used interchangeably and it is useful to point out a few differences. Here are some thoughts -

Upgrade is the process of moving an existing system from one version to a higher version. Normally, the term upgrade is used to refer to upgrading on the same hardware. This is also known as in-place upgrade. Upgrade allows you to retain your existing system, configuration/ device/ security/etc. settings. An argument against frequent in place upgrades is the possibility of reduced performance over time when compared to new installation and migration. Of course, doing an upgrade of your existing system carries the risk of rendering your existing system unusable in case the upgrade does not go as planned. To mitigate this risk, a full back up prior to upgrade is recommended.

Migration is the process of switching over or upgrading from one set of hardware to another. It normally involves installing newer software on a clean system and transferring data across. Migration can occur across versions of the same software product or even across software from different vendors such as migrating from SQL Server to Oracle DB for instance!

One of the uses of migration is in production deployments wherein you could continue to have your existing systems up and running while you perform a migration to another set of hardware. If the upgrade succeeds and your tests have passed, you can switch to the upgraded system. Else, you have the option of falling back to the existing system.

As testers, both these processes need to be tested. However, for organizations, which of these processes do they choose? The answer depends on multiple factors including - the feasibility of either of these approaches - can an in-place upgrade be performed/is it supported? Some systems may not permit further upgrades or your existing infrastructure may be inadequate to support an upgrade; next comes the need for an upgrade - do you need to upgrade? Assuming that upgrade is doable, it still does not mean that upgrade is what you must do. Is it really a must to maintain your existing infrastructure and do an upgrade or would it make sense to move to a new installation and migrate data across? Depending on the nature of the software you intend to move to, there may be many other considerations (apart from just the data) when choosing between an upgrade and migration.

The distinction between upgrade and migration isn't restricted to the above. Some organizations consider all of the above as different types of migration i.e. an upgrade is seen as an in-place migration whereas the migration listed above would be a non in-place migration. Yet other organizations view migration to a large degree as a type of upgrade (migration type upgrade) and distinct from migration itself with few differences. However, for simplicity's sake I have segregated upgrade (in-place) and migration as mentioned above.