Solving durable execution’s immutability problem
Blog post from Restate
In recent years, the rise of durable execution tools has offered the potential for computers to recover from failures by replaying tasks from a persistent store, but challenges remain, particularly with safe code updates. Updating code in a durable execution environment can cause issues if in-flight requests encounter changes, leading to failures due to mismatched journals and code. Several platforms have developed strategies to address this: Azure Durable Functions uses a dual-deployment strategy to keep in-flight requests on their original code version, Temporal employs worker versioning and a patch API to manage changes, and AWS Step Functions achieve immutability through versioned workflow definitions. Restate aims to combine the best of these approaches by leveraging immutable Lambda functions and integrating version abstraction, allowing in-flight requests to continue on their original code while new requests use updated versions. However, managing long-lived handlers with security and infrastructure updates remains problematic, prompting future exploration into why such extended code executions are necessary.