The Kafka Default
Kafka became the default event streaming choice because it solved LinkedIn's scale problems in 2011. Most teams adopting it today have neither LinkedIn's scale nor LinkedIn's engineering depth. The operational cost of running Kafka — ZooKeeper/ KRaft complexity, partition rebalancing, consumer group management — is substantial even before you factor in the learning curve.
When Alternatives Make Sense
RabbitMQ remains the right choice for request-response patterns and simpler event routing. NATS fits teams that need low-latency messaging without the operational overhead. For log aggregation specifically, Fluent Bit + object storage often beats a full Kafka deployment. The key is matching the tool to the actual problem, not the hypothetical scale you might reach in three years.
Making the Choice
The evaluation criteria that matter are: operational overhead (who will run this at 3am), team familiarity, and whether your throughput requirements actually justify a distributed system. Most teams discover they don't.