1.0
Cadence Workflow Engine was developed at Uber and open sourced under MIT license. The difference between Cadence and the majority of the existing workflow engines is that it is developer focused and is extremely flexible and scalable (to tens of thousands updates per second and up to billions of open workflows). The workflows are written as object oriented programs and the engine ensures that the state of the workflow objects including thread stacks and local variables is fully preserved in case of host failures. Cadence is used for practically any backend application that lives beyond a single request reply. Examples of usage are: Distributed CRON jobs Managing ML/Data pipelines Reacting to business events. For example trip events at Uber. The workflow can accumulate state based on events received and execute activities when necessary. Services Deployment to Mesos/ Kubernetes CI Pipeline implementation Ensuring that multiple service calls complete when a request is received. Including SAGA pattern implementation Managing human worker tasks (similar to Amazon MTurk) Media processing Customer Support Ticket Routing Order processing Testing service similar to ChaosMonkey and many others The other set of use cases is based on porting existing workflow engines to run on Cadence. Practically any existing engine workflow specification language can be ported to run on Cadence. There are multiple internal Uber systems that were ported. This way a single backend service can power multiple domain specific workflow systems.