Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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


CharacteristicKafka-PixyStrimzi BridgeConfluent REST ProxyONAP Message RouterRemarks
At least once semanticsYesYesYesNoMAJOR requirement for stability and robustness
Scale out without individual exposure to proxy serverNoNoNoNo
Kafka Admin interfaceNoNoYesLimited (can create topics)Not an issue if we use the K8S Operator (Strimzi)
FiltersNoNoNoLimited (JSON only)Minor concern
Group send / recieveNoYesYesLimited (no partition keys)
Client abstraction from KafkaLimitedNoNoLimited
Multiple Kafka clustersYesNoNoNo
Secure comms (front facing)YesNoYesYesNot a problem if delegated to service mesh
Authentication (front facing)NoNoYesYesNot a problem if delegated to an API GW
Authorization (front facing)NoNoNo (can be licensed)Limited (depends on AAF)Not a problem if delegated to an API GW
Client Kafka config paramsNoYesYesNo
Transparent scale out of consumersNoNoNoNo
"ONAP Compliant" InterfaceNoNoNoYes (by definition)Major issue for evolution
Code maturity / activityStable, low activity in last yearHigh quality, actively maintainedHigh quality, actively maintainedOutdated codebase with significant technical issuesMajor challenge for maintenance
Secure communication (Kafka)YesYesYesYes
Authentication (Kafka)LimitedYesLimitedLimited

...