Distributed Systems: Kafka & Event-Driven Design
Welcome, champion! π₯
You've mastered 0 of 180 lessons. Start your first lesson free β no signup needed.
About this course
Distributed Systems: Kafka & Event-Driven Design teaches you to design backend systems that communicate through events, and to build them on Apache Kafka with Java. The first lesson follows an OrderPlaced event that an email service and an inventory service read independently, and compares it with calling both over REST. From there the course covers the distributed-systems ideas event design depends on, such as partitions, clocks, idempotency and delivery guarantees, Kafka's architecture in KRaft mode with replication and ISR, producers with keys, acks and idempotence, consumer groups, rebalancing and offset commits, transactions and exactly-once semantics, Avro, Protobuf and Schema Registry compatibility, Kafka Streams with windowing and joins, Kafka Connect, Debezium and the outbox pattern, event sourcing, CQRS and sagas, dead-letter topics, topic design and retention, security, monitoring and testing. The course has 180 lessons and about 1200 minutes of content. Each lesson is a short narrated reading card followed by MCQ practice with an explanation for every answer.
How the lessons work
Each lesson starts from a concrete situation: a producer config, a consumer poll loop, two services sharing a group id, or a saga with one step that fails. The idea is explained against that example, then MCQ practice asks which partition a record lands in, what happens to offsets after a crash, or which design avoids a dual write, with an explanation for every answer. Code uses the Apache Kafka 4.x Java clients and Kafka Streams, and Kafka runs in KRaft mode, so you learn the current platform rather than the ZooKeeper era.
Who this course is for
Java backend developers, students and freshers who build or will build microservices, and engineers moving from REST-only designs to event-driven ones. It suits developers preparing for roles that list Kafka, event-driven architecture or distributed systems, and those who already use Kafka but want to understand rebalancing, exactly-once and schema evolution properly. For service design in Spring, Spring Boot Microservices is a good companion, and System Design: Foundations & Scaling covers wider architecture.
MCQ practice vs video courses
Kafka video courses usually start a cluster, send a few messages and read them back. Production problems are subtler: a consumer that processes a record twice after a rebalance, a key choice that sends most traffic to one partition, or a schema change that breaks every old consumer. This course gives you those situations in a few lines of config or code and asks what happens, then explains why. That builds the judgement to design a system that keeps working when parts of it fail.
Best way to learn Kafka
Run a single-node Kafka 4 cluster locally in KRaft mode and keep a small Java project with one producer and one consumer. After each lesson, change one thing, such as acks, the key, the group id or the commit strategy, and watch what changes. Answer each MCQ before reading its explanation. When you reach the event design patterns, sketch one real flow from a system you know, such as checkout or payments, as events and a saga.