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

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