Kafka and Event-Driven Architecture
The Kafka internals that matter, delivery semantics and reliable event-driven design.
This program is planned and not scheduled yet. No date, price or cohort has been announced. If you register interest, we contact you when it is scheduled or to discuss an individual format.
Objective
The program aims not just at using Kafka but at understanding its behaviour well enough to build a reliable event-driven system. Ordering, delivery semantics, idempotent consumption, the transactional outbox and schema evolution are learned through realistic failures. Operations and monitoring are treated as part of the design.
Who it's for
- Backend developers already familiar with Spring Boot and messaging
- Senior candidates who take part in designing event-based systems
- People hitting duplicates, loss and lag in an existing Kafka setup
- Engineers who must connect microservices asynchronously
Who it's not for
- Anyone meeting messaging for the first time: strengthen Spring Boot and service fundamentals first
- Anyone who wants Kafka cluster administration as their main craft
- Anyone planning to use Kafka where a simple queue would do: the program questions that choice as well
Prerequisites
- Experience writing services with Spring Boot
- Understanding of transactions and database consistency
- Setting up a local environment with Docker
- General knowledge of microservices or asynchronous communication
What you will be able to do
What you will be able to do
- Explain how topics, partitions and replication affect ordering and throughput
- Preserve ordering through key choice
- Predict consumer group, offset commit and rebalancing behaviour
- Distinguish the real meaning of at-most-once, at-least-once and exactly-once semantics
- Write a consumer that tolerates duplicates (idempotent)
- Keep a database and Kafka consistent with a transactional outbox
- Change an event schema in a backward-compatible way with a Schema Registry
- Set up monitoring and alerting on consumer lag and other metrics
No education program can guarantee employment or a promotion.
Curriculum
Curriculum
- 01
The Kafka model
Understanding what a log-based model gives and what it does not.
- Topics, partitions, segments and the log model
- Replication, leaders and the ISR
- Retention and log compaction
- Producer batching, acks and latency
- How Kafka differs from a queue
Hands-on lab: Create a topic on a local cluster and observe how partition and retention settings change behaviour.
- 02
Ordering and partitioning
Ordering holds only within a partition; we turn that fact into a design decision.
- Message keys and the partitioner
- Hot partitions and skewed distribution
- Choosing a partition count, and the consequences of increasing it later
- How ordering breaks (retries, multiple producers)
- Choosing the key from the domain
Hands-on lab: Choose a key that preserves the order of events for one customer and reproduce a case where order is broken.
- 03
Consumer groups and rebalancing
How consumers share partitions, and what that can cause.
- Consumer groups and partition assignment
- Offset commit strategies
- Rebalance types and cooperative rebalancing
- max.poll.interval and the slow-consumer problem
- Consumer lag and the limit of parallelism
Hands-on lab: Slow a consumer down to trigger a rebalance storm, find the cause in logs and metrics and fix it.
- 04
Delivery semantics and idempotent consumption
Duplicates are unavoidable; we learn to write consumers that tolerate them.
- At-most-once, at-least-once, exactly-once
- Idempotent producers and Kafka transactions
- Consumer-side idempotency: unique keys and deduplication
- Retry topics and dead letter topics
- Handling a poison message
Hands-on lab: Write a consumer that receives the same message twice and prove with a test that the effect is not applied twice.
- 05
The transactional outbox
Removing the inconsistency between writing to the database and publishing an event.
- The dual-write problem
- The outbox table and a polling publisher
- A CDC-based approach (the Debezium concept)
- Outbox cleanup and ordering
- The inbox pattern
Hands-on lab: Build an outbox in an order service and show that an event is not lost when the service crashes and that duplicates are handled.
- 06
Event modelling and schema evolution
Events are long-lived contracts; we learn to change them without breaking consumers.
- Event versus command versus state transfer
- Naming and shaping events
- Avro/Protobuf and a Schema Registry
- Backward and forward compatibility rules
- Versioning and living with old events
Hands-on lab: Add and remove a field in an existing event schema and observe which change the compatibility check rejects.
- 07
Choreography and orchestration
Comparing two ways to coordinate a multi-step business flow with events.
- Choreography: benefits and hidden coupling
- Orchestration: central control and its cost
- Visibility of the flow and debugging
- Compensation and timeout handling
Hands-on lab: Build the same business flow with both approaches and compare how easy each is to trace and to change.
- 08
Operations and monitoring
Deciding what must be watched to run a Kafka-based system reliably.
- Consumer lag and alerting
- Broker and topic metrics
- Capacity planning and the cost of retention
- Replay: reprocessing events
- Security basics: authentication and ACLs
Hands-on lab: Set up a dashboard and alert rule for consumer lag and verify them with a scenario that creates lag.
Practice assignments
- Key choice and an ordering test
- A diagnosis report on a rebalance problem
- An idempotent consumer with a duplicate test
- An outbox implementation
- A schema change with a compatibility check
Portfolio deliverables
- An event-driven sample system with an outbox and idempotent consumers
- A test suite covering duplicate and crash scenarios
- An event catalogue and schema evolution rules document
- A consumer lag dashboard and a runbook
How learning is assessed
- Defense of the event design
- Mentor code review
- A written analysis of a failure scenario
- A decision record on choosing choreography or orchestration
Tools and technologies
- Apache Kafka
- Spring for Apache Kafka
- Schema Registry
- Avro or Protobuf
- PostgreSQL
- Debezium (conceptual)
- Docker Compose
- Testcontainers
- Prometheus and Grafana
Level progression
- Before
- Before: Microservices and Distributed Systems, or experience with multi-service systems.
- After
- After: System Design.
- Length and format
- Length and format are not set yet; the program is planned and not scheduled.
Frequently asked questions
Frequently asked questions
Is this program available now?
No. It is planned and not scheduled yet. No dates or prices have been announced. You can register interest or request a consultation.
Do I need Kafka experience beforehand?
No. A general idea of messaging and Spring Boot experience are enough; the Kafka model is explained in the first module.
Is exactly-once really possible?
Under certain conditions within Kafka, yes, but not across the whole chain with external systems. The program explains its limits and the practical alternative, idempotent consumption.
Is there a certificate or a job promise?
No. No certificate or outcome is promised. Evaluation takes the form of design defenses and mentor feedback and is a recommendation only.
Articles related to this program
- Distributed systemsFailure handling in distributed systems
- Event-driven architectureEvent-driven architecture trade-offs
- Distributed systemsIdempotency patterns for safe retries
- Event-driven architectureDelivery semantics, idempotent consumers and the outbox pattern
- KafkaKafka fundamentals for backend engineers