Kf

Event Streaming

·View all resources →

Kafka Learning Roadmap

Apache Kafka is the world's most popular event streaming platform — the backbone of real-time data pipelines at LinkedIn, Uber, Netflix, Airbnb, and thousands of enterprises. Kafka decouples services, enables event-driven architectures, and handles millions of messages per second. Not a beginner skill, but a high-leverage one: Kafka knowledge is a significant salary differentiator in backend and data engineering roles.

Total time

3–5 months

Stages

5 stages

Job-ready at

Stage 3

Career paths

2 paths

1
2
3
4
5

Before you start — Prerequisites

✓

Backend development experience

Kafka is a distributed system — you need to understand services, APIs, and databases before adding event streaming.

✓

Basic understanding of messaging concepts

Queues, topics, publish/subscribe — these concepts underpin Kafka's model.

✓
Linux and command-line comfort

Kafka's tooling (kafka-topics.sh, kafka-console-producer.sh) is CLI-based.

✓
Docker basics

Kafka is almost always run in Docker locally — Compose with Kafka + Zookeeper/KRaft is the standard setup.

1

Stage 1: Kafka Concepts

Topics, partitions, and the log

1–2 weeks

Topics to cover

Event streaming vs message queuingTopics, partitions, and offsetsBrokers and the Kafka clusterProducers and consumersConsumer groups and partition assignmentMessage retention and the commit log modelReplication factor and leader/followerZooKeeper vs KRaft modeRun Kafka with Docker Composekafka-topics.sh, kafka-console-producer/consumer

Bold = especially important

Milestone

You can explain Kafka's core concepts (topics, partitions, consumer groups, offsets) and run a local Kafka cluster in Docker.

Project to build

First producer/consumer

Docker Compose with Kafka, create a topic via CLI, write a producer that sends 100 messages, write a consumer that reads and prints them — confirm offset behavior.

2

Stage 2: Producers & Consumers in Code

Real application integration

2–3 weeks

Topics to cover

Kafka client library (kafkajs, confluent-kafka-python, kafka-go)Producer: send with key, value, headersDelivery guarantees: acks=all, retries, idempotenceConsumer: poll loop, manual commitOffset management: auto-commit vs manual commitMessage serialization: JSON vs AvroConsumer group rebalancingPartition key selection for ordering guaranteesBatch producing for throughputDead letter topics for failed messages

Bold = especially important

Milestone

You write producers and consumers in your preferred language, understand delivery guarantees, and handle failures with manual commits.

Project to build

Order event pipeline

E-commerce order service produces OrderPlaced events, inventory consumer reads and decrements stock, manual offset commit, dead letter topic for invalid orders.

3

Stage 3: Schema Registry & Kafka Connect

✓ Min. Job Ready

Data contracts and connectors

2–3 weeks

Topics to cover

Confluent Schema Registry: Avro schema evolutionSchema compatibility: backward, forward, fullKafka Connect: source and sink connectorsJDBC Source Connector: database → KafkaElasticsearch Sink Connector: Kafka → ElasticsearchS3 Sink Connector: Kafka → data lakeDebezium CDC: change data capture from databasesSingle Message Transforms (SMTs)Connector monitoring and failure handlingMirrorMaker 2 for cross-cluster replication

Bold = especially important

Milestone

You set up Debezium CDC to stream database changes into Kafka and use the Schema Registry to enforce Avro contracts.

Project to build

CDC pipeline

Debezium captures inserts/updates from PostgreSQL orders table → Kafka topic with Avro schema → consumer syncs to a read model. Schema Registry enforces contract.

4

Stage 4: Kafka Streams & ksqlDB

Stream processing and real-time analytics

2–3 weeks

Topics to cover

Kafka Streams topology: source, processor, sinkKStream vs KTableStateless operations: map, filter, flatMapStateful operations: groupBy, count, aggregateWindowing: tumbling, hopping, session windowsStream-table join and table-table joinksqlDB: SQL on Kafka streamsState stores: in-memory and RocksDBInteractive queries on state storesKafka Streams vs Apache Flink comparison

Bold = especially important

Milestone

You build a Kafka Streams application that aggregates events in real time — counting, windowed sums, and enriching streams.

Project to build

Real-time fraud detector

Kafka Streams: count failed login attempts per user in a 5-minute tumbling window, emit FraudAlert event when threshold exceeded, persist state in RocksDB.

5

Stage 5: Production Kafka

Operations, monitoring, and security

2–3 weeks

Topics to cover

Kafka on Kubernetes with Strimzi operatorAmazon MSK: managed Kafka on AWSConfluent Cloud: fully managed KafkaJMX metrics with Prometheus + GrafanaConsumer lag monitoring with Burrow or kafka-lag-exporterTLS encryption for broker communicationSASL authentication (PLAIN, SCRAM)ACL authorization per topic and consumer groupCapacity planning: partitions, throughput, diskKafka upgrade strategies (rolling restart)

Bold = especially important

Milestone

You deploy Kafka to Kubernetes with Strimzi, monitor consumer lag, and secure the cluster with TLS and SASL authentication.

Project to build

Production Kafka cluster

Strimzi on Kubernetes, TLS + SASL auth, consumer lag dashboard in Grafana, alerting on lag > 10k messages, topic retention policies configured.

Career paths that use Kafka

Frequently asked questions

What is Kafka and when should I use it?

Kafka is a distributed event streaming platform — a durable log of ordered messages that multiple consumers can read independently. Use Kafka when: (1) you need to decouple microservices with events, (2) you need to process data in real time (analytics, fraud detection), (3) you need an audit log, or (4) you need to fan out events to multiple consumers. Don't use Kafka for simple request-response communication — REST or gRPC is better there.

Kafka vs RabbitMQ — which should I use?

RabbitMQ for traditional message queuing — task queues, work distribution, simple pub/sub. Messages are consumed and deleted. Kafka for event streaming — messages are retained as a durable log, multiple consumer groups can read independently, and you can replay historical events. Kafka is more complex but more powerful. Most modern architectures at scale use Kafka; RabbitMQ is fine for simpler messaging needs.

What is a consumer group?

A consumer group is a set of consumer instances that coordinate to consume a topic. Each partition in a topic is assigned to exactly one consumer in the group — this enables parallel processing. Multiple consumer groups can consume the same topic independently, each getting their own copy of every message. This is Kafka's key advantage over traditional queues: one topic can serve multiple independent services simultaneously.

What does Kafka guarantee about message delivery?

By default, Kafka guarantees at-least-once delivery — messages won't be lost, but might be delivered twice if a consumer crashes after processing but before committing. Enable idempotent producers (enable.idempotence=true) and use exactly-once semantics (transactions) for at-most-once guarantees. For most use cases, at-least-once with idempotent consumers (checking if you've processed a message ID before) is the right approach.

What is Kafka Streams and when should I use it?

Kafka Streams is a Java library for building real-time streaming applications on top of Kafka — filtering, transforming, aggregating, and joining streams without a separate cluster (unlike Spark or Flink). Use it when you need stateful stream processing (windowed aggregations, joins) and you're already in the Java/JVM ecosystem. For Python or Node.js streaming, use Faust or the Kafka Streams REST Proxy.

Ready to start learning?

Browse our curated Kafka resources — every course, book, and video ranked by quality.

View Kafka Resources →