kinetiq
A web-assembly extensible, composable, kafka processor that supports hot-reloading
786
A web-assembly extensible, composable, kafka processor that supports hot-reloading.
Developing Kafka applications in a polyglot microservice architecture can be time consuming. You spend time building, deploying, redeploying, and application startup or rollout. Further, you wind up writing a lot of boilerplate when creating producers & consumers, processing topics, populating caches, performing windowed aggregations, and wiring up various sources and sinks outside of kafka. The boilerplate burden is multiplicative if your environment supports development in multiple languages. Further, there are some well-known integration patterns that can address a large variety of business problems (eg. routing, replicating, merging, aggregating, filtering, hydrating, projecting, etc.). While libraries can solve a lot of the issues with code duplication and boilerplate, they don't necessarily solve the the slow feedback loop problem -- because ultimately you still need to build and deploy an application. Kinetiq aims to solve the problem of message processing boilerplate and long feedback loops together so you can iterate quickly on getting the messages you want with the data you need now, not an hour from now.
The original concept for Kinetiq was to leverage a combination of a few technologies for their main benefits:
The initial use-case was being able to read a kafka topic, perform some operation on the data defined by a web assembly module, and write the result to an output topic. Further, the web assembly module artifact could be monitored for changes via filesystem notifications or cloud provider change events and dynamically reloaded when necessary to facilitate a fast deployment simply by recompiling locally or publishing a new version of the WASM module to your cloud provider.
Evaluating that simple use-case, it's easy to see how this same concept and its benefits could apply more widely to different sources/sinks, data formats, and messaging providers.
This project is very much a work-in-progress currently, but you can track the progress of a viable release on the milestones page!
Please check out issues to see what we're working on!
This project utilizes web assembly modules to support dynamic reloading of the application logic, and uses protocol buffers to communicate data between the host and plugin. Tools supporting this interaction are:
The plugin schema and compiled SDKs are available at buf.build (BSR)!
Docker images are available from Docker Hub and are available in:
linux/amd64linux/arm64Further documentation on using kinetiq is available in the wiki
Content type
Image
Digest
sha256:d626741d1…
Size
23.6 MB
Last updated
about 1 year ago
docker pull paintface07/kinetiq