Building Self-driving Kafka clusters using open source components
slack.engineering
slack.engineering
I’ve been writing software for a living for more than two decades, and Kafka is the most horrible, impossible-to-grasp boat anchor I’ve ever had to deal with.
I hate every minute of my working day that I have to deal with Kafka Streams’s hissy fits.
Kafka itself is straightforward to grasp, Kafka Streams, yep, your concerns sound familiar.
You may be mistaking it for kSQL, or ksqlDB as they call it now, which is a Confluent project built on top of Kafka Streams.
Obvious bias: I work for Redpanda
You're welcome to use it yourself and not pay us a dime. We're a business so we need to monetize but our core is to build a better Kafka. The nice thing is that if you've already invested in building against Kafka but you're exhausted by running Kafka, ours works better and faster. (Again, I'm biased so don't trust me, verify.)
By default, NATS offers non durable messages and different delivery options. I believe you could get durable messages, but last time I read up on this, it required running extra features or infrastructure to support this.
No additional infrastructure, just enable it on the nodes you want persistence on and create a stream. Publishers don't even have to change, consumers have a great api with lots of options
One would need some sort of policy about how developers use the Producer and Consumer API's for these things, but that would be a very difficult thing to manage and enforce I would think.
They made it way harder than it needs to be.