AWS App Mesh
A few notes from the session at AWS Loft 2019 regarding AWS AppMesh as their service mesh offering and common use cases; slides can be fetched here from the AWS EMEA Resources site.
It seems that the applications so far are around deployments, by providing mechanism that enable to us to conduct them in an agile, flexible yet robust way; the mesh is used to control the traffic flow as part of the deployment process, i.e. Canary Releases, 0-downtime deployments by following a Blue/Green approach.
It was strange however, that application resiliency wasn’t part of the use cases reviewed, they were in fact barely mentioned; patterns such as Circuit-Breaker are still on the road map of features to come (at the time of this writing), it supports basic patterns such as Retries and Exponential Back-Off.
Features and applications
- Obervability and control of Application-level communication.
- Provides mechanism for Failure isolation/protection (resiliency).
- Proxy-based node management, a proxy exists as a sidecar on every virtual node.
- Features for Tracing and Logging.
- Fine-grained deployment control by managing/shaping client-side traffic and routing, i.e. Canary Releases or Blue/Green.
App Mesh components:
Captured some of the key elements and buzzwords comprising the Service.
- Mesh name.
- Virtual nodes (actual functioning services)
- Backend
- Service discovery
- Listener
- Routes
- Virtual Service
Flagger was quick-demoed to demonstrate Canary Releases, the value added to a mesh is that it enables us to automate, requiring virtually no human intervention in order to control the routing to and from nodes based on the results as it makes progress.
Remarks
- As expected being an AWS offering, it works across various computing services: ECS, Fargate, EKS, EC2 and K8s on EC2.
- Envoy Proxy is used under the hood.
- Main actors/elements are Virtual Nodes, Virtual Services and Routes.