So you want to move to the cloud but have no idea how to start? You realize that the cloud migration is essential, but you don’t know how to prepare for the process, and keep postponing it? No need to panic.
First, start small. Instead of attempting a large-scale migration, begin with a single-application approach. Secondly, prepare a migration plan. And make it a good one.
Keep reading to find out how to plan your first cloud migration to make it painless and successful.
PART I: DECISION TIME
- Carefully choose your candidate application for migration. Treat it as your pilot project – each subsequent migration will depend on the success or failure of this one. There are many factors to consider. Do not choose an application only because it’s the easiest one to move.
- Hire a Cloud Architect (if you haven’t already). This should be someone 100% focused on the cloud technology. Allow them time, provide materials, and offer your full support so that this person becomes a technical leader for your migration.
- Once you decide on the application, select the right cloud solution. To be able to identify the best solution, you need to define some selection criteria. These can be for instance: global presence, pricing model, or maturity and variety of services. At this stage, you should research and test different cloud solutions.
PART II: SHARE YOUR VISION
- Pitch your plan to the decision-makers. The application has been chosen, as well as the cloud solutions, so this is high time to sell your vision to the senior management.
- Secure the budget. Estimate the migration cost and present the calculations to the management. Remember to evaluate and highlight the savings. Your management will like it.
- Create a migration team and educate them. They will be the core staff during and after the migration.
PART III: KNOW WHAT TO EXPECT
- Assess the cloud readiness for the application to determine how ready it is to be moved. You will need high- and low-level designs for the application as well as application dependency mapping. All the information about the application is essential. If anything is missing – create, re-create or refresh it.You need to know all the data flows between the application and the database or all the supporting systems. Create an application map if you don’t have one. Check current hardware utilization. Discover if there are any peaks in hardware usage. Map the hardware configuration of the physical servers to the equivalent instances in the cloud. Estimate storage and bandwidth requirements. Check if your application stack is compatible with the cloud provider you chose.
- At this very moment, you should know your application better than anyone ever did. It is the time to decide how to move it to the cloud. Remember that it is not just the application that’s going to be impacted, but the entire ecosystem around it. Apart from retiring or retaining (yes, there is still time to go back), there are a few ways to move your application to the cloud. What you can do is to:
- Re-host – lift and shift, take your application and storage and move 1:1 to the cloud. This process can be often automated with tools.
- Re-platform – move and optimize. Move partially or fully to the PaaS model. The application core remains unchanged.
- Re-architect – involves the application architecture change. Uses cloud-native features like Serverless. Highly complex, it’s like building an application from scratch.
PART IV: BRACE YOURSELF, THE CLOUD IS COMING
- Create a cost model and resource tagging. Divide the account structure by Business Units and break it into stages (production, non-production). Develop a tagging methodology and strategy. Tag everything to know who pays for what.
- Define a reporting structure and frequency for costs and data usage.
- Expand your agility and manageability to the cloud. Update your risk management, incident response, problem management, security, governance, and automation to include your new cloud application.
- Create and execute a proof of concept. Examine the performance and latency. Build migration scripts to automate the process.
- Define the expected levels and exit criteria for a successful migration.
- Design a cloud architecture. Decide how many virtual instances you need. Prepare an auto-scaling group for redundancy and to survive the usage peaks. Define networks and security. Create users, groups, roles and assign relevant permissions. Establish best practices.
- Plan your data migration. Decide if you want to upload data to the cloud or use such features as Amazon Snowball. If you wish to migrate your current database to a new one, this is the right time to plan it out.
- Create a detailed migration plan with a schedule and involved teams. Consult the schedule with business. Agree on maintenance windows for the migration and choose the final date for the cutover.
- Prepare the cloud environment according to the design. Create networking, auto-scaling groups, load balancers, security. Prepare images for your machines. Prepare and launch storage and databases. Implement everything you designed.
PART V: A SMALL STEP FOR YOU, A GIANT LEAP FOR YOUR ORGANIZATION
- Start data migration. Upload data to the cloud – to both, database and storage. Synchronize your on-premises data to the cloud.
- Migrate your application. Launch instances and check if everything works properly. Perform functional, load, and performance tests. Test high availability. Make sure that your application is working even when some of the resources are down. Ensure that the expected levels and exit criteria for each component are met.
- Do not shut down the legacy environment yet. Keep it running during the migration phase and when it ends. After verifying that the application in the cloud operates at the required levels, reconfigure load balancers to direct traffic to the cloud and shut down on-premises servers one by one.
- Monitor and optimize your cloud environment. Analyze utilization patterns to find out if you can reduce costs. Tune up the auto-scaling groups if needed. Create automation scripts. Use the integrated monitoring tools to monitor your application.