The Kafkaesque Nightmare of Modern Message Queues

You don't need Apache Kafka. You think you do, but you don't. The fact that you're even considering it reveals how thoroughly the enterprise software industrial complex has infected your brain.
I thought that since Kafka was a system optimized for writing, using a writer’s name would make sense. I had taken a lot of lit classes in college and liked Franz Kafka. Plus the name sounded cool for an open source project.
- Jay Kreps, Kafka: The Definitive Guide
Franz Kafka wrote about systems that claim to serve you while making your life impossible, about bureaucratic labyrinths where simple tasks become insanely complex, where systems exist to perpetuate themselves rather than serve any human purpose.
Apache Kafka delivers exactly this experience to your engineering team.
The Castle
In Kafka's novel The Castle, the protagonist K. arrives in a village to work as a land surveyor, only to discover an impenetrable bureaucracy that makes his simple job impossible. Every attempt to contact the Castle authorities spawns new intermediaries, forms, and procedures. The system has become the purpose.
Apache Kafka works the same way. You want to send messages between services. This is a fundamentally simple operation. Instead, you get:
- Zookeeper coordination (now KRaft, because bureaucracy evolves)
- Partition management across multiple brokers
- Consumer group rebalancing protocols
- Offset management strategies
- Serialization schemas that require their own governance
- Monitoring dashboards that monitor other monitoring dashboards
- A Slack channel dedicated entirely to arguing about retention policies
Your two-service application now requires a cluster of machines, specialized knowledge, a dedicated ops team, someone on-call 24/7, and an emotional support group for the on-call person. The message queue has consumed more resources than the actual business logic.
The Trial
In The Trial, Josef K. is arrested for an unspecified crime and must navigate a legal system that operates by rules no one can explain, enforced by officials who don't understand them either. Apache Kafka incidents follow this novel so closely you'd think the engineering team used it as documentation.
Your application stops processing messages. Logs show consumer lag. Consumer lag exists because partition rebalancing failed. Rebalancing failed because a broker went down. Broker went down because disk space filled up. Disk space filled up because retention policies weren't configured properly. Retention policies weren't configured because the docs assumes you understand the difference between log compaction and time-based retention, which you don't, you insolent fool, because you're trying to run a startup that sells artisanal dog treats, not defend a dissertation on distributed consensus algorithms.
Each layer of investigation reveals another system you don't understand, maintained by configuration you didn't write, following principles designed for problems you don't have.
Your actual requirement: Service A needs to tell Service B when something happened.
What Apache Kafka gives you is a distributed commit log with configurable durability guarantees, exactly-once semantics (sometimes), and throughput measured in millions of messages per second.
This is like asking for a ham sandwich and receiving a fully equipped industrial kitchen, three sous chefs, a sommelier, health department inspections, and a thesis on the cultural significance of meat between bread. The kitchen can definitely make sandwiches, along with ten thousand other meals simultaneously, but you still don't have lunch and now you need to hire a chef, a line cook, a dishwasher, and someone to explain to your investors why your sandwich budget requires venture capital.
Why Startups Choose Suffering
The absurdity isn't that Apache Kafka is complex. Complex tools exist for complex problems. It's that startups voluntarily adopt this complexity, like masochists with CS degrees.
The same engineers who rightfully reject microservices enthusiastically install infrastructure designed for Netflix-scale problems, because they think they will become Netflix-scale someday.
This happens because distributed systems carry street cred. Using Kafka signals technical sophistication. Admitting you could solve the same problem with a database queue or a simple HTTP calls signal that you're not "webscale".
Jay Kreps understood the irony perfectly. He didn't name it just because he read some books in college and liked the author. It was a warning. Enterprise middleware has always been a bureaucratic nightmare. Apache Kafka democratizes open source access to this one specific nightmare, licensed under Apache V2.
The Alternative
You don't need Apache Kafka. You need:
- A database with a jobs table
- A cron job or background worker
- Maybe Redis if you're feeling cute
This handles 99% of message queue use cases without requiring distributed systems expertise, operational complexity, or middleware that generates more monitoring data than your actual application.
Franz Kafka's protagonists never escape their bureaucratic hellholes because the systems they're trapped in serve the bureaucracy, not the people. Apache Kafka serves large-scale distributed systems at billion dollar megacorps, not your 10-person startup burning VC money on matcha lattes and AWS bills in an overpriced WeWork.
Choose accordingly.