Stephan Ewen
stephanewen.bsky.social
Stephan Ewen
@stephanewen.bsky.social
Building distributed systems and data infra.
Previously co-creator of Apache Flink (https://flink.apache.org/),
now building Restate (https://restate.dev/) to make distributed apps more easily resilient and scalable.
That is a good part of the motivation why we created Restate.
We built Apache Flink before and even tried to use it for transactional use cases.

Restate is the transactional event-processing twin to stream processing. With an API that looks like durable functions/execution/state/rpc.
April 7, 2025 at 2:05 PM
To visualize the state machine across services, you could export OTEL traces and use a tool like Jaeger to get the dependency diagram.

Future versions of the UI will have a timeline view, showing when what step was executed. That is not a state machine, but still helpful.

Is any of that helpful?
April 7, 2025 at 1:53 PM
To develop with a State Machine, you can use XState with Restate.
See here for details: e.g., using it with XState. Is that
restate.dev/blog/persist...
👇
Persistent serverless state machines with XState and Restate
Run state machines in the cloud, and suspend them when there's no work to do.
restate.dev
April 7, 2025 at 1:51 PM
True, not having an explicit state machine is a pity, but also somewhat a feature: It works with implicit state machines and dynamic control flow, e.g, as a backend for AI Agents.

But there are ways to get state machines: 👇
April 7, 2025 at 1:49 PM
Thank you so much for the kind words!
March 12, 2025 at 11:30 PM
Reposted by Stephan Ewen
It’s really impressive! I almost went down the path of building a stateful functions implementation in Rust but discovered how much scaffolding was required to be useful. Really happy to see you all have put those pieces together with Restate!
January 27, 2025 at 1:38 PM
It has been quite a journey from Stateful Functions to Restate - and while Restate can do a lot more, the Stateful Functions roots are quite visible, specifically in the Virtual Objects Api.
January 27, 2025 at 1:21 PM
Thank you so much for the kind words!
January 27, 2025 at 1:20 PM
Reposted by Stephan Ewen
Restate is much simpler than Flink, however, grasping what it does isn't straight forward given how differently it works. This tutorial is fantastic and worth the time:
A Gentle Introduction To Restate
YouTube video by Ahmed Farghal
www.youtube.com
January 26, 2025 at 8:49 PM
But I would agree that BookKeeper is an underrated piece and a hidden gem of distributed systems design.
January 25, 2025 at 1:02 PM
One reason why Restate mentions Delos frequently is because our lead runtime architect worked with Delos before and adopted the vocabulary. Plus Restate internally has the heterogeneous loglet chain abstraction.
January 25, 2025 at 1:01 PM
Totally - I learned a ton from the BookKeeper design and your blog posts and there is a lot of similarity to Delos. We discussed this a lot internally.
January 25, 2025 at 1:01 PM
That is exactly right - what would be a better term? There is some simplification of the coordination happening here, because it centralizes it - like updating the state under a lock.
January 25, 2025 at 12:54 PM
That's a fair comment - maybe the better way to phrase this is replacing different forms of coordination with multiple independent systems, with one type of coordination, which can be also pretty transparently abstracted in the application, so you keep coordination out of your code.
Would that work?
January 25, 2025 at 12:50 PM
I guess the headline is brief - I would phrase it as every system is a log and and interpreter of events stored in the log (in the broadest sense).
January 25, 2025 at 12:45 PM
Maybe the biggest one is the per-key granularity in Restate, and what is conceptually conditional appends (only append if no newer retry subsumed event handler).

This can be built on top of the log (in Restate its above the physical log partition layer), but more efficient if tightly integrated.
January 24, 2025 at 7:57 PM
I have this slide from a presentation at Kafka Summit / Current about that.
January 24, 2025 at 7:53 PM