# Mission: Apache Kafka

## Why
Walk into a Kafka interview (or certification) able to explain *how Kafka actually
works* from first principles — not memorised trivia, but a mental model solid
enough to reason about a question I've never seen. I learn fastest when the
abstraction is pinned to code I already touch, so every concept is anchored to the
real Kafka flows in my team's services: **conversationmgmt**, **notification**
(`internal/notification`), and **spike** (`internal/spike`).

## Success looks like
- I can whiteboard the Kafka data model (topic → partition → offset) and explain
  why partitions are the unit of parallelism and ordering.
- I can explain consumer groups, rebalancing, and offset commits, and predict what
  happens when a consumer joins, dies, or falls behind.
- I can reason about delivery semantics (at-most / at-least / exactly-once) and say
  which one our services actually get, and why.
- Given one of our real topics, I can trace a message end-to-end: who produces it,
  how it's serialized, which consumer group reads it, and how failures are handled.
- I can answer the classic interview questions (replication & ISR, `acks`, keys &
  ordering, retention vs compaction, at-least-once) without hand-waving.

## Constraints
- **Starting from zero** on Kafka — lessons assume no prior Kafka knowledge.
- **Format:** interactive HTML lessons (with recall quizzes) + dense Markdown
  references I can grep in-editor. Lives in `docs/kafka/`.
- **Multi-session:** short lessons, one tangible win each. Breadth is captured in
  the roadmap ([index.html](./index.html)); depth arrives lesson by lesson.
- The codebase is Go; the Kafka client and wrappers are whatever the repo actually
  uses (see [RESOURCES.md](./RESOURCES.md) → Repo).

## Out of scope (for now)
- Kafka Streams / ksqlDB / Flink stream-processing DSLs.
- Operating/tuning production clusters (broker configs, JVM, disk sizing).
- Kafka Connect connector development.
- These are noted in the roadmap as "later" so they don't crowd the interview core.
