Following is one of the approach to successfully migrate workloads from another public cloud to AWS cloud.
Migration Plan
- Define Projects
- Create project hierarchy using AWS Organizations and setup account and roles. For more details, refer to How do I organize projects in AWS for separate billing
- Setup VPC
- Set up VPC and Link VPC across projects. Ensure the IP address for your VPC doesn’t overlap.
- Migrate Databases –
Migrating a database needs careful investigation based on your existing database infrastructure. Broadly consists of two parts – Environment Setup and Data migration.
For Environment setup,
-
- Check for Managed RDS support for your database and leverage appropriate AWS RDS Managed service.
- For Non managed database (or Non-managed NoSQL databases), setup the appropriate environment. For instance, if you are using a MongoDB cluster, you have a choice to migrate to a compatible service like AWS DocumentDB or setup your own MongoDB cluster using VMs. While choosing a compatible services, please ensure you look at what capabilities are being offered by compatible services, as not all all features would be available (i.e https://docs.aws.amazon.com/documentdb/latest/developerguide/functional-differences.html)
For Data migration, this depends on the size of the database and if you can afford any downtime. You can use export and import tools offered by the database if you database size is small enough. For large database migration, you can use AWS Data Migration Service to migrate the data while your existing database systems are functional.
For backups, large file system migration, you can leverage services like AWS Storage Gateway, AWS Data sync (online transfer) or AWS Snowball (for offline transfer).
- VM Migration
- If you are building docker containers for your applications and running on VMs, the migration process is pretty straightforward by publishing your docker images to AWS container registry and using it in your AWS VM. For non docker containers, based on your application, you might need to build the application from scratch on AWS VM or evaluate VM migration service to migrate VMs.
- API Gateway / Endpoint
- If your are using API Gateway from other cloud provider, you can evaluate and leverage AWS API gateway.
- Events and Jobs
- If you are using an event infrastructure or running jobs based on triggers like file upload or time schedules, you can leverage services like AWS Lambda which can be trigged based on the events.
- Hardening the Production setup and Audit Trails
- This involves creating Security Groups, setting up Cloud Trail, AWS Guard Duty, WAF etc. based on your requirements.
- Logging and Backups
- Define if you need central logging to log data from all AWS services. You can use CloudWatch Logs to log and search log events across your AWS services.
- Create Backups schedule for RDS and VMs.
- Monitoring
- Setup up alerts on server usages, api latency etc, create custom dashboards using AWS CloudWatch.
- CI/CD Pipeline
- Integrate continuous integration and deployment.
- Cost and Usages
- Setup up monitoring budget alerts for each projects to track costs and usages.
Download the AWS-Cloud-Migration-Plan presentation to go over the above points and best practices in detail.