This episode covers the journey of event streaming from traditional messaging to the birth of Apache Kafka at LinkedIn in 2011. You will also learn about the problems Kafka solves, its comparison with RabbitMQ, Kinesis, and Pulsar, and the main use cases of event streaming.

Before writing code, you need to know why Kafka exists. Every technology is born from a real problem, and Kafka was born from LinkedIn's data pipeline problem in the late 2000s: how to connect dozens of systems that produce and consume real-time data without creating a central bottleneck.
This episode 1 will help you understand the evolution of event streaming, the problems Kafka solves, how Kafka differs from traditional message brokers, and the use cases that make Kafka so dominant. Understand this context, because all the architectural decisions in the following episodes rest on this understanding.
We'll also compare Kafka with RabbitMQ, Amazon Kinesis, Apache Pulsar, and Redis Streams. This comparison matters so you know when to choose Kafka and when another technology is a better fit.
The messaging world began with brokers like JMS and ActiveMQ moving messages one by one between applications. This model works for point-to-point communication, but it wasn't designed to process high-speed data streams at scale. A single broker becomes a bottleneck when message volume surges.
Event streaming changes the paradigm: data is treated as a stream of events that is permanently recorded, replayable, and processable by many consumers in parallel. Instead of "send and forget" messages, every event is stored in an ordered, durable log.
In 2008, LinkedIn faced a complicated data pipeline challenge: systems had to send user activity to many downstream systems for analytics, search indexing, and recommendations. Their solution was a simple pub/sub system, but it couldn't handle the continuously growing volume and variety of data.
Jay Kreps, Neha Narkhede, and Jun Rao built Kafka to replace that fragile pipeline. The name was inspired by the author Franz Kafka, because the platform is "optimized for writing" — like a prolific novelist. Kafka became open-source at Apache in 2011 and left the incubator in 2012.
In 2014, Kafka's creators founded Confluent to build an ecosystem around Kafka: Kafka Connect, Kafka Streams, ksqlDB, and Schema Registry. Later, KRaft mode removed the dependency on ZooKeeper, and tiered storage opened up cheap long-term storage possibilities. This paradigm is now called event streaming.
Before Kafka, data pipelines ran in batch (for example every night) and couldn't keep up with real-time needs like fraud detection or monitoring. Kafka lets data flow from source to destination in milliseconds, while also absorbing volume spikes through horizontal scaling: add a broker, add capacity.
Enterprise systems use many databases with different formats. Kafka becomes the integration hub: one data source writes once, many systems read. What sets Kafka apart from a plain queue is the replay capability — because events are stored in a log, new consumers can re-read the entire history, or existing consumers can re-read from a specific offset.
With a durable log, Kafka becomes the natural foundation for event sourcing (storing all changes as events) and CQRS (separating read and write operations). Combined with stream processing — analyzing and transforming data as it flows — Kafka enables architectures that would be impossible with traditional relational databases.
RabbitMQ is a classic AMQP-based message broker that excels at smart broker, dumb consumer: the broker strictly manages routing and ACKs. Kafka, by contrast, is dumb broker, smart consumer: consumers manage their own offsets, so throughput is much higher and the log can be replayed. For task queues that need complex routing, RabbitMQ is a better fit; for high-throughput streaming and replay, Kafka wins.
Kinesis is a managed streaming service on AWS that uses the concept of shards, similar to partitions. Kinesis is easier to operate because it's fully managed, but Kafka offers portability across cloud/on-premise, lower cost at high volume, and a much richer tooling ecosystem.
Pulsar separates storage and compute with a native layered storage architecture and supports finer-grained multi-tenancy — a good fit for companies that need strict tenancy isolation. Redis Streams is a data structure in Redis for small to medium-scale streaming; it's fast and simple, but doesn't offer cross-cluster replication and long-term retention like Kafka does.
Tip
A simple selection guide: need durability, replay, high throughput, and a stream processing ecosystem? Choose Kafka. Need a task queue with complex routing and per-message handling? Choose RabbitMQ. Need managed streaming without ops overhead? Consider a managed Kafka.
Here are the most common production patterns for Kafka:
producer -> [Kafka cluster] -> consumer 1 (analytics)
-> consumer 2 (search index)
-> consumer 3 (data lake)Each consumer reads the same log from its own offset, so a single stream of events can serve many workloads at once — this is the core of Kafka's power. Also note that every Kafka tool relies on the --bootstrap-server flag to find the cluster, a pattern you'll encounter in nearly every command throughout this series.
You don't need to install anything yet, but seeing Kafka run helps visualize all the concepts above. The fastest way is to use the official Apache Kafka image in single-node KRaft mode:
docker run --rm -p 9092:9092 apache/kafka:3.7.1The docker run apache/kafka:3.7.1 command starts one broker that is also a controller, with no ZooKeeper. Wait until the log shows started (kafka.server.KafkaRaftServer), then open a second terminal and verify that the broker responds to clients:
bin/kafka-broker-api-versions.sh --bootstrap-server localhost:9092The output shows the list of protocol versions the broker supports along with their minimum versions. This small tool confirms the big point of this episode: Kafka is a living system — a single process can immediately accept writes from many applications, and its entire tooling ecosystem revolves around one uniform way of connecting since Kafka 2.x.
If docker run apache/kafka:3.7.1 feels heavy for your machine, that's fine — in episode 3 we'll cover full binary installation along with multi-broker cluster configuration. For now, just make sure you understand why Kafka is designed this way, because every subsequent architectural decision stands on that understanding.
In this episode 1 you've understood Kafka's historical context and problem statement: from LinkedIn's fragile data pipeline, the birth of Kafka in 2011, to the evolution of its ecosystem into an event streaming platform. You also know how Kafka compares to RabbitMQ, Kinesis, Pulsar, and Redis Streams, plus the main use cases behind almost every real-world deployment.
The key takeaways:
In the next episode 2 we'll dissect the basic concepts and architecture of Apache Kafka — the structure of events, topics and partitions, producers and consumers, brokers and clusters, offsets and consumer groups, the distributed commit log model, and the role of the controller broker. Make sure you've absorbed this historical context, because we'll build the conceptual foundation in detail next!