RouterWorkers: A Arte da Otimização em Cloudflare Workers
No ecossistema moderno de desenvolvimento, fomos condicionados a aceitar o "inchaço" como um mal necessário. Queremos um roteador para uma API simples? Instalamos uma biblioteca que traz consigo trezentas dependências, adiciona 2MB ao nosso bundle e consome preciosos milissegundos de inicialização.
Em ambientes de Edge Computing, como o Cloudflare Workers, onde cada milissegundo de Cold Start e cada byte de memória contam, essa negligência arquitetural é um pecado capital. Foi dessa insatisfação que nasceu o RouterWorkers.
O RouterWorkers não é apenas mais um roteador. É um manifesto contra o desperdício. Com um bundle minimalista de apenas 29KB e zero dependências externas, ele foi desenhado para ser transparente. No desenvolvimento de software, a melhor biblioteca é aquela que você esquece que existe porque ela simplesmente cumpre sua função sem degradar o sistema.
Quando você usa o RouterWorkers, você não está apenas roteando requisições; você está garantindo que sua aplicação suba instantaneamente em qualquer um dos mais de 300 data centers da Cloudflare ao redor do mundo.
Início Rápido: Sem Cerimônias
A beleza da simplicidade reflete-se na implementação. Não há necessidade de configurações complexas ou boilerplate infinito.
import { RouterWorkers } from 'routerworkers';
import type { Req, Res } from 'routerworkers';
export default {
async fetch(request: Request): Promise<Response> {
const app = new RouterWorkers(request);
await app.get('/', (req: Req, res: Res) => {
res.ok({ message: 'Hello World!' });
});
return app.resolve();
}
};
O Problema do Cache Persistente
Um dos maiores desafios em arquiteturas distribuídas é a invalidação de cache. Por padrão, o cache da Cloudflare é persistente por URL. Se você faz um deploy com uma nova lógica de negócio, mas a rota /api/data está em cache, seu usuário continuará recebendo dados baseados no código antigo.
O RouterWorkers resolve isso através do Versionamento Automático por Deploy. Ao integrar-se com os metadados da Cloudflare, ele gera uma chave de cache única para cada versão do seu código.
Como funciona na prática:
// Configure o cache com o ID de versionamento automático do deploy
const config: ConfigWorker = {
cache: {
pathname: ['/data'],
maxage: '3600',
version: env.CF_VERSION_METADATA.id // Chave única por deploy!
}
};
const app = new RouterWorkers(request, config);
Com essa abordagem, cada vez que você executa um wrangler deploy, o cache anterior é invalidado de forma transparente. Você tem a velocidade máxima da Cache API sem o medo de servir dados obsoletos após uma atualização crítica.
Consistência e Segurança sem Overhead
Validação de dados é outro ponto onde o desperdício costuma reinar. Bibliotecas de validação de schema costumam ser pesadas e complexas. No RouterWorkers, incluímos um validador built-in que oferece tipagem completa (TypeScript First-class) sem sacrificar a performance.
import { validate, schemas } from 'routerworkers';
await app.post('/users',
validate({
body: {
name: { type: 'string', required: true, minLength: 3 },
email: { type: 'email', required: true }
}
}),
(req, res) => {
// req.bodyJson já está tipado e validado aqui
res.created(req.bodyJson);
}
);
O RouterWorkers não sacrifica o poder em nome da leveza. Ele oferece um conjunto completo de ferramentas para APIs modernas:
- Response Helpers: 14 métodos semânticos (
res.ok,res.created,res.unauthorized, etc) que seguem rigorosamente os padrões HTTP. - Route Groups: Organize seu código com prefixos e middlewares compartilhados sem perder a legibilidade.
- CORS Built-in: Implementação completa e segura, com modos específicos para desenvolvimento e produção.
- Middlewares Globais e por Rota: Controle total sobre o ciclo de vida da requisição.
Conclusão: Por que usar?
Se você está cansado de frameworks que tentam ser tudo para todos e acabam entregando lentidão, o RouterWorkers é para você. Ele é focado em quem entende que, na web moderna, performance é um recurso, não um bônus.
A consistência de uma API robusta, a velocidade de uma integração nativa com o cache da Cloudflare e a segurança de um sistema de tipos rigoroso — tudo isso em menos de 30KB.
O projeto é open-source e está disponível no npm. Se a eficiência é uma prioridade no seu fluxo de trabalho, convido você a testar e, quem sabe, dar aquela estrela no GitHub.
Feito com foco em performance para Cloudflare Workers.
Heleno Salgado