Overview

Cadence is a task orchestrator for your application’s tasks. Applications using Cadence can execute a logical flow of tasks (especially long-running business logic) asynchronously or synchronously, and can scale runtime on distributed systems without you, the service owner, worrying about infrastructure needs.

A quick example illustrates its use case. Consider Uber Eats where Cadence manages the entire business flow from placing an order, accepting it, handling shopping cart processes (adding, updating, and calculating cart items), entering the order in a pipeline (for preparing food and coordinating delivery), to scheduling delivery as well as handling payments.

Cadence consists of a programming framework (or client library) and a managed service (or backend). The framework enables developers to author and coordinate tasks in familiar languages (Go and Java are supported today with some projects in Python and C# via proxy in development).

Watch Maxim’s talk from the Uber Open Summit for an introduction to the Cadence programming model and value proposition.

The GitHub repo for the Cadence server is uber/cadence. The docker image for the Cadence server is available on Docker Hub at ubercadence/server.