What does it take to migrate current applications running on in-house hardware to run instead on the cloud?
There are several steps involved in moving legacy applications on dedicated hardware over to virtual servers provided by an Infrastructure as a Service (IaaS) cloud provider.
- Test the performance characteristics of your application - Before you can determine what your new virtualized environment will look like, it is important to understand the performance characteristics of your application. Virtualized servers have a number of benefits but they can also perform very differently than dedicated server hardware. Understanding how your current system works can help avoid painful migration issues. For example, if your current application uses a lot of disk input/output (I/O) either via a relational database or some other facility, you may find that virtual servers are unable to keep pace under the load. This can be harder to address in a virtual environment versus other issues such as provisioning more memory or processor capacity or disk space so knowing potential choke points up-front is important.
- Determine your target architecture - Based on your understanding of the performance characteristics of your application, you can then determine what your target architecture will be. In order to meet acceptable performance levels, you might be required to mix dedicated servers in with virtual servers. In addition, you should look at scaling requirements - do you want to be able to provision additional Web servers during times of peak load? If so, you need to plan for this and also have appropriate load balancing technologies in place.
- Create or configure server images - Once you know what your target architecture will be, you can start creating the server images. Some virtualization systems allow you to create virtual images based on physical hardware. This may be desirable, or it may be better to start fresh by creating images of base operating system installations and configuring those as required for the target application. Just as in a dedicated hardware environment, these server images should be locked down for security with patches installed and unneeded services disabled.
- Test the new system - After all the server images have been created and the networking environment configured, you should be in a position to test the application to make sure it works as expected in its new virtualized environment. Load and performance testing can be critical here because, as already noted above, system and application performance in a virtualized environment could be different than in an environment built from dedicated hardware.
- Roll over - Once the target system is performing as expected, production data can be migrated and the new system can be put into service. As after any major system change, the newly-installed application should be monitored to determine that the new environment is behaving as expected.
Cloud environments can provide a variety of benefits such as cost savings and increased scalability, but migrating existing applications to these environments should be done in a structured manner to ensure that the updated environment performs acceptably and actually provides the expected benefits.
This was first published in July 2012