Cloudflare, Workers, D1, R2, Vectorize, edge
Como construí este site inteiro no edge da Cloudflare
Este site é uma aplicação de verdade: blog, links curados com busca semântica, formulários, painel de controle e um servidor MCP, tudo rodando no edge da Cloudflare, sem um servidor tradicional no meio.
Publicado em 2026-06-30 · Atualizado em 2026-06-30
Resumo do caso
- Problema
- Queria um portfólio que fosse também um produto real (blog, curadoria de links, busca semântica, IA) e que respondesse rápido em qualquer região, sem eu manter servidor nem pagar por máquina ociosa.
- Contexto
- Projeto pessoal tratado como laboratório do que recomendo a clientes. Cada escolha precisava se sustentar em produção, não só em demo.
- Decisão
- Rodar tudo no edge da Cloudflare: Astro em SSR sobre Workers, com D1, R2, KV, Vectorize e Workers AI como peças nativas, em vez de montar servidor e banco tradicionais.
- Resultado
- Arquitetura sem servidor para manter, resposta rápida globalmente e custo de operação baixo. O site virou a prova viva da especialidade que ofereço.
Quando decidi refazer meu site, a tentação fácil era subir um WordPress ou um Next numa VPS e seguir a vida. Mas eu queria que o próprio site respondesse uma pergunta que escuto de cliente quase toda semana: dá para rodar uma aplicação de verdade, com banco, busca e IA, sem manter servidor e sem pagar por capacidade parada? A resposta que eu defendo é sim, no edge. Então construí exatamente isso e deixei o site ser a demonstração.
O que esse site realmente faz
É comum tratar site pessoal como página estática. Este faz bem mais que isso: serve páginas de marketing prerenderizadas, um blog com conteúdo vindo de banco, uma seção de links curados com busca semântica e conexões entre conteúdos, formulários de contato e newsletter, um painel de controle com autenticação, e um servidor MCP que expõe ferramentas de leitura para agentes de IA. Cada uma dessas peças tem uma exigência diferente de latência, estado e custo, e foi isso que tornou o projeto um bom teste de arquitetura.
Por que edge, e por que Cloudflare
O Worker roda perto de quem acessa, com inicialização praticamente instantânea, então a primeira resposta já sai rápida em qualquer região. Mas o compute foi só parte da decisão. O que pesou mais foi ter banco, storage, cache, vetores e IA ali como peças nativas, acessadas por binding, sem eu subir e manter um serviço separado para cada uma. Em vez de costurar cinco provedores, eu fico dentro de um runtime só.
Cada peça no seu lugar
A maior parte das páginas é prerenderizada para HTML estático no build, e só as rotas que precisam de dados ao vivo entram em SSR sob demanda: APIs, blog, links e painel. O D1, que é SQLite no edge, guarda os posts do blog e os links curados. O R2 guarda os assets, sem custo de egress. O KV guarda as sessões de autenticação do painel. O Vectorize indexa os embeddings de posts e links, o que permite sugerir conexões semânticas entre conteúdos. O Workers AI gera esses embeddings e roda as features de IA. E há um servidor MCP no próprio Worker, além de uma ferramenta WebMCP no navegador, para que agentes consigam descobrir o que existe aqui sem precisar raspar a página.
Os trade-offs honestos
Edge tem limite, e seria desonesto vender como bala de prata. O D1 ainda é jovem e tem limites de tamanho e de escrita que pesariam numa operação de escrita intensa, então ele brilha em leitura, que é o meu caso. Debugar no edge é diferente de abrir um terminal num servidor: você depende mais de logs e observabilidade do que de anexar um profiler. O Worker tem teto de CPU por request, o que obriga a empurrar trabalho pesado para fora do caminho da resposta. Nada disso me atrapalhou aqui, mas são exatamente as perguntas que eu faço antes de recomendar esse caminho para um cliente, porque a resposta muda conforme o workload.
O que isso prova
Recomendar arquitetura é fácil no slide. O que dá peso à recomendação é estar rodando aquilo que você defende, com as cicatrizes que só aparecem em produção. Este site é esse argumento: cada escolha aqui eu já vivi de ponta a ponta, com os problemas reais que vêm junto.
Abordagem tradicional vs. edge
| Aspecto | Servidor tradicional (VPS/AWS) | Edge na Cloudflare |
|---|---|---|
| Compute | Processo sempre ligado, pago mesmo ocioso | Workers sob demanda, sem servidor para manter |
| Banco | Postgres/MySQL gerenciado, com conexão e custo fixo | D1 (SQLite no edge), próximo do request |
| Storage | S3 com custo de egress | R2 sem custo de egress |
| Busca semântica | Serviço de vetores separado para subir e manter | Vectorize nativo, acessado por binding |
| IA | Endpoint de modelo externo e chaves para gerenciar | Workers AI no mesmo runtime |
| Latência global | Uma região, lentidão para quem está longe | Resposta perto do usuário na rede da Cloudflare |
| Deploy | Pipeline e máquina para configurar | Push na branch e build automático |
Stack e ambiente
- Astro 7 (SSR) em Cloudflare Workers
- D1 (SQLite no edge) para blog e links
- R2 para assets, sem egress
- KV para sessões do painel
- Vectorize para busca semântica
- Workers AI para embeddings e IA
- Servidor MCP no edge e WebMCP no navegador
- Wrangler e deploy automático (Workers Builds)
Em uma frase
Em vez de descrever a arquitetura num slide, deixei o site ser a implementação: uma aplicação real, com banco, busca e IA, rodando inteira no edge da Cloudflare.
A prova mais difícil de falsificar de que algo funciona é estar rodando aquilo que você recomenda.