Phase 3: Wave-based implementation
The wave-based implementation phase focuses on selecting AWS microservices to replace specific functionalities of the legacy system, and then implementing those services in waves. The following recommendations can help you prioritize which capabilities to modernize first, and then roll out the changes to production incrementally.
Important
Make sure that you consult and get approval from key stakeholders before implementing any of the following wave groups. It’s recommended to use an iterative approach when creating these groups, rather than relying solely on the capability matrix’s scoring criteria.
Key focus areas
-
Using a series of prioritization criteria to categorize capabilities into three implementation waves based on their number of dependencies, business priority, and level of complexity
-
Selecting cloud-native AWS microservices that can provide the same capabilities as the legacy IT system
-
Configuring the foundational AWS infrastructure required to set up the selected AWS microservices
-
Rolling changes out to production incrementally in waves
Step 1: Organize capabilities based on their number of dependencies, business priority, and level of complexity
Using input from key stakeholders along with the weighted scores from the capability matrix, organize the legacy system’s capabilities into the following three main groups:
Note
Most implementations also require the use of many subwave groups. This guide outlines the three main wave groups for example purposes only.
Wave 1 capabilities
Number of dependencies |
None or very low |
Business priority |
Low |
Complexity |
Low |
Wave 2 capabilities
Number of dependencies |
Low to medium |
Business priority |
Low to medium |
Complexity |
Medium |
Wave 3 capabilities
Number of dependencies |
High |
Business priority |
Medium to high |
Complexity |
Medium to high |
Step 2: Select AWS microservices to replace the legacy IT system’s capabilities
In coordination with key stakeholders, use an iterative process of reviewing and finalizing the sequence of capabilities that you want to modernize. Then, select AWS microservices to replace the legacy IT system’s capabilities.
The following are some example AWS microservices that can often be used to replace capabilities that fall within each wave group:
Wave 1 AWS microservice examples
-
AWS Lambda
-
Amazon Simple Queue Service (Amazon SQS)
-
Amazon Simple Notification Service (Amazon SNS)
-
Amazon API Gateway
Note
Wave 1 capabilities can be integrated with minimal AWS foundational services by
using a strangler migration pattern. For more information, see Seamlessly migrate on-premises legacy workloads using a strangler
pattern
Wave 2 AWS microservice examples
-
AWS Step Functions based workflow
-
Database fit for purpose (migration to Aurora PostgreSQL)
-
AWS SaaS factory
Note
Wave 2 capabilities typically involve some level of database modernization, such as migrating to a PostgreSQL-compatible database. To maintain a hybrid cloud solution, synchronizing legacy databases with new, cloud-native databases is also usually required.
Wave 3 AWS microservice examples
-
AWS Fargate
-
Real-time recommendation engines, such as Amazon Textract, Amazon Comprehend, Amazon Rekognition, and Amazon SageMaker models
-
Scalable data lakes, such as Amazon Simple Storage Service (Amazon S3) and AWS Lake Formation
-
Purpose-built Amazon analytics services, such as Amazon Athena, Amazon EMR, Amazon OpenSearch Service, Amazon Kinesis, and Amazon Redshift
-
Seamless data movement services, such as AWS Glue and AWS App Mesh
Important
End of support notice: On September 30, 2026, AWS will discontinue support for
AWS App Mesh. After September 30, 2026, you will no longer be able to access the
AWS App Mesh console or AWS App Mesh resources. For more information, visit this blog
post Migrating from AWS App Mesh to Amazon ECS Service Connect
Note
Wave 3 capabilities typically have a high number of dependencies and usually need to integrate with other microservices. These attributes make wave 3 capabilities good candidates to be replaced by container-based microservices.
Step 3: Configure the foundational AWS infrastructure required to set up the selected AWS microservices
After reviewing and finalizing the target cloud-based architecture with key stakeholders, configure the AWS infrastructure required to set up the AWS microservices that you selected.
Example foundational AWS infrastructure resources
-
AWS Control Tower
and landing zone -
AWS Organizations
organizational units and service control policies (SCPs) -
Amazon API Gateway
APIs -
AWS Lambda
functions -
AWS database services, such as Amazon Relational Database Service (Amazon RDS)
-
Amazon CloudWatch
dashboards and alarms -
Amazon Simple Notification Service (Amazon SNS)
topics and subscriptions -
Amazon Cognito
and user pools
Step 4: Implement the changes in waves
Sequentially implement each wave group in a test environment. As each wave group becomes ready for production, test the system’s functionality and debug any issues in the test environment. Then, cut over the changes to your production environment incrementally.
The following are high-level descriptions of the types of tasks that are usually associated with implementing each wave group:
Wave 1 implementation
-
Create serverless Lambda functions
-
Integrate the Lambda functions with the API Gateway service
-
Configure authentication and authorization systems by using tools such as Amazon Cognito, IAM, Okta, and Ping Identity
-
For hybrid cloud architectures, set up a proxy layer by using a service mesh, such as AWS App Mesh
.
Wave 2 implementation
-
Configure AWS App Mesh, including your service mesh, virtual services, nodes, routes, and proxies
-
Set up containers in AWS Fargate or Amazon Elastic Kubernetes Service (Amazon EKS)
-
Integrate the proxy layer with the frontend system
Wave 3 implementation
-
Complete complex data migrations and integrations
-
Implement your most complex workflows that involve multiple microservices