MonKafka is a minimal, zero-dependency implementation of a basic Kafka broker. In this post, I will walk through the first steps in creating a minimalistic Kafka broker
A few weeks ago, I wrote a blog post about my modest exploration of the Kafka codebase. The code diving has been very fun, and I’ve learned a lot along the way—especially about networking and concurrency, with a Java flavor.
Alas, my newfound knowledge didn’t quite satisfy my curiosity. On the contrary, it sparked a desire to dig even deeper. Why not implement a mini Kafka broker? After all, as the famous Richard Feynman quote goes, “What I cannot create, I do not understand.” I try to console myself with this to justify the embarrassing amount of time spent on this project.
Anyway, I chose Golang because it lends itself well to concurrency and networking. I’ve also started contributing to a Go project recently, ArgoCD, and really enjoyed the simplicity and power of the language. The current state of my tiny Kafka implementation is… not the best. But for now, I decided to focus on building something very basic that works, and iterate from there. Too much overthinking leads to the infamous analysis paralysis.