Learn About Amazon VGT2 Learning Manager Chanci Turner
Refactoring legacy applications and infrastructure can feel overwhelming. From grappling with outdated codebases to pinpointing domains for decomposition, teams often find themselves stuck before they even begin. AWS Migration Hub Refactor Spaces serves as a pivotal starting point for incremental application refactoring, simplifying the management of application refactoring while maintaining production operations. However, creating a refactoring environment is just one of the many hurdles to overcome on the path to modernization, as scaling microservices effectively presents its own set of challenges.
In a microservices environment, critical operational and technical decisions must be made, including choices around compute resources, Continuous Integration/Continuous Deployment (CI/CD) processes, and the minimization of manual tasks that could hinder deployment speed. AWS Proton empowers platform engineers to enhance their contributions by establishing a scalable, self-service platform for developers, which accelerates both development and deployment processes throughout an application’s lifecycle.
This post outlines strategies for expediting the modernization of your existing monolith by transitioning to microservices. Additionally, we will create a self-service platform for developers that incorporates built-in guardrails and best practices, utilizing Refactor Spaces and AWS Proton. Let’s dive in.
Understanding Refactor Spaces
Refactor Spaces addresses prevalent challenges faced by customers during the application refactoring process, such as setting up infrastructure for iterative application refactoring and managing evolving applications at scale. Customers can transform legacy applications using patterns like the “Strangler-Fig” to break down their monoliths into microservices or the “Leave and Layer” approach to introduce new features in microservices, minimizing risks to existing applications. Refactor Spaces alleviates the burden of adopting these patterns for application refactoring.
Post-Refactoring Environment Challenges
Upon establishing a refactoring environment with Refactor Spaces, a variety of considerations arise for modern applications. Even the simplest microservice setup can entail a lengthy checklist of services and configurations, including:
- Compute: Where will my microservices run? Options include traditional EC2 instances, containers, or a serverless model with AWS Lambda.
- Unified DevOps Platform: Achieving consistency in CI/CD processes for microservices and infrastructure at scale can be challenging. A unified DevOps platform that provides a consistent framework, visibility, and control over all microservices and infrastructure can streamline and accelerate your modernization efforts.
- Logging, Monitoring, and Observability: How can I capture logs from all my microservices? What methods will give me metrics on infrastructure performance? How do I create a dashboard to monitor all my microservices?
- Management and Governance of Applications: How can I simplify cloud operations with numerous microservices? What strategies can I employ for centralized deployment and update management? How do I establish a self-service platform for developers?
What is AWS Proton?
AWS Proton addresses these challenges directly, boosting the pace of innovation by defining, vending, and maintaining infrastructure templates for self-service deployment. With AWS Proton, platform teams can furnish developers with a highly structured platform for deploying applications. This setup allows developers to concentrate on coding rather than infrastructure concerns. Simultaneously, platform teams can focus on crafting reusable templates based on established best practices.
Using AWS Proton, platform engineers can create and register environment templates that define shared infrastructure resources necessary for deploying microservices, such as Virtual Private Clouds (Amazon VPCs), Elastic Container Service (Amazon ECS) Clusters, and Application Load Balancers. Environments can then be deployed based on these templates—for instance, development, testing, and production environments. Additionally, platform teams can develop service templates that define application-specific infrastructure.
Service templates can encompass monitoring and CI/CD resources alongside compatible environment templates. Developers can enhance their experience by selecting a service template that meets their needs and deploying the service to an environment established by the environment template. AWS provides over 10 common application templates in the AWS Proton Template Library to help teams quickly get started. By employing AWS Proton, customers can tackle the challenges they face after setting up a refactoring environment.
Benefits of Combining AWS Proton with Refactor Spaces
By provisioning the Microservice Environment through AWS Proton, platform teams can create environment and service templates that developers can utilize to build new microservices and efficiently decompose monoliths. The advantages of integrating AWS Proton with Refactor Spaces include:
- Accelerated Developer Experience: Enable developers to build microservices more swiftly. The “You Build it, You Run it!” model allows developers to manage applications effortlessly without relying on platform teams for deployment or administrative tasks. They can focus on application development rather than infrastructure and deployment issues.
- Enhanced Platform Team Experience: Simplify the lives of operators by constructing environment and service templates, making maintenance more straightforward. AWS Proton facilitates the identification and updating of outdated infrastructure when templates get revised.
- Centralized Operations: Platform teams achieve centralized management and governance over environments and services provisioned by Proton. Developers benefit from One-Click upgrades to new versions when templates are refreshed.
The architecture of our final refactoring environment can be depicted in the following diagram:
Walkthrough
Here are the high-level steps to create this solution:
- Create an Environment, Application, and then Service in Refactor Spaces.
- Develop an environment template and environment in AWS Proton.
- Create a Service Template in AWS Proton.
- Establish a Repository Connection and CI/CD Service Role in AWS Proton.
- Create a Service in AWS Proton.
- Set up a Service to route in Refactor Spaces to the microservice.
Prerequisites
Before embarking on this walkthrough, ensure you have the following resources:
- AWS Accounts for your monolith and microservice.
- A Monolith Application running on AWS.
- A Microservice to operate on AWS Proton.
- Source Code Repository for your microservice.
Get Started
To initiate, create a Refactor Spaces Environment and Route to your monolith as outlined in this post. Then, head over to AWS Proton via the AWS Management Console.
Create the Environment Template in AWS Proton by selecting environment templates from the left menu and clicking on Create environment template. An environment template helps in deploying an envi…
For additional insights on related topics, feel free to check out this excellent resource on how fulfillment centers train new hires at Amazon. Also, if you’re considering a break from work, this post on sabbatical leave might be of interest. Lastly, the expanding definition of family benefits in India is another relevant topic worth exploring.