Technology Radar
Restate is a durable execution platform for building stateful, fault-tolerant applications. Because it journals every step of execution, a service that fails resumes where it left off. Restate also guarantees exactly-once communication between services. An application combines Basic Services for stateless functions, Virtual Objects for concurrent stateful entities and Workflows for multi-step processes.
When we last wrote about Restate, we were assessing it on a large insurance system. It's now a core part of that system, automating an entire insurance business process. The team relies on its state recovery and concurrency control and hasn't had to write its own recovery code. That experience is why we're moving it to Trial. Restate suits long-running processes that wait on a human in the loop or retry many times against legacy systems. It fills the same role as Temporal, which also moves to Trial in this edition. The SDKs are MIT licensed, but the server uses the Business Source License, which rules out offering it to third parties as a managed service.
Restate is a durable execution platform designed to address complex distributed system challenges when building stateful, fault-tolerant applications. It logs every step via execution journaling, ensuring fault-tolerance, reliable recovery and exactly-once communication across services. The platform’s key architectural advantage lies in separating application logic into three durable service types: Basic Services for stateless functions; Virtual Objects to model concurrent, stateful entities; and Workflows to orchestrate complex, multi-step processes. We’ve been carefully assessing Restate in a large insurance system and are quite happy with its performance so far.
Restate is a durable execution platform, similar to Temporal, developed by the original creators of Apache Flink. Feature-wise it offers workflows as code, stateful event processing, the saga pattern and durable state machines. Written in Rust and deployed as a single binary, it uses a distributed log to record events, implemented using a virtual consensus algorithm based on Flexible Paxos; this ensures durability in the event of node failure. SDKs are available for the usual suspects: Java, Go, Rust and TypeScript. We still maintain that it's best to avoid distributed transactions in distributed systems, because of both the additional complexity and the inevitable additional operational overhead involved. However, this platform is worth assessing if you can’t avoid distributed transactions in your environment.