One of the first questions I am asked is how do you get all your stuff into Google Cloud Platform. There are a number of scenarios to consider when planning on moving to the Cloud.
Firstly, where is your existing infrastructure. Do you have your own datacenter, a colocation site, or are you already in the cloud with another provider like AWS, Azure or Alibaba?
Google say there are 5 phases to consider for a successful migration:
- Move data
- Move Applications
- Cloudify (Cloud optimise)
We will explain these in detail below.
First you need to have a full understanding of your existing infrastructure, I recommend performing some kind of audit. Hopefully you have everything well documented, but if not, there are plenty of tools and scripts online which will pull information about your infrastructure. I usually use PowerShell Core scripts:
There are generally 3 types of server moves:
- Servers and applications which are Easy to Move
- Servers and applications which are Hard to Move
- Servers that Cannot be moved
When deciding how to classify your servers you will need to consider:
- Work out and understand the criticality of the application to the business
- Are there any compliance rules, such as can data be located outside of your country of residence
- Do you need to purchase new licences?
- Will migrating to the cloud deliver a return on your cloud Investment?
- Work out what are the application dependencies?
- What is the largest benefit of moving it to the cloud?
The next stage is a proof-of-concept or pilot stage. This typically takes several weeks of testing systems in the cloud, and testing the process and streamlining the technical teams migration process.
The Proof of concept should be a:
- Non-critical server pilot with a variation of services. (Most likely test and dev servers)
- Small steps at first, start with the “easy” servers
During the pilot you must :
- Work out if you need additional Licencing (research BYOL model)
- Work out your Roll back plan
- Work out if any of your business processes will change
During the POC you will start to build out your GCP assets which will include:
- Separation of duties (IAM)
- Test/Prod environments
- VPC networking
After the proof of concept you will have a greater understand of what went well, what issues were encountered
The POC will also:
- Give the technical team the time needed to learn GCP
- Allow you to start initial cloud performance validation
- It will help you work out your cloud design
- You can determine “What’s the same?”
- You can determin “What’s different?”
- What internal processes need to change?
- What security processes need to change?
The next stage is the start of your cloud migration where you move your data.
Google recommend moving the data before applications so you can
- Evaluate Storage options available
- Decide on a data tranfer method
Here are the types of data transfer available:
|On-Prem data||Google Cloud |
drag and drop
|GCS||Storage Transfer Service|
|Batch Import |
|GCS||Batch upload to GCS|
|Compute Engine||Backup files to persistent disk |
Stream to persistent disk
The next step is to start migrating your applications.
There are several options to consider such as:
- Do it yourself (Self service) or use a Google partner?
- Lift and Shift? – create duplicate environemnet of on-prem resources – this is usually for HUGE amounts of data
- VM/Physical server import freely available from CloudEndure and Velostrata
- Choose a Hybrid cloud model?
Now you have your services in the cloud, the final step is to “cloudify” the solution by starting to push services out to cloud products.
Typically this may include
- Add High Availability
- Add Elasticity such as Auto-Scaling
- Move to different storage options
- Add additional cloud services
- Add Monitoring
- Add deployment procedures
- Add redundancy
Further services can be added such as:
- Offload static assets to cloud storage
- Enable autoscaling
- Enhance redundancy with different availability zones
- Enhanced monitoring with stackdriver
- Managed services
- How to launch future resources
- Decouple stateful storage from applications