Need advice about which tool to choose?Ask the StackShare community!
Kong vs Kuma: What are the differences?
Introduction: Kong and Kuma, both being service mesh technologies, offer various functionalities and features. While Kong is an API gateway, Kuma is a universal control plane for service meshes. Let's explore the key differences between Kong and Kuma.
Deployment and Scalability: Kong is primarily designed as an API gateway and can be deployed as a standalone service, making it easier to scale horizontally. On the other hand, Kuma acts as a control plane for various service meshes and is typically deployed as a Kubernetes controller, enabling seamless scaling of services within a cluster.
Multi-Mesh Support: Kuma provides built-in multi-mesh support, allowing the management of multiple service meshes across different clusters or environments. This feature enables greater flexibility and scalability when dealing with complex distributed architectures. Kong, on the other hand, primarily focuses on managing one API gateway.
Mesh Connectivity: Kuma is designed to provide seamless connectivity and communication between services within and across meshes, regardless of the underlying infrastructure or location. It achieves this through the implementation of transparent service-to-service communication. Kong, on the other hand, primarily focuses on handling external API traffic, rather than internal service communication.
Traffic Routing: Kong offers advanced traffic routing capabilities, allowing users to define and control complex request routing rules based on various factors such as path, headers, and protocols. Conversely, Kuma primarily focuses on traffic routing within the service mesh, ensuring secure and reliable communication between services without in-depth external traffic routing functionalities.
Service Discovery: Kuma simplifies service discovery by providing automatic service registration and resolution capabilities within the mesh. It dynamically discovers and maintains the list of available services and their locations. Kong, while offering service discovery, primarily emphasizes on providing centralized API management and authentication.
Protocol Support: Kong supports a wide range of protocols, including HTTP, gRPC, WebSockets, and more. This enables it to act as a gateway for various types of APIs and services. Kuma, on the other hand, primarily focuses on supporting only HTTP and gRPC protocols, as it is specialized in managing service-to-service communication in a mesh environment.
In summary, while Kong focuses on being an API gateway with advanced traffic routing and management capabilities, Kuma acts as a universal control plane, providing enhanced service mesh functionalities like multi-mesh support, seamless connectivity, and service discovery across different clusters or environments.
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.
Istio based on powerful Envoy whereas Kong based on Nginx. Istio is K8S native as well it's actively developed when k8s was successfully accepted with production-ready apps whereas Kong slowly migrated to start leveraging K8s. Istio has an inbuilt turn-keyIstio based on powerful Envoy whereas Kong based on Nginx. Istio is K8S native as well it's actively developed when k8s was successfully accepted with production-ready apps whereas Kong slowly migrated to start leveraging K8s. Istio has an inbuilt turn key solution with Rancher whereas Kong completely lacks here. Traffic distribution in Istio can be done via canary, a/b, shadowing, HTTP headers, ACL, whitelist whereas in Kong it's limited to canary, ACL, blue-green, proxy caching. Istio has amazing community support which is visible via Github stars or releases when comparing both.
Pros of Kong
- Easy to maintain37
- Easy to install32
- Flexible26
- Great performance21
- Api blueprint7
- Custom Plugins4
- Kubernetes-native3
- Security2
- Has a good plugin infrastructure2
- Agnostic2
- Load balancing1
- Documentation is clear1
- Very customizable1