Code that sleeps for a month
Blog post from Restate
The blog post explores the challenges and solutions associated with implementing durable executions in programming, particularly when dealing with long-running handlers that need to maintain state over time. It discusses the complications of versioning and updating service code when handlers are in-flight, proposing alternative strategies such as using durable messaging and state management to mitigate these issues. Restate, a framework mentioned in the post, enables the use of "handler suspension" and a "suspendable RPC abstraction" to handle tasks with significant delays without keeping the execution in-flight, thus simplifying versioning. The post also explores how control loops and virtual objects can be managed without relying on long-running handlers, suggesting that using request versioning and state accumulation through Restate's key-value database can ensure consistency and simplify maintenance. While acknowledging the convenience of long-running handlers in certain scenarios, the post advocates for shorter executions to facilitate easier versioning and updates, thereby enhancing the maintainability and scalability of programming models.