Application migration is the process of moving an application program from one environment to another. Examples include migration from an on-premises enterprise server to a cloud provider’s environment or from one cloud environment to another.
Migrating an application can be complicated because there are bound to be differences between the original and target environments. Furthermore, applications -- even cloud applications -- are not typically designed to be portable. Applications created on various cloud development platforms, such as Windows Azure, Google App Engine and Force.com, are usually designed to run on the platforms they were developed on. Other elements such as operating systems, management tools, the networking architecture, the storage system and the virtual machine (VM) configuration can all differ from those in the environment where the application was developed or deployed.
Bill Claybrook provides an example of one potential problem scenario in an application migration:
“You have chosen MySQL as the database system for your application. One of the functions you can perform with MySQL is database replication -- two instances of a database kept in synch. The replication process in MySQL utilizes multi-cast as part of low-level Ethernet to communicate between the two database instances. If you want to run your application on Amazon and replicate a database, you have a problem: Amazon does not support multi-cast in its networking layers.”