A durable workflow is a multi-step process whose progress is saved as it runs, so the process can resume from where it stopped after a crash, restart, or long wait instead of starting over. Cadence, an open-source, code-driven workflow orchestration platform created at Uber, is one implementation of this idea. Its official documentation illustrates the model with a food-delivery example drawn from Uber Eats. This article explains the model, walks through that example, and separates what Cadence’s sources establish from assumptions about how Uber runs its own systems.
What Cadence is
Cadence is an open-source workflow orchestration platform. Developers write workflow logic in ordinary code, and the Cadence service stores a record of what happened so that the logic can be recovered if the machine running it fails. Uber announced Cadence 1.0 on June 22, 2023, in an Uber Engineering post titled “Announcing Cadence 1.0: The Powerful Workflow Platform Built for Scale and Reliability.” The project’s own documentation describes the platform as a way to orchestrate work that spans many steps and many services, and it lists the Uber Eats order flow as its main worked example.
As an Amazon Associate I earn from qualifying purchases.
What a durable workflow means
Most business processes are not a single function call. A customer order, for instance, involves several steps that depend on each other, may take minutes or days, and touches systems that sometimes fail. A typical hand-built approach uses queues, database rows that record status, scheduled jobs that poll for changes, and custom retry code. Each team ends up writing its own answers to questions like “what happens if the process dies between step three and step four?”
Durable execution changes where those answers live. Cadence’s documentation describes the engine as persisting the event history of each workflow execution. When a worker process crashes or is replaced, a new worker can read that history and reconstruct the workflow’s state by replaying it. The business logic does not need to remember where it was, because the recorded history already says so.
#1 Best Overall
The Uber Eats example
The documented example describes a customer order as a process with related stages. According to the Go package documentation for go.uber.org/cadence, the flow covers:
- order placement and acceptance;
- cart processing;
- food preparation and delivery coordination;
- delivery scheduling;
- payments.
Read it as an illustration of the model, not as a description of Uber’s production architecture. The package documentation does not say which stage maps to which service, queue, or database, and it does not describe Uber’s internal deployment or service boundaries. The example shows why the stages belong in one coordinated process: each one depends on the outcome of the previous one, and some must wait for events that arrive later, such as a restaurant accepting an order.
Workflows and activities
Cadence separates the coordinating logic from the work itself. The official “Workflow Engine and Workflow Orchestration” documentation, last updated September 23, 2026, distinguishes the two roles, which are summarized below.
The Tool Desk
Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Rank #2
| Element | Role | What it contains | What happens if it is interrupted |
|---|---|---|---|
| Workflow | Coordinates the process: decides which step runs next, waits for timers or signals, and branches on results | Orchestration code only | Its state is rebuilt from the persisted event history |
| Activity | Performs one business operation, such as charging a payment method or sending a notification | Code that touches external systems | The operation is the unit that is retried or completed asynchronously, and the workflow waits for its result |
Because replay re-runs workflow code to rebuild state, that code must make the same decisions every time it runs. Side effects such as sending an email or charging a card belong in activities, which run once per attempt and report their results back to the history.
How a workflow recovers after a worker crashes
The recovery sequence the documentation describes follows these steps:
- The service has persisted every decision and activity result as events in the workflow’s history.
- The worker running the workflow stops, for example because its host restarts.
- Another worker picks up the next workflow task for that execution.
- The new worker replays the recorded history to rebuild the workflow’s in-memory state, without repeating completed activities.
- Execution continues from the first step that has no recorded result.
The practical consequence is that the developer’s code does not contain a separate recovery path for each failure point. The trade-off is the replay constraint described above: workflow code has to be written with replay in mind.
Timers, signals, and waiting without polling
Many business processes spend most of their time waiting. A delivery may be scheduled for a later window, or a payment may depend on an external confirmation. Cadence’s documented features include durable timers, signals that deliver external events into a running workflow, child workflows for breaking large processes into parts, and asynchronous activity completion, where an activity finishes outside the worker that started it.
Quick wins for a faster PC:
Clear out junk files and repair common Windows errorsFree Scan →Scan for outdated or missing drivers - takes under a minuteDriver Scan →These features let a workflow wait without a continuously running process or a hand-built polling loop that checks a database every few seconds. The wait is recorded in the event history, so it survives restarts. The documentation describes these capabilities as available features; it does not state that every Uber workflow uses each of them.
The 40% figure and the authoring argument
The Cadence 1.0 announcement reports that an internal 2021 Uber survey found teams wrote 40% less code to implement the same functionality with Cadence. The phrasing in the post is “40% less code to implement the same functionality.” Uber attributes the figure to its own survey. The inspected announcement does not give the survey’s sample size or method, so it should be read as Uber’s reported result rather than an independent measurement.
Rank #4
The announcement’s author, Ender Demirkaya, explains the design reasoning behind that result:
“However, simplicity should be on the workflow writing side instead of the orchestration; simply because the orchestration engine is built once, while a unique workflow needs to be written for each use case.”
Free tools Windows power users keep installed
One-click scans. No signup required.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
The argument is about where complexity should sit. The engine is written once and reused everywhere, so the cost of making it reliable is shared. Each workflow is different, so the cost of writing it is paid repeatedly, and the design aims to keep that part simple.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Comparing approaches
The sources for this article do not compare Cadence with other workflow systems, cloud-provider workflow services, message queues, or low-code business-process tools, and they contain no benchmark that does. Readers evaluating those options can use the following questions as a checklist. They are comparison axes, not a sourced verdict on any product:
- Authoring model: Is the process written in general-purpose code, or in a domain-specific language or configuration file?
- Ownership of state and retries: Does the platform persist and replay state, or does each application store its own status and retry logic?
- Long waits: How are timers and external events handled, and do they survive restarts?
- Visibility and recovery: What can operators see about a running execution, and how is a stuck or failed execution resumed?
- Operational responsibility: Who runs the cluster and its persistence layer? Cadence’s documentation says partners offer managed deployments, but the sources do not name or assess any provider.
- Language and runtime fit: Which languages have supported client libraries, and does the team already operate in them?
What the evidence does and does not establish
- Cadence’s origin at Uber, the Cadence 1.0 date, and the Uber Eats example are established by Uber’s announcement and the Go package documentation.
- The description of persisted history, replay, and separation of workflows from activities comes from the official Cadence documentation, last updated September 23, 2026.
- The Cadence project’s “Vision & Goals” page, last updated August 28, 2026, states that Cadence joined the Cloud Native Computing Foundation as a Sandbox project in 2025. That is the project’s own status statement; check the current CNCF listing before citing it as a fixed fact, since project status can change.
- No independently published comparative benchmark of Cadence’s productivity or performance was found in the sources used for this article.
For a team evaluating durable workflows, the most useful next step is to model one of its own multi-step processes using the workflow and activity split above and check which failure cases the platform handles and which remain the team’s responsibility.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.




