stamatios
← Voltar ao feed
Trilho de trem feito de teclas de teclado atravessa montanhas, workflows escritos como código comum
Dev & Engenharia

A melhor engine de workflow é a própria linguagem de programação

resumo de ~3 min

Tese: o código já descreve o fluxo

O Workflow SDK, da Vercel, parte da ideia de que uma linguagem de programação é uma forma mais natural de expressar workflows do que um arquivo separado com tarefas e dependências. Como um workflow é um grafo acíclico dirigido, estruturas comuns de código - sequência, paralelismo, ramificações, loops e condicionais - já descrevem esse grafo. O SDK transforma TypeScript em execução durável sem exigir um novo sistema de infraestrutura.

A proposta surgiu da experiência do autor com o Temporal. Embora a ferramenta resolva a execução durável, sua operação exige configurar um servidor ou o Temporal Cloud, manter serviços de frontend, histórico, matching e workers, administrar banco de dados, filas, escalabilidade, disponibilidade, implantação e comunicação segura. Além disso, alterações no código de workflows em andamento podem causar erros de não determinismo. A solução oficial, baseada em APIs como patched() e GetVersion, exige manter ramificações de versão até que as execuções antigas desapareçam, o que pode acumular sinalizadores e tornar o código difícil de evoluir.

Como o Workflow SDK funciona

No SDK, um único arquivo contém o código normal da aplicação. A diretiva "use workflow" identifica o orquestrador, enquanto "use step" marca unidades de trabalho com efeitos colaterais. O compilador separa os bundles de workflow e de cliente ou etapa; o próprio fluxo de controle funciona como o grafo. Erros não capturados em uma etapa são repetidos automaticamente, com opções para interromper, definir uma espera personalizada ou limitar o número de tentativas.

A biblioteca também substitui os três mecanismos de interação do Temporal - sinais, consultas e atualizações - por um único primitivo, o hook. Um hook pode ser aguardado dentro de uma execução e receber dados externos. Webhooks são uma aplicação desse mecanismo: uma chamada a createWebhook() cria uma URL utilizável dentro de um workflow, que pode permanecer pausado até receber uma resposta. Assim, uma aprovação pode esperar segundos ou semanas sem exigir uma rota ou um manipulador adicional.

Infraestrutura e limites

A Vercel descreve o produto como uma biblioteca, não como uma plataforma que exige infraestrutura própria. Inspirado no DBOS, o SDK concentra a lógica no lado do cliente e pode usar a aplicação, um banco de dados e uma fila já existentes. A especificação define uma interface chamada World, responsável por armazenamento, filas, autenticação e transmissão, permitindo combinar diferentes tecnologias para cada camada. A integração com a Vercel expõe apenas dois endpoints HTTP convencionais; o Vercel Workflow Server é apresentado como uma API CRUD sem computação ou orquestração, executada como uma implantação comum.

A abordagem tem ressalvas. O versionamento por implantação funciona na Vercel porque a plataforma mantém implantações imutáveis: cada execução fica presa à cópia do código que a iniciou. O mundo oficial baseado em Postgres ainda não oferece esse roteamento de versões, embora implementações da comunidade, como a da Platformatic em Kubernetes, já sigam a especificação.

Outro desafio é o custo das etapas. Cada chamada envolve rede e fila para registrar o resultado com durabilidade, o que pode levar desenvolvedores a evitar etapas pequenas. A equipe quer que elas sejam praticamente gratuitas. A versão 5, em beta, já oferece ganho de desempenho de até 5 vezes sem alterar a API, e a versão 6 pretende avançar nessa direção e tornar mundos de terceiros igualmente rápidos. A conclusão é que o SDK já permite escrever sistemas duráveis como código comum, mas ainda está sendo desenvolvido para reduzir o custo de execução das etapas.