Need advice about which tool to choose?Ask the StackShare community!
AWS App Mesh vs Envoy: What are the differences?
Introduction:
AWS App Mesh and Envoy are both tools used in modern application development and deployment. While they have similarities, there are key differences that set them apart.
Scalability and Load Balancing: AWS App Mesh provides a fully managed service for service mesh architecture, which includes automatic scaling and load balancing capabilities. It utilizes the underlying infrastructure of AWS to dynamically adjust resources and route traffic efficiently. On the other hand, Envoy is an open-source proxy that offers similar capabilities but requires manual configuration and management for scalability and load balancing.
Flexibility and Customization: Envoy allows for more flexibility and customization compared to AWS App Mesh. With Envoy, developers have more control over the configuration and can fine-tune the proxy behavior according to their specific needs. AWS App Mesh, being a managed service, provides a more standardized and less customizable approach.
Multi-Cloud Support: AWS App Mesh is specifically designed for use with AWS services and fully integrates with the AWS ecosystem. It provides seamless integration with other AWS tools and services, making it well-suited for applications running on AWS infrastructure. On the other hand, Envoy is cloud-agnostic and can be deployed in multiple cloud environments, making it a more versatile choice for applications running on different cloud providers.
Ecosystem Integration: AWS App Mesh is tightly integrated with various AWS services such as Amazon ECS, Amazon EKS, and AWS Lambda. This integration allows for easy adoption and management of the service mesh architecture within the AWS ecosystem. In contrast, Envoy can be integrated with different platforms and frameworks, providing a wider range of options for application development and deployment.
Managed Service vs Self-Managed: One of the key differences between AWS App Mesh and Envoy is the management aspect. AWS App Mesh is a fully managed service provided by AWS, meaning that the infrastructure and operational tasks are handled by AWS. This allows developers to focus more on application development rather than infrastructure management. In contrast, Envoy requires manual configuration and management, requiring more effort and expertise from the developers.
Pricing Model: AWS App Mesh follows the pay-as-you-go pricing model typical of AWS services, where users pay for the resources consumed by their applications. The pricing is based on factors such as the number of requests received, data transferred, and the number of mesh resources used. Envoy, being an open-source tool, does not have a specific pricing model. However, deployment and management costs may be incurred due to the need for self-management and infrastructure provisioning.
In Summary, AWS App Mesh is a fully managed service provided by AWS and tightly integrated with the AWS ecosystem, offering scalability, load balancing, and ease of use. Envoy, on the other hand, is an open-source proxy that provides more flexibility, multi-cloud support, and customization options at the cost of self-management and manual configuration.
One of our applications is currently migrating to AWS, and we need to make a decision between using AWS API Gateway with AWS App Mesh, or Kong API Gateway with Kuma.
Some people advise us to benefit from AWS managed services, while others raise the vendor lock issue. So, I need your advice on that, and if there is any other important factor rather than vendor locking that I must take into consideration.
The benefit of using Kuma + Kong Gateway are:
- Feature-set: Kong + Kuma provide an end-to-end solution for both APIM and Service Mesh with a feature-set, and a performance, that is not matched by AWS services. In addition to this you can extend Kong Gateway with 70+ plugins out of the box and choose between 500+ plugins from the community to cover every use-case. In comparison, the feature-set of AWS API Gateway is quite limited and basic.
- Performance: Especially in the case of Kong Gateway, performance has always been a top priority for the project (more performance deliver more reliable applications). In some benchmarks the latency added by AWS API Gateway can be 200x more than what you would achieve with Kong Gateway natively which has been hand-crafted for maximum throughput.
- Cost: While cloud vendors like AWS make it very easy to get up and running with their services at a lower initial cost, that cost ramps up very quickly (exponentially) as the number of requests are increasing. With Kong GW you don't have this problem, since you can run tens of thousands of concurrent requests on a small EC2 instance (or Kubernetes Ingress, via the native K8s ingress controller for Kong Gateway).
- Portability: You can replicate your infrastructure on any other cloud, or on your development machines with ease. Want to run your gateway + mesh on your local Kubernetes cluster? You can do that. Want to run your infrastructure on another cloud provider? You can do that. Strategically you have full ownership of your infrastructure and its future. When it comes to Kuma, you can also run a Mesh on VM-based workloads in addition to Kubernetes (Kuma is universal).
- And much more.
Disclaimer: I am the CTO of Kong.
AWS App Mesh is useful when your micro services are deployed across Ec2 , EKS or ECS. Assume you are in process of migrating microservices from ec2 instances to ecs, its easy to switch using Virtual router configuration. As App Mesh is managed service and easy to bring up ,its worth giving it a try for your use case before choosing Kuma or any other tool.
Pros of AWS App Mesh
Pros of Envoy
- GRPC-Web9