Apache Kafka is the dominant platform for building event-driven architectures — durable, high-throughput message streaming used for everything from application event logs to real-time data pipelines connecting multiple systems. Self-hosting it on dedicated servers requires understanding its specific resource profile.
What Kafka Actually Needs
- Fast, reliable storage: Kafka writes every message to disk for durability — storage throughput directly affects overall system throughput; NVMe is strongly recommended for production workloads.
- Network bandwidth: as messages flow between producers, brokers and consumers, network capacity often becomes the practical bottleneck at real scale before CPU or storage does.
- RAM for page cache: Kafka relies heavily on the operating system's page cache for read performance, benefiting significantly from generous available memory.
- Adequate CPU: generally less demanding than storage and network for typical workloads, though compression and certain configurations add CPU overhead.
Cluster Sizing Basics
Production Kafka deployments typically run as a multi-broker cluster (three or more nodes) for both throughput distribution and fault tolerance, with topic partitions replicated across brokers so that a single node failure does not cause data loss or an outage. Single-node Kafka is reasonable for development and testing, not production.
Common Deployment Mistakes
- Underprovisioning disk I/O capacity, creating a bottleneck that throttles the entire pipeline regardless of other resources.
- Running a single broker in production, creating an unnecessary single point of failure.
- Insufficient network bandwidth planning for the actual message throughput required.
- Not monitoring consumer lag, a critical metric indicating whether downstream systems are keeping pace with the event stream.
Zookeeper vs KRaft
Kafka historically depended on Zookeeper for cluster coordination; newer Kafka versions support KRaft mode, removing the separate Zookeeper dependency and simplifying the overall deployment architecture — worth using KRaft for new deployments where the Kafka version supports it, reducing operational complexity.
Frequently Asked Questions
Is Kafka overkill for a small application?
Often yes — Kafka's operational complexity is justified by genuine event-streaming scale and durability requirements; simpler message queue solutions may suffice for smaller needs.
How much storage does Kafka actually need?
Depends heavily on message volume, retention period configuration, and replication factor — plan capacity based on realistic throughput and retention requirements, with meaningful growth headroom.
Building event-streaming infrastructure? See our dedicated server plans or ask our team for a cluster sizing recommendation.