Cloudflare Workers, servidores Node e FastAPI: como escolher
Escolher um runtime de backend não é uma disputa de popularidade entre linguagens. Um endpoint na borda, um serviço Node de longa duração e uma API Python podem servir HTTP, mas oferecem responsabilidades de implantação, ecossistemas, modelos de recursos e modos de falha diferentes. A pergunta útil é quais restrições sua carga de trabalho realmente tem.
Publicado em 5 de outubro de 202614 min de leituraAderência, limites e operação
Comece pelo formato da requisição e do trabalho
Direcione a escolha segundo carga e operação
Requisição global e curta?Considere execução na borda, cache próximo e estado externo.
Serviço persistente ou ecossistema Node?Escolha processos gerenciados ou próprios com escala explícita.
Ecossistema de dados e ML em Python?Use FastAPI em contêiner ou computação gerenciada.
Dimensão
Cloudflare Workers
Servidor Node.js
Serviço FastAPI
Modelo de execução
Manipuladores de eventos e requisições em runtime baseado em isolates
Processo JavaScript de longa duração, muitas vezes em contêiner
Aplicação ASGI servida por servidor ASGI, normalmente em contêiner
Boa aderência
Roteamento de borda, APIs leves, webhooks e lógica próxima do cache
APIs persistentes, pacotes Node, WebSockets e controle de processo
APIs Python, dados, automação e bibliotecas do ecossistema Python
Trabalho operacional
Plataforma opera boa parte da frota; você cuida de bindings, limites e dados
Configurar saúde, réplicas, reinícios, runtime e capacidade
Configurar workers, inicialização, memória, HTTPS e capacidade
Atenção especial
CPU, memória, compatibilidade e limites da plataforma
Bloqueio do event loop, crescimento de memória e topologia
Quantidade de processos, trabalho bloqueante e fronteiras async
Estado e tarefas longas
Armazenamento, filas ou coordenação explícitos da plataforma
Bancos e workers externos; memória do processo não é durável
Bancos e filas externos; processo da API não substitui fila de jobs
Workers: aproxime a requisição das pessoas
Um runtime de borda pode reduzir distância para autorização, roteamento, cache e transformações pequenas. É atraente quando o código depende sobretudo de I/O de rede e consegue acessar os serviços compatíveis. Isso não torna toda dependência compatível com a borda nem elimina limites. Confira CPU, memória, corpo da requisição e subrequests atuais contra a carga real; computação pesada e tarefas longas pertencem a sistemas preparados para isso.
Node: controle o ciclo de vida de um serviço convencional
Um servidor Node oferece um modelo familiar de processo e um ecossistema amplo. Funciona bem quando a aplicação precisa de conexão persistente, dependência nativa, tarefa longa ou ambiente controlado. A liberdade traz responsabilidades: verificações de saúde, supervisão, rollout, capacidade, logs e proteção contra callbacks que bloqueiam o event loop. Sintaxe assíncrona não torna trabalho síncrono ou computacionalmente caro gratuito.
FastAPI: trate Python como runtime de API
FastAPI oferece validação e tipagem Python em torno de uma aplicação ASGI. Faz sentido quando a API está próxima de código de dados, automação ou machine learning. Ainda é preciso escolher servidor ASGI, terminação HTTPS, reinícios, réplicas, memória e dependências. Inferência pesada pode precisar de workers separados ou serviço com acelerador, em vez de ocupar processos de requisição.
Compare o custo do sistema, não só da hospedagem
Inclua horas de engenharia, inicialização, observabilidade, dependência do fornecedor, conexões de saída, proximidade do banco, rollback e eventual camada de filas. Um runtime barato pode sair caro se cada requisição atravessa regiões ou se bibliotecas incompatíveis exigem reescrita. Meça latências p50/p95, recursos e esforço operacional em uma carga representativa antes de migrar.
Uma fronteira híbrida pode ser sensata: roteamento e autenticação na borda, lógica de domínio ou computação em serviço regional Node ou FastAPI. Mantenha contratos claros, propague contexto de rastreamento e limite retries. Evite dividir uma aplicação pequena em três runtimes apenas porque estão disponíveis.
Regra de decisão
Escolha Workers quando proximidade da borda e execução curta orientada a eventos forem vantagens concretas. Prefira Node quando serviço persistente e ecossistema JavaScript combinarem com o problema. Prefira FastAPI quando bibliotecas Python e fluência da equipe simplificarem o domínio. Reavalie quando medidas mudarem, não quando outro framework virar tendência.
Essas opções não são apenas rótulos de hospedagem intercambiáveis. Compare execução, limites, bibliotecas, estado e responsabilidades com a carga real. O runtime certo tem restrições que sua arquitetura consegue enxergar e operar.