Phase 3: Wave-based implementation - AWS Prescriptive Guidance

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 on the AWS Blog.

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

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

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