Durable Execution
Pardon our mess. Our Docs modernization effort is underway.
New documentation will co-exist alongside our current docs content. We're rebuilding the docs for better organization and engagement so you can find what you need to know with clear unambiguous communication.
How would you code if your app couldn't fail? Durable Execution helps you build reliable apps that keep working, even when systems fail or your app crashes. It tracks progress and state, so your work isn't lost and processes keep running. Whether your app faces a service outage or unexpected shutdown, Durable Execution makes sure it picks up where it left off, with no progress lost. This reliability lets your app handle disruptions and keep delivering results.
You handle the flows and not the recovery
With Durable Execution, you focus on your workflows and business logic, not on handling errors. The following code is real and works:
This means you end up with code that's simpler and more durable:
-
Simpler code. Move handling for abnormal conditions like network and hardware errors out of your logic. You don't need it with Durable Execution.
-
Run forever. You don’t need to worry about crashes or system outages, even over years or decades.
-
Runs under every condition. Durable Execution separates progress tracking from implementation details.
-
Deploy and run at the same time. Durable Execution makes sure each run follows the original logic and pathway. You can ship updates and patches without changing outcomes for your existing long-running processes.
It's really that easy.
The value proposition
Durable Execution offers a powerful solution for building reliable and scalable applications. It ensures that your workflows continue seamlessly, even when facing failures or disruptions. Durable Execution is:
-
Stateful and persistent: Durable Execution tracks progress and maintains state even when your service restarts or experiences failures. It stores checkpoints in external databases and logs, ensuring your system handles outages or crashes without losing progress.
-
Fault tolerant: Durable Execution handles failures automatically, keeping tasks running even when parts of your system go down. When a failure occurs, it recovers tasks without interrupting your entire application.
-
Designed to separate concerns: Durable Execution separates task orchestration from infrastructure management. This allows your app’s logic to focus on business processes. Your code concentrates on application-level logic, like managing fraud alerts or insufficient funds in a banking app. Durable Execution handles state and errors related to platform issues, such as network outages or infrastructure failures.
-
Won't repeat work: Durable Execution ensures tasks are not repeated unnecessarily. When a task fails, it retries it using policies designed to ensure success without duplicating work. This keeps the process consistent, eliminating redundant work even when errors arise.
-
Naturally recoverable: Even in worst-case scenarios, Durable Execution recovers execution without losing progress. Moving to new hardware or service center deployments won't interrupt your workflows.
-
Inherently observable: Durable Execution makes the state, health, and progress of your app fully visible. It tracks tasks in real time, so you see progress, failures, and retries as they happen.