justinmclean commented on code in PR #127: URL: https://github.com/apache/iggy-website/pull/127#discussion_r4150655610
########## content/blog/apache-iggy-or-apache-kafka.mdx: ########## @@ -0,0 +1,47 @@ +--- +title: "Apache Iggy or Apache Kafka: which problems each one is actually for" +description: Where Apache Iggy fits against Apache Kafka, when to reach for each one, and what to expect if you already run Kafka. +author: Justin Mclean +tags: ["kafka", "comparison", "architecture"] +date: 2026-09-23 +--- + +The question I get asked most about Iggy is whether it replaces Kafka. For some things it does and for plenty of others it doesn't, so the useful part is knowing which is which. + +## What each one is built for + +Kafka is built for scale, and for everything that has grown up around it. The broker runs on the JVM and stores each topic as a partitioned append-only log, replicated to a set of in-sync replicas. KRaft replaced ZooKeeper in 4.0, so a quorum of brokers holds metadata rather than a separate service. Share groups went production-ready in 4.2, so it provides queue semantics as well as log semantics. But what you're really choosing is the ecosystem: Connect, Streams, Schema Registry, every CDC tool and every observability vendor already speak Kafka. + +Iggy handles the same streaming work, with lower tail latency and less to run. It's written in Rust and runs thread-per-core on io_uring, with nothing shared between cores, so each partition is owned by a single CPU-pinned shard. It speaks its own binary protocol over TCP, QUIC and WebSocket, with a REST API alongside. Running it means one binary and one config file, with no JVM and nothing else to install. There are SDKs for Rust, Python, Go, Java, C#, Node, C++ and PHP, and it has consumer groups and stores consumer offsets on the server, so consumers work much as they do in Kafka. It's younger than Kafka by a decade, and the current release is 0.9.0. + +## Reach for Iggy when + +**Operational weight is your main cost.** You're running a single node or a small deployment, and you don't want to operate a JVM cluster: tuning heap and GC, planning partition counts up front, running a rebalancer. Iggy is one binary and one TOML file, with the CLI, Prometheus metrics and OpenTelemetry traces built in. If you want the Web UI, that's a separate app with its own Docker image. Review Comment: Done. It now says "a single node or a small cluster", and adds that a cluster is the same binary with every node loading the same TOML file. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
