Most large lift-and-shift migrations to AWS use AWS Application Migration Service
Advantages
For lift-and-shift migrations of any scale, AWS Application Migration Service has many benefits:
-
The replication is easy to set up (it doesn’t require a steep learning curve).
-
It’s fast to scale, by rolling out agents on the source machines.
-
You can use the Cloud Migration Factory
to automate most manual tasks, manage multiple machines, and orchestrate migration waves. -
It supports a wide range of x86 operating system architectures.
-
It supports any type of source environment (on-premises data center, any other cloud, or another AWS Region).
-
It is application-agnostic, so it supports any application running on the source servers.
-
No license or purchase is required. AWS offers pay-as-you-go pricing, so you pay for the service only as long as you use it, without requiring long-term contracts or complex licensing. AWS Application Migration Service provides a free 90-day period per server, which is enough for most migrations. For details, see AWS Application Migration Service pricing
on the AWS website.
Disadvantages
When you use block-level replication tools such as AWS Application Migration Service, you might encounter the following corner cases and factors to consider:
-
You can migrate clustered systems with shared block storage, such as Windows Server Failover Cluster (WSFC) or some Microsoft SQL Server Always On availability group clusters, with the same tool, but they require specific procedures and longer cutover windows (a few approaches are described in this blog post
). -
Systems that have a high rate of data changes (such as OLTP databases) might have higher performance or network requirements, which complicate migration efforts.
-
Network bandwidth must be sufficient for the amount of data to be transferred within the planned migration and cutover time window. This is because Application Migration Service doesn’t provide an offline shipping option, unlike AWS Snowball
. -
Migration requires a small downtime window, within an RTO of minutes. AWS Application Migration Service uses EBS snapshots as part of the migration process, and new EBS disks that are created from such snapshots initially have worse performance. With some database read patterns, this might increase the effective cutover window until the migrated database is at full performance.
Best-fit scenarios
AWS Application Migration Service covers almost any lift-and-shift migration fully, with few disadvantages, as discussed in the previous two sections. This tool can handle most of the corner cases, such as database clusters, as long as the longer cutover window required for these systems satisfies your migration requirements.
The following sections cover two scenarios in more depth:
-
Large-scale migration with multiple migration waves
-
Single application migration that requires minimal downtime
Large-scale migration with multiple migration waves
An example of a large-scale migration is a data center exit that is characterized by size and speed requirements, and usually involving a specific time constraint (such as the end of the lease contract for the data center). In this case, the scale dictates the approach. The migration waves are determined and grouped by applications, including databases, and each wave has a planned preparation, migration, and final cutover phase with specific downtime requirements.
Inside each migration wave, the database servers are best moved at scale by using AWS Application Migration Service block-level replication, except for a few exceptions for the following special cases that might require a separate migration approach:
-
Most clustered database systems
-
Database systems where the rate of change exceeds available network throughput (which might result in a replication lag)
For each special case, consider the tradeoff between your downtime requirements and the level of effort involved in using another migration tool. In some cases, it’s much easier to use the same migration approach for all systems instead of using separate tools and creating different processes for specific systems. If AWS Application Migration Service doesn’t support the downtime requirements for a specific system, we recommend that you use one of the methods described in the Migration with native database tools and AWS DMS section instead.
Single application migration
The single application scenario represents a granular approach for migrating a single business-critical application that requires minimum or near-zero downtime during migration, or a few such applications. The scope of the migration might vary, depending on business criticality and downtime requirements, as opposed to the speed and scale requirements of the previous (large-scale migration) scenario. If the application allows for downtime within the RTO of AWS Application Migration Service, it should be handled in the same way as any large-scale migration described earlier.
However, in cases where the cutover time must be as close to the minimum as possible—for example, when the migrated database has read patterns that require a long time to operate at full performance and the cutover windows have to remain small—you should consider a more detailed and granular approach. In general, that approach involves additional steps and requirements, which require more effort and time. One of the steps is to separate the database migration from the application server migration and to use the database migration tools described in the next section to keep the source and the target databases in sync. You can use various methods to achieve synchronization. Each method has its own advantages and disadvantages, and involves different tradeoffs between the amount of downtime and the complexity of synchronization. Nevertheless, keeping the database in sync between the source and target environments enables you to unlink the database layer from the application layer. Assuming that application servers don’t store persistent data locally, but pass everything to the database layer, synchronization also removes downtime restrictions from the application layer.
Decoupling the database and application layers enables you to migrate application
servers by using AWS Application Migration Service as in the previous scenario. Target application servers can be
started in the target environment while source systems are still working, processing the
data, and storing it in the database layer. Because the database layer is already in sync
with the target, cutover time is minimal—it only involves switching networks and
redirecting customer requests from the old source system to the target environment. You can
use multiple methods to do this, following the guidance for blue/green deployments, typically by switching DNS endpoints, using weighted DNS
zones, using AWS Global Accelerator