There have been instances when migrations to the cloud have not happened seamlessly. Some companies have actually struggled to migrate their data and operations to the cloud. However, the teams, which experienced such roadblocks, have learnt from their lessons in the past and worked to make things smoother for future migrations.
These are some of the guidelines which may help you go through this process without challenges:
1. To start with, you need to chalk out the role of an architect who will lead this migration procedure from start to finish. The person holding this position will be responsible for the planning and completion of all stages of migration. The key focus should be to define the refactoring needed to make the process successful and smooth. In short, the architect will have to design strategies for the migration, identify public cloud solution needs and determine migration priorities.
2. Before you start the migration process you must also decide whether you wish to opt for a single or a multi-cloud environment. When you want the applications to run in a specific cloud vendor environment, migration is rather easy. The development teams will have to learn only one set of the cloud APIs; the only drawback is that of vendor lock-in. This is because once you have updated an app to make it work with one provider, moving it to another provider becomes difficult. Moreover, when you just work with one cloud vendor, it can also affect your powers to negotiate with the provider on important terms like SLAs and costs. When you decide to go for multiple cloud providers, there are many models to choose from. The simplest form is where there is a set of apps with one provider and another set of apps with another provider. You can also distribute your apps amongst the different cloud providers; so some companies will run parts of their apps in one provider while they run other parts in another cloud hosting provider.
3. Thirdly, it is important to choose the level of integration you want; you could choose either deep cloud integration or shallow cloud integration. For the latter you shift the on-site applications and make very limited changes or no changes to servers for running apps. There is no use of any unique services and all application changes are only to get this app to run properly in the cloud. This is basically called a lift-and-shift model where apps are shifted intact to the cloud. The deep cloud integration, on the other hand, is where apps have to be modified so as to use the cloud features to one’s advantage.
4. You should also gather KPIs or Key Performance Indicators which are essentially metrics which you get about any service or application. These help you to understand how the app or service is performing as against your expectations. So, the best KPIs will tell you how well the migration is moving and it will show you the problems which are still there in the app.
5. Base lining refers to a process for calculating the existing or pre-migration performance of an app to see if the future or post-migration performance will be acceptable. It will also tell you when the migration is over. You may use this procedure for diagnosing problems which may surface during a migration. For instance, you can set baseline metrics for every KPI. When you select a short baseline period, you can move quickly but there are risks of not being able to get representative performance sample. When you choose a longer period for base lining it will be time-consuming but it will give representative data.
6. Another important tip to use when doing cloud migration is prioritizing migration components. Therefore, you must decide whether to migrate whole apps all at one go or migrate an app component wise. To do this, you must identify connections between services to see which services are interdependent. It is better to start migrating services, which have least dependencies. So, the most internal services go first and then the outermost services or ones closest to clients.
7. Another useful guideline to remember is to re-factor whatever needs refactoring. So, you may need to work on some apps before you migrate these. This will ensure that the app can work with multiple running instances for dynamic scaling. Besides, your resource usage can leverage capabilities of a dynamic cloud.
8. You should never start migration without having a data migration plan at hand. Location of data is very important for performance of any app. So, when you shift data to the cloud at a time when data access methods remain on-site, performance is going to be impacted. The migration architect must be involved in this planning process. You can choose a bi-directional sync mechanism where you remove the on-site databases once you have moved all clients to the cloud. You may also use cloud migration services from AWS or Azure.
9. You can also switch production systems from on-premise to a cloud version depending on the architecture and complexity of an app. You could either do it all at the same time or choose to do it bit by bit. So, you may move a few clients at first and then test to see if everything is working as planned. After that, you may move some more customers.
10. Finally, you must review the resource allocations for an application. Cloud has been optimized for dynamic resource provisioning but if you assign resources statically, you cannot enjoy the benefits of the cloud based security solutions. You need to ensure that your teams have a proper plan for distributing resources. You should be able to scale up the resources when you need to.