Eventuate
We built Eventuate, a toolkit for building applications with event-driven and event-sourced services. Eventuate enables services to communicate through causally ordered event streams, supporting both co-located and globally distributed architectures. It supports stateful service replication with causal consistency and allows continuous availability during network partitions.
Eventuate is built on top of Akka and offers Java and Scala APIs for creating highly concurrent, distributed, and resilient applications on the JVM. The toolkit provides abstractions for stateful event-sourced services, persistent and in-memory query databases, and event processing pipelines. It enables reliable, partition-tolerant communication between services, supports stateful service replication with conflict resolution, and includes implementations of operation-based CRDTs. Eventuate also facilitates the development of always-on applications, supports reliable business process implementation, and offers adapters for third-party stream processing frameworks.
Eventuate has been successfully deployed in production across multiple global datacenters and allowed us to develop a globally distributed data management layer for digital asset management system of the Red Bull Media House. Using Eventuate we implemented an inter-datacenter replication mechanism that ensured causal consistency and supported the convergence of application state under concurrent updates, enabling low-latency and partition-tolerant access to local datacenters worldwide.