Apache Storm vs Kafka Streams
Apache Storm
storm.apache.orgKafka Streams
kafka.apache.orgSide by side
| Figure | Apache Storm | Kafka Streams |
|---|---|---|
| Price from | Free | Free |
| Free plan | Yes | Yes |
| Free trial | — | — |
| Open source | — | — |
| Web | Yes | — |
| Windows | Yes | Yes |
| macOS | Yes | Yes |
| Linux | Yes | Yes |
| API | Yes | — |
| Self-hosted | Yes | Yes |
| Plans published | 1 | 1 |
| Spec score · Stream Analytics Software | 8.1 (#9) | 7.9 (#15) |
| Spec score · Stream Processing Software | 8.1 (#9) | 7.8 (#15) |
| Deployment | Storm provides local mode for in-process development and remote mode for submitting topologies to a cluster. | Kafka Streams applications can be deployed to containers, virtual machines, bare metal, or cloud environments. |
| Integrations | Out-of-the-box integrations include Apache Kafka, HDFS, JDBC databases, JMS, and Redis. | Kafka's ecosystem includes tools for stream processing, Hadoop integration, monitoring, and deployment, and Kafka Connect provides connectors for external systems. |
| License | Apache Storm is licensed under the Apache License, Version 2.0. | Apache Software Foundation software is licensed under the Apache License 2.0. |
| Purpose | Apache Storm is a distributed realtime computation system for reliably processing unbounded data streams. | Kafka Streams is a client library for building applications and microservices whose input and output data are stored in Kafka clusters. |
| Security | Storm supports pluggable Kerberos/SASL authentication and SimpleACLAuthorizer authorization, both disabled by default. | Kafka Streams natively integrates with Kafka security features, including encryption in transit, client authentication, and client authorization. |
| Support | Users can get help through the user mailing list at [email protected]. | The Kafka project provides user, developer, JIRA, and commit mailing lists for community support and project communication. |
Plans
In their own words
Apache Storm
Apache Storm is a distributed system for computing over unbounded data streams in real time. It uses spouts, bolts, and topologies to assemble multi-stage computations, supporting realtime analytics, online machine learning, continuous computation, distributed RPC, and ETL. The project describes Storm as scalable and fault-tolerant, with guaranteed data processing, and reports a benchmark above one million tuples per second per node. Integrations include Apache Kafka, HDFS, JDBC databases, JMS, and Redis. Developers can work in local mode in-process or submit topologies to a remote cluster. Storm supports stateful processing and lists JavaScript, Python, Ruby, and C# among supported languages. It is free under Apache License, Version 2.0; source and binary distributions are available, along with Maven Central and an official Docker image. The current release is 3.1.0. Security options include Kerberos/SASL authentication, SimpleACLAuthorizer authorization, and TLS for Thrift RPC and worker messaging; authentication and authorization options are disabled by default.
Kafka Streams
Kafka Streams is a free client library for building applications and microservices that use data stored in Kafka clusters. It processes Kafka data with event-time handling, windowing, and real-time queries of application state. The Streams DSL provides operations such as mapping, filtering, joins, and aggregations, while the Processor API supports custom processors and state stores. Fault-tolerant local state supports stateful work such as windowed joins and aggregations, and the library offers exactly-once processing semantics. Applications can run on one machine or scale across multiple machines, and can be deployed in containers, virtual machines, on bare metal, or in cloud environments. Kafka Streams uses Kafka as its internal messaging layer and does not require a separate processing cluster. It supports Java and Scala and integrates with Kafka security features for encryption in transit, client authentication, and authorization. The software is licensed under Apache License 2.0. The Apache Software Foundation says it does not sell its software or provide formal or commercial support for its packages; project communication is available through community mailing lists.