Cloud migration can pose a lot of questions – Which applications to migrate? Which public or private clouds? Which applications in which cloud? What security standards to follow? What unknowns should I be aware of?

There is a bit of research and learning involved in finding answers to the above questions. But I thought I will quickly compile the top 10 considerations that you need to analyze while deciding your cloud migration strategy.

1. Change in philosophy – “Design not to fail” to “Design for failure”. In traditional approach you design your deployment architecture in such a way that it should not fail (at any cost – it does take a lot of cost). However, in the new cloud model best practices recommend you to design for failure, which is a totally different (but robust) approach.

2. Application Migration approaches – there are multiple degrees of changes you may want to do to your application depending on your short term and long term business/technical goals.

  • Virtualization – This model facilitates a quick and easy migration to cloud as no changes will be required to the application. Ideal candidate for legacy applications.
  • Application Migration – In this case your application will go through minimal architecture and design changes in order to make it optimal for a cloud model of deployment. For example, you may choose to use a No SQL database available on cloud.
  • Application Refactoring – This model will require a major overhaul of your application right from the architecture. This is typically done when you want to leverage the latest technology stack.

3. Data management – Plan for proper archival and backup strategy for your data. As a best practice, keep the dynamic data close to compute and static data close to the user. This can be done by leveraging caching and CDN techniques respectively.

4. Replatforming – Expect to have platform compatibility issues when you are switching from one platform to another (ex: Unix to Linux, Windows 2003 to Windows 2008)

5. Integration – If you are planning to retain some of the applications in-house (or in local datacenter), then you may want to look at the integration/performance aspects. All this while, the applications are collocated and hence, data transfer is easy. However, now the cloud migrated applications will have to talk over internet to the applications sitting in-house. This could lead to performance and bandwidth related issues.

6. Licensing – verify if the current set of tools/software you are using support a cloud based licensing model. Particularly if you are planning to leverage the elasticity of cloud computing make sure that your licenses are compatible with such a setup.

7. Security – Revisit your security implementation in the application. Since all your data is stored in the cloud you may want to ensure that all the layers adopt the encryption best practice to ensure that data is not readable even when it falls in the wrong hands. Consider using security keys issued by a different source than the one you are using for deployment.

8. Automation – Look for automating as much as possible. Cloud Automation not only helps in improving your productivity but also eliminates possibilities of human error.

9. Decide your network configuration based on the internal and external communication requirements of your applications. Avoid using internet for internal communication between applications as this will not only increase your cost but also increases the security threat. Expose only minimal applications that are required to interact with the public world.

10. Vendor lock-in – watch out for the vendor lock-in aspect. While you can simply stay away from utilizing the cloud vendor services that may not be the effective solution for your application. You need to weigh in the pros and cons of which services you want to use and to the extent you want to use.