Let us design a Durable Promise SDK in Rust
As part of the work on Denote.dev, we recently started implementing an SDK for a Durable Execution framework called Restate.
Restate is a platform for building resilient applications. As of this writing, it provides SDKs in TypeScript and Java.
SDKs in other languages are in development.
But as Denote.dev is implemented in Rust (for the core parts), we needed an
SDK in Rust.
This is a series of blogs, videos, and, content relating to open-sourcing this effort.
The ultimate goal is to contribute to the Restate organization and coordinate with
the developers and make it an officially supported SDK if possible.
It's potentially going to be a long series of posts.
An ideal audience is Software Engineers/Developers with knowledge of Rust(Async) and Durable Execution concepts.
But, if time permits, we will try to make it more approachable to others as well.
The series below is dynamic and ongoing and will be adjusted as we proceed.
- [ ] What is Denote.dev?
- [ ] What is Restate?
- [ ] Durable Execution and distributed and resilient application concepts
- [ ] Rust concepts primer for Durable Execution.
- [ ] Environment and development setup
- [ ] Restate concepts overview
- [ ] Durable Promise design
- [ ] Restate SDK and Protocol Overview
- [ ] Restate Rust SDK API design
- [ ] Restate Rust SDK Handlers and Discovery
- [ ] Restate Rust SDK Procedural Macros
- [ ] Contexts, contexts, and more contexts
- [ ] Implementation basics and crates
- [ ] Design and implementation of the state machine
- [ ] Design and implementation of replay logger
- [ ] Design and implementation of SDK metrics and tracing
- [ ] Service
- [ ] State
- [ ] VirtualObject
- [ ] Workflow
- [ ] Examples
- [ ] More later on...
Hop on for a technical educational journey...
The source code will be published here https://github.com/denote-dev/restate-sdk-rust.
Note: This is an unofficial and experimental effort for now.