AWS App Mesh as a migration tool - Thu, May 14, 2020
Migrate from legacy applications without even touching their infrastructure or code
What is App Mesh
AWS App Mesh makes it easy to run microservices by providing consistent visibility and network traffic controls part of an application. App Mesh separates the logic needed for monitoring and controlling communications into a proxy that runs next to every service.
You can as of right now use App Mesh with EC2, AWS Fargate, ECS, EKS. App Mesh uses Envoy, an open source proxy, in the background.
Instead of treating networking as separate from the application, App Mesh is about the application-aware network. This type of network automates translating service requirements into network configuration needed by the application. App Mesh is the first step towards making networking application native.
Move functionality to containers
My vision is that App Mesh is the building block which will enable legacy applications to migrate without modifying the application itself. Imagine a scenario where you have a monolith that have different functions that communicate, and even different monoliths that communicate with each other.
Utilizing App Mesh, you could without modifying the monolith create a new service that replicates parts of what the monolith is doing in a container. If the application and this, for example Fargate container, is part of the mesh you could route the traffic from the legacy application to the new container and slowly but surely migrate away from the old application. Without even needing to modify the application code!
Serverless later
App Mesh supports Linux services that are registered with DNS, AWS Cloud Map, or both. After implementing your mesh, you update the services hosting your actual services to use the Envoy proxy. Once updated, your services communicate with each other through the Envoy proxy rather than directly with each other.
The question is when Lambda support will come for App mesh as it seems like it would be a logical next step. Instead of migrating functionality to containers, migrate directly to serverless functions in Lambda.