Amazon Web Services (AWS) provides over 100 cloud computing services, many of them founded on its global Infrastructure as a Service (IaaS) offering, Elastic Compute Cloud (EC2), that allow you to set up dynamic, scalable, automated computing environments. Whether you are migrating to AWS to reduce costs, improve resource utilization, or benefit from new infrastructure capabilities that are unavailable on-premise, migration will be a non-trivial effort.
This article presents Amazon’s basic framework for migration—basic migration phases that are relevant for any AWS migration project, and strategies for migrating each of your applications to AWS, from lift-and-shift to refactor/re-architect. It can also help you plan for common challenges that affect almost every migration project.
In this post, we’ll examine the process of AWS migration, solve 5 key challenges of AWS migration
AWS Cloud Migration Phases
Amazon’s cloud migration guide outlines five phases for migration to the AWS cloud.
Phase 1: Migration Preparation and Business Planning
Get a clear picture of your current situation, the architecture of your existing applications, the challenges you are facing and your business goals. Build a business case for your Amazon migration by defining your objectives. Are you migrating to reduce costs, improve scalability, improve reliability? Based on those goals, determine which applications you need to move to the cloud.
Phase 2: Discovery and Planning
Now that you have an idea of your goals, examine your IT portfolio and consider which migration strategies you’ll use for each of your applications (see the next section). Learn about tools AWS provides that can assist with migration, such as Server Migration Service (SMS), Database Migration Service (DMS) and Amazon DirectConnect, and which might be relevant for your use case.
Phase 3 & Phase 4: Designing, Migrating, and Validating Applications
Create a detailed migration plan for each of your applications. Start with a few apps as a Proof of Concept and see how migration strategies and tools actually play out in your environment. Then get buy-in from stakeholders in your organization and move forward with a full migration plan.
Phase 5: Operate
As applications move to the cloud, you start operating them within AWS and turn off the old versions on-premises (unless you opt for a hybrid model). Build on your experience from applications already running in the cloud for additional applications you’ll need to migrate.
Now that we understand the basic process for migrating any app to AWS, let’s review six alternative strategies that define if and how you will migrate each of your applications to the cloud.
AWS Migration Strategies
Amazon recommends six ways to move an on-premise application to the cloud. These strategies are summarized in the image below. For each application or workload, you need to carefully consider which cloud migration strategy is the most appropriate.
- Rehost (“lift and shift”)
Moving applications as-is from the on-premise environment to the cloud, using tools like Server Migration Service (SMS) or manual procedures. For more information on how rehosting compares to other migration methods, as well as some of the tools that can help you achieve it, see our blog post on lift and shift.
Suitable for: Large legacy migrations, shortage of cloud technology skills.
Pros: Simpler migration process that doesn’t involve changes to the enterprise business processes and faster time to market.
Cons: Less flexibility, inefficient use of cloud resources, difficult to extend or modify applications.
- Replatform (“lift, tinker and shift”)
Moving applications almost as-is, but replacing some components to take advantage of AWS services. For example, moving a legacy application but replacing the self-hosted database with Amazon Relational Database Service (RDS).
Suitable for: Conservative migrations requiring stability but willing to experiment to get more benefits from the cloud.
Pros: Relatively fast migration, requires minimal integration and testing work.
Cons: Limited ability to leverage the benefits of the cloud.
- Repurchase (“drop and shop”)
Involves replacing the application entirely with Amazon or cloud services. For example, discontinuing the license for an on-premise ERP system and starting to use the same ERP system as a service on the AWS Marketplace.
Suitable for: Projects in which there is a willingness to change the existing license model and move to an entirely new application.
Pros: Enjoy an improved feature set compared to legacy infrastructure, improved ability to leverage cloud capabilities.
Cons: Can incur major costs on the business side, the organization needs to adapt and rebuild processes around a completely new system.
- Refactor / Re-architect
A complete overhaul of an application to rebuild it for a cloud-native environment.
Suitable for: Projects in which there is a strong business need to add scale, performance or features that would not be possible on-premises.
Pros: Maximum flexibility and efficiency, push the envelope on cloud usage
Cons: The most expensive option. In many cases, it requires re-architecting and building the application or significant parts of it from scratch. It will also likely require changes to the enterprise business processes, and thus involve more testing.
Identifying applications that are no longer useful and can be turned off instead of migrated to AWS. This can free up resources for applications that are actually useful and can benefit from the cloud.
Some applications may not be suitable or ready for migration to the cloud. You can retain them on-premises, permanently or at least at the early stages of the migration project.
After you select a strategy and begin moving applications into AWS, you’ll discover many practical challenges. Below we briefly cover a few of the more common challenges and suggest how to deal with them.
Migration to AWS: 5 Challenges and Solutions
Cloud migration is a complex effort, and there are many challenges you may run into in your AWS migration project. Here are a few common challenges and tips on how to resolve them.
1. Resiliency for Compute and Networking Resources
You must ensure that applications hosted on AWS are highly available and resilient. Cloud machine instances don’t live forever, so you need to find a way to preserve application state when the application moves between machine instances. In addition, you need to ensure resilient connectivity—ensuring that cloud workloads have network access at all times.
On the compute side, you can opt for reserved instances to ensure that your machine instances stay yours for a long period of time, but this comes at a cost. Set up replication, or use a service that manages deployment and availability like Elastic Beanstalk.
On the networking side, if you are working in a Virtual Private Cloud (VPC), Amazon provides active/standby IPSec tunnels and the AWS Direct Connect service that creates a direct connection from your enterprise network into the VPC. Use a combination of both to ensure highly resilient networking.
2. Log Analysis and Metric Collection
After migrating to AWS, you’ll find yourself in a highly scalable and dynamic environment. Your previous strategies for logging and monitoring your applications may no longer be relevant. It’s crucial to centralize data because you won’t be able to analyze a log on machine images that shut down yesterday.
Ensure that logs from applications, AWS services and S3 buckets are centrally stored and monitored. Leverage Amazon CloudWatch and see Amazon’s reference architecture for centralized logging using CloudWatch, Lambda and Cognito.
3. Managing Your Costs
Many organizations move to the cloud without establishing clear KPIs on how much they expect to spend or save after their migration. It is then difficult to understand if the migration was successful from an economic perspective. In addition, cloud environments are dynamic and costs can rapidly change as you adopt new services or scale applications up and down.
Before migrating, create a clear business case and understand how much your cloud migration should save, or how much you expect it to add to your cost, in exchange for new capabilities you don’t have on-premise. Create an economic model to simulate how much you will spend on AWS across applications, services and projects. It might be helpful to use an AWS calculator so you can more accurately plan your budget.
Like everything in life, reality will be different from your initial model, so monitor costs on an ongoing basis and identify deviations from the original cost model, investigate and resolve them before they turn into big surprises.
4. Plan for Security
Cloud environments can be as secure as on-premise environments, but their security properties and strategies are radically different. There is a major risk of a “security vacuum”, as applications move from on-premise to the cloud, but existing security tools and strategies don’t go with them.
Map out the security and compliance requirements of all applications in your migration project. Identify AWS services and solutions that can provide equivalent or better security measures to those you have today on-premises. And build those services into your deployment plan, ensuring that no application enters the cloud—even in development and testing phases—without the appropriate security measures. See Amazon’s cloud security guidelines.
5. Moving On-Premise Data and Managing Storage on AWS
How do you move your data smoothly from your current on-premise location to the cloud?
- Maintaining user experience—higher latency and insufficient bandwidth can have an adverse impact on the performance of your application.
- Achieving resiliency—enterprises must pay attention to maintaining resiliency and high availability for data volumes on the cloud.
- Centralized monitoring and operations—while some monitoring tools can be used for keeping tabs on data flows in AWS, this may cause fragmented visibility between on-premises and AWS environments.
To address these challenges, enterprises should consider solutions offered by AWS, such as AWS Direct Connect, which can help them achieve highly resilient, dedicated connections between their Virtual Private Cloud (VPC) and on-premise infrastructure. This can also help synchronize your operations and create a centralized point of visibility.
You can also use Amazon CloudWatch to reduce the impact of migration on user experience. CloudWatch can help you identify performance issues in real time and address the root cause before users are affected.