Log in to leave a comment
No posts yet
Ao lidar com funções serverless, você acaba batendo no muro dos limites de tempo de execução. O Vercel Workflows resolve esse problema transformando funções assíncronas em processos que mantêm o estado. A chave aqui é remover elementos incertos, como gravações em banco de dados ou funções aleatórias, de dentro da função orquestradora. Todos os efeitos colaterais devem ser obrigatoriamente encapsulados em blocos step.run para evitar que o sistema se perca.
Declare use workflow na função que controla toda a lógica e gerencie apenas o fluxo. Defina as chamadas de API reais ou operações de DB como etapas independentes. Ao passar para a próxima etapa, selecione apenas os dados necessários para economizar nos custos de armazenamento de logs. Estruturando dessa forma, mesmo que uma tarefa falhe no meio do caminho, não é necessário recomeçar do zero. Basta retomar do ponto onde parou.
Em sistemas distribuídos, falhas de rede podem fazer com que a mesma etapa seja executada duas vezes. Em um sistema de pagamento, isso seria um desastre. O Vercel Workflows fornece um stepId exclusivo para cada etapa. Ao integrar com Toss Payments ou Stripe, usar esse ID como chave de idempotência pode prevenir acidentes de pagamentos duplicados.
Implemente no código um padrão que verifique se o registro já foi processado antes de gravar os dados. Atribua o ID extraído com getStepMetadata() ao cabeçalho da requisição do serviço externo. Projete o sistema para retornar imediatamente caso a transação já tenha sido processada. Apenas com essa estrutura bem definida, você reduz chamadas de API desnecessárias e economiza mais de 20% nos custos de infraestrutura.
As funções serverless da Vercel geralmente desligam após 1 a 15 minutos. No entanto, com o uso de step.sleep, tarefas agendadas que levam dias tornam-se viáveis. Quando essa função é executada, o estado do workflow é registrado no armazenamento e a função é encerrada imediatamente. Não há custos de computação durante a espera.
Por exemplo, se você precisar enviar um e-mail de pesquisa 3 dias após a conclusão do pagamento, uma linha com await step.sleep('3 days') é suficiente. Como não há necessidade de gerenciar um crontab ou agendador separado, o tempo de operação é reduzido em cerca de 2 horas por semana. O custo de manter um servidor rodando 24 horas também desaparece.
O ciclo repetitivo de implantar e corrigir drena a velocidade de desenvolvimento. Utilizando os recursos da Vercel CLI, você pode testar localmente sem precisar subir para a nuvem. Se precisar receber webhooks externos, utilize ferramentas como o ngrok para expor seu localhost para o exterior.
Ao rodar vercel dev e registrar a URL gerada pelo ngrok nas configurações de webhook da Stripe, seu código local receberá eventos externos em tempo real. Validar cenários de falha antes do deploy pode dobrar a velocidade de desenvolvimento. Isso também reduz o tempo gasto com erros de configuração de variáveis de ambiente.
Se ocorrerem reiterações infinitas devido a limites de taxa de API ou falhas temporárias de rede, você terá uma explosão de custos. É necessário diferenciar a resposta conforme a natureza do erro. Erros permanentes, como falha de autenticação, devem ser interrompidos imediatamente, enquanto problemas temporários, como instabilidades de rede, devem ser tentados novamente após algum tempo.
Aplique a fórmula de exponential backoff para aumentar gradualmente o intervalo de reiteração:
Limite o número máximo de tentativas configurando maxRetries: 3 na função step.run. Com o sistema se recuperando automaticamente, a disponibilidade do serviço aumenta e as cobranças por loops infinitos são bloqueadas preventivamente.
O Vercel Workflows oferece 50.000 etapas de execução incluídas no plano Pro. Caso exceda, a taxa é de aproximadamente $2.50 por 100.000 etapas. O custo de armazenamento para esperas de longo prazo é muito baixo, custando $0.00069 por GB-Hour.
| Categoria | Cota incluída Hobby/Pro | Taxa excedente |
|---|---|---|
| Workflow Steps | 50.000 etapas | $2.50 por 100.000 etapas |
| Workflow Storage | 720 GB-Hours | $0.00069 por GB-Hour |
| Serverless Function | 1.000 GB-Hours | $0.60 por GB-Hour |
Comparado ao esforço de construir e gerenciar uma fila de mensagens complexa por conta própria, é esmagadoramente mais econômico. Combinando garantia de idempotência e exponential backoff corretamente, é possível obter confiabilidade de nível de produção sem o fardo do gerenciamento de infraestrutura. Para um desenvolvedor solo que deseja focar apenas na lógica de negócios, não há escolha mais racional que esta.