stamatios
← Voltar ao feed
Robô operário minúsculo monta código dentro de nuvem, metáfora dos Dynamic Workers da Cloudflare
Dev & Engenharia

Dynamic Workers da Cloudflare permitem apps programáveis por usuários

resumo de ~3 min

O que são Dynamic Workers

A Cloudflare lançou Dynamic Workers, um primitivo mais leve que Workers for Platforms. O marketing oficial focou em agentes de IA e no modo code, que permite a um agente LLM executar código arbitrário em sandboxes efêmeras. Jeremy Morrell, porém, destaca outro uso: tornar aplicações web programáveis pelo usuário final.

Dynamic Workers permitem criar um novo Worker com uma única chamada. São baratos, iniciam rápido e oferecem isolamento de segurança adequado para executar código arbitrário. Milhões de instâncias podem ser criadas conforme a necessidade.

Diferenças em relação a eval

Embora pareçam equivalentes a eval, os Dynamic Workers resolvem problemas fundamentais: código eval'd compartilha a mesma thread de execução (um loop infinito derruba o servidor), compartilha memória com o código principal, tem acesso ao escopo local e à rede. Dynamic Workers herdam anos de endurecimento da infraestrutura Cloudflare Workers.

Arquitetura de exemplo: scraper programável

Morrell demonstra um aplicativo de scraping onde o usuário fornece uma função transform que recebe o conteúdo de uma página e retorna markdown ou JSON. Um harness envolve o código do usuário e controla o que ele pode fazer.

Limites e controle de capacidade

É possível desabilitar fetch inteiramente (globalOutbound: null) e impor limites de CPU (ex.: 50ms). O autor explora o conceito de capacidades (OCaps): em vez de expor fetch diretamente, o sistema parseia URLs da página solicitada e fornece objetos ResourceCapability ao usuário, permitindo navegação apenas dentro do que a plataforma controla.

Observabilidade

Logs do usuário são capturados via tail workers, sem alterar o código do usuário. Para tracing, como o Automatic Tracing ainda não suporta spans em tail workers, o autor instrumenta manualmente cada operação de I/O com uma função traceIO que mede duração e captura erros.

WebAssembly

Dynamic Workers suportam wasm nativamente via V8. Exemplos incluem processamento de imagens com @cf-wasm/photon e extração de texto de PDFs com liteparse.

Armazenamento com Durable Object facets

Cada Dynamic Worker pode ter seu próprio banco SQLite isolado via facets de Durable Objects. O supervisor controla o DO principal e cada facet recebe um banco separado. É possível impor limites de tamanho (o autor usa 128 KiB) revertendo transações que excedam a cota. O estado persiste entre invocações, mas fica escopado ao navegador e ao script.

Conclusão

Morrell argumenta que nem todo app precisa de um editor de código embutido, mas que estamos no início do que o software web pode ser agora que LLMs conseguem gerar funcionalidades sob demanda. Com pontos de extensão bem projetados, é possível deixar usuários personalizarem aplicações com segurança.