  Developing state-machine replication protocols for practical use is a complex
and labor-intensive process because of the myriad of essential tasks (e.g.,
deployment, communication, recovery) that need to be taken into account in an
implementation. In this paper, we show how this problem can be addressed with
stream-based replication, a novel approach that implements a replication
protocol as application on top of a data-stream processing framework. With such
framework already handling most essential tasks and furthermore providing means
for debugging and monitoring, this technique has the key benefit of
significantly minimizing overhead for both programmers as well as system
operators. Our first stream-based protocol Tara tolerates crashes and comprises
full-fledged mechanisms for request handling, checkpointing, and view changes.
Still, Tara's prototype implementation, which is based on Twitter's Heron
framework, consists of fewer than 1,500 lines of application-level code.
