Message Router Comparison to Alternatives
Work in progress
Alternatives
Kafka-Pixy
Primarily Kafka-pixy is designed to be used as a sidecar attached to a microservice - the REST API is really only for testing. Therefore it is included as an alternative only for reference.
Strimzi Bridge
Lacks Kafka admin capabilities, but these can be resolved by the use of a K8S operator. It is a CNCF incubated project. It is coupled to Kafka, and has a small code base (10KLOC Java including AMQP support and unit tests). The community is reasonably active - 20 commits in 4 months, the introduction of Kafka 3.0 will likely bring more activity.
Confluent REST Proxy
This is the most complete in functionality, although has little advantage over Strimzi if we include an operator. Once again, coupled to Kafka.
ONAP Message Router (existing code)
Obviously by definition the ONAP codebase is the most "compliant" with the requirements. However a main challenge is the lack of support for any sort of delivery guarantees. In addition there is a significant amount of technical debt in t he current codebase:
Lots of it is effectively unmaintainable due to lack of users or knowledge of the code
there are a significant number of unpublished dependencies – binaries available in Nexus, but no source code available for a subset of these components: https://mvnrepository.com/artifact/com.att.nsa
This is hindering / preventing adoption of Java 11
Tight coupling to Zookeeper
Characteristic | Kafka-Pixy | Strimzi Bridge | Confluent REST Proxy | ONAP Message Router | Remarks |
---|---|---|---|---|---|
At least once semantics | Yes | Yes | Yes | No | MAJOR requirement for stability and robustness |
Scale out without individual exposure to proxy server | No | No | No | No | |
Kafka Admin interface | No | No | Yes | Limited (can create topics) | Not an issue if we use the K8S Operator (Strimzi) |
Filters | No | No | No | Limited (JSON only) | Minor concern |
Group send / recieve | No | Yes | Yes | Limited (no partition keys) | |
Client abstraction from Kafka | Limited | No | No | Limited | |
Multiple Kafka clusters | Yes | No | No | No | |
Secure comms (front facing) | Yes | No | Yes | Yes | Not a problem if delegated to service mesh |
Authentication (front facing) | No | No | Yes | Yes | Not a problem if delegated to an API GW |
Authorization (front facing) | No | No | No (can be licensed) | Limited (depends on AAF) | Not a problem if delegated to an API GW |
Client Kafka config params | No | Yes | Yes | No | |
Transparent scale out of consumers | No | No | No | No | |
"ONAP Compliant" Interface | No | No | No | Yes (by definition) | Major issue for evolution |
Code maturity / activity | Stable, low activity in last year | High quality, actively maintained | High quality, actively maintained | Outdated codebase with significant technical issues | Major challenge for maintenance |
Secure communication (Kafka) | Yes | Yes | Yes | Yes | |
Authentication (Kafka) | Limited | Yes | Limited | Limited |