Since Service Meshes like Istio and Linkerd focuses on inter-service communication, instead of using Kafka for Event Driven Messaging, can I extend service mesh to achieve Event Driven Messaging?
Nathan Aw (Singapore)
Since Service Meshes like Istio and Linkerd focuses on inter-service communication, instead of using Kafka for Event Driven Messaging, can I extend service mesh to achieve Event Driven Messaging?
Nathan Aw (Singapore)
Event driven messaging is possible with Istio (and I guess with Linkerd too). Basically, the service proxies will intercept events traffic like any other TCP traffic[1] and forward them to the services, and that still works with Kafka in the middle.
However, as you put it, service meshes are focused on service-to-service communication so you might not be able to regulate traffic between a producer and a consumer as easily as with HTTP communication, as this communication passes through a message broker. So, some features of service mesh perhaps won't make so much sense, like traffic shifting. While other features continue to be relevant, such as having a consistent observability or security.
There's an interesting blog post about scaling Istio + Kafka here, which might give you some ideas: https://itnext.io/scalable-microservice-demo-k8s-istio-kafka-344a2610eba3
[1]: "Like any other TCP traffic" might not entirely be true if you use Envoy's Kafka protocol filter, which might add new capabilities in dealing with kafka messages: https://www.envoyproxy.io/docs/envoy/latest/configuration/listeners/network_filters/kafka_broker_filter (e.g. more telemetry). But that's not required to just make it work.