That said, anyone trying to build something new where Kafka might make sense should probably be considering NATS as an alternative - particularly with micro services in mind.
There’s obviously no single solution, it won’t make sense for all use cases, but NATS is far more lightweight, very simple to configure and deploy, has very few dependencies and offers incredibly low latency. NATS with Jetstream also closes the gap even further.
Kafka still wins for very large data pipelines (hundreds of terabytes or petabytes), complex stream processing, or very long retention requirements for messaging.
If you’re mostly streaming messaging between micro-services though (or if you’re currently doing a lot with MQTT) NATS is very likely the better move.
This is a very solid article.
That said, anyone trying to build something new where Kafka might make sense should probably be considering NATS as an alternative - particularly with micro services in mind.
Why NATS over Kafka?
There’s obviously no single solution, it won’t make sense for all use cases, but NATS is far more lightweight, very simple to configure and deploy, has very few dependencies and offers incredibly low latency. NATS with Jetstream also closes the gap even further.
Kafka still wins for very large data pipelines (hundreds of terabytes or petabytes), complex stream processing, or very long retention requirements for messaging.
If you’re mostly streaming messaging between micro-services though (or if you’re currently doing a lot with MQTT) NATS is very likely the better move.
(It’s cool shit)
https://docs.nats.io/
Here is the Jepsen article about Nats: https://jepsen.io/analyses/nats-2.12.1
Nice article. Thank you.