Fluxo de trabalho de cadência O motor foi desenvolvido na Uber e aberto sob licença MIT. A diferença entre a Cadence e a maioria dos motores de fluxo de trabalho existentes é que ele é focado no desenvolvedor e é extremamente flexível e escalável (a dezenas de milhares de atualizações por segundo e até bilhões de fluxos de trabalho abertos.) Os fluxos de trabalho são escritos como programas orientados a objetos e o motor garante que o estado dos objetos de fluxo de trabalho, incluindo pilhas de rosca e variáveis locais é totalmente preservado em caso de falhas do host. Cadence é usado para praticamente qualquer aplicativo de backend que vive além de uma única resposta de solicitação. Exemplos de uso são: Distributed CRON trabalhos Gerenciamento de pipelines ML/Data Reagir a eventos empresariais. Por exemplo, eventos de viagem na Uber. O fluxo de trabalho pode acumular estado com base em eventos recebidos e executar atividades quando necessário. Implementação de serviços para Mesos/ Kubernetes Implementação da tubulação CI Garantir que várias chamadas de serviço completas quando uma solicitação é recebida. Incluindo a implementação do padrão SAGA Gerenciando tarefas do trabalhador humano (semelhante a Amazon MTurk) Processamento de mídia Suporte ao cliente Processamento de pedidos Serviço de teste semelhante ao ChaosMonkey e muitos outros O outro conjunto de casos de uso é baseado na portagem de motores de fluxo de trabalho existentes para ser executado na Cadence. Praticamente qualquer linguagem de especificação de fluxo de trabalho do motor existente pode ser portada para ser executado na Cadence. Existem vários sistemas internos da Uber que foram portados. Desta forma, um único serviço de backend pode alimentar vários sistemas de fluxo de trabalho específicos de domínio.