  Distributed stream processing frameworks help building scalable and reliable
applications that perform transformations and aggregations on continuous data
streams. This paper introduces ShuffleBench, a novel benchmark to evaluate the
performance of modern stream processing frameworks. In contrast to other
benchmarks, it focuses on use cases where stream processing frameworks are
mainly employed for shuffling (i.e., re-distributing) data records to perform
state-local aggregations, while the actual aggregation logic is considered as
black-box software components. ShuffleBench is inspired by requirements for
near real-time analytics of a large cloud observability platform and takes up
benchmarking metrics and methods for latency, throughput, and scalability
established in the performance engineering research community. Although
inspired by a real-world observability use case, it is highly configurable to
allow domain-independent evaluations. ShuffleBench comes as a ready-to-use
open-source software utilizing existing Kubernetes tooling and providing
implementations for four state-of-the-art frameworks. Therefore, we expect
ShuffleBench to be a valuable contribution to both industrial practitioners
building stream processing applications and researchers working on new stream
processing approaches. We complement this paper with an experimental
performance evaluation that employs ShuffleBench with various configurations on
Flink, Hazelcast, Kafka Streams, and Spark in a cloud-native environment. Our
results show that Flink achieves the highest throughput while Hazelcast
processes data streams with the lowest latency.
