Durable execution
Infrastructure operations cross process, network, and provider boundaries. A conventional request handler can lose its progress when any of those boundaries fail. Praxis uses Restate so execution history and resource state outlive an individual service process.
Journaled side effects
Section titled “Journaled side effects”Provider calls run inside restate.Run() callbacks. Restate journals the callback result. When a handler replays after a failure, completed journal entries are reused instead of blindly restarting the entire handler from the beginning.
This is why error classification happens inside the callback. A transient AWS failure must reach Restate as retryable. A terminal provider response must be marked terminal before Restate decides what to do next.
Per-resource serialization
Section titled “Per-resource serialization”Each resource instance is a Virtual Object key. Exclusive lifecycle handlers for one key execute serially, which prevents overlapping provision, delete, and reconcile mutations without an external lock service.
Durable timers
Section titled “Durable timers”Drivers schedule future reconciliation with durable timers. A process restart does not erase the next check. No separate cron service or controller work queue is required.
Durable does not mean magical
Section titled “Durable does not mean magical”AWS APIs have their own idempotency and consistency behavior. Praxis drivers still need stable client tokens, careful read-after-write handling, correct provider identifiers, and explicit error classification. Restate preserves workflow progress; the driver remains responsible for using each AWS API safely.