Edge Computing com Node.js: O Futuro da Performance Web que Já Chegou em 2025
Olá HaWkers, edge computing passou de conceito para realidade mainstream em 2025. Node.js em edge locations entrega latência <10ms globalmente, rodando código próximo aos usuários em 300+ locations. Isso está redefinindo o que significa "web rápida".
O Que É Edge Computing?
Edge computing roda código em servidores distribuídos globalmente, próximos aos usuários finais. Ao invés de um servidor central em us-east-1, seu código roda em São Paulo, Tokyo, Londres simultaneamente.
// Tradicional: Servidor central
const traditionalSetup = {
server: 'us-east-1 (Virginia)',
userInBrazil: {
latency: '150-250ms',
hops: 'Brasil → Miami → Virginia → Miami → Brasil'
},
userInJapan: {
latency: '200-300ms',
hops: 'Japan → California → Virginia → ...'
}
};
// Edge: Distribuído globalmente
const edgeSetup = {
locations: '300+ worldwide',
userInBrazil: {
latency: '<10ms',
server: 'São Paulo edge location'
},
userInJapan: {
latency: '<10ms',
server: 'Tokyo edge location'
}
};
// Resultado: 20-30x redução em latência!
Plataformas Edge em 2025
1. Cloudflare Workers
// Worker rodando em 300+ locations
export default {
async fetch(request) {
const url = new URL(request.url);
// Geolocation automática
const country = request.cf.country;
const city = request.cf.city;
// KV storage na edge
const cache = await EDGE_KV.get(`page:${url.pathname}`);
if (cache) {
return new Response(cache, {
headers: {
'content-type': 'text/html',
'x-edge-location': city,
'x-cache': 'HIT'
}
});
}
// Fetch de origin apenas se necessário
const response = await fetch(url);
const html = await response.text();
// Cache na edge
await EDGE_KV.put(`page:${url.pathname}`, html, {
expirationTtl: 3600
});
return new Response(html, {
headers: {
'x-edge-location': city,
'x-cache': 'MISS'
}
});
}
};
// Deploy: wrangler publish
// Resultado: <10ms latência global
2. Vercel Edge Functions
// Edge function com geolocation
export const config = {
runtime: 'edge'
};
export default async function handler(req) {
const { geo } = req;
// Personaliza conteúdo por região
const content = await getRegionalContent(geo.country);
// A/B testing na edge
const variant = Math.random() < 0.5 ? 'A' : 'B';
return new Response(
JSON.stringify({
content,
variant,
location: geo.city,
latency: '<10ms'
}),
{
headers: {
'content-type': 'application/json',
'x-edge-region': geo.country
}
}
);
}
// Deploy: vercel --prod
// Roda em Vercel Edge Network
3. Deno Deploy
// Deno Deploy - TypeScript native na edge
import { serve } from 'https://deno.land/std@0.177.0/http/server.ts';
serve(async (req) => {
const start = Date.now();
// Deno KV na edge
const kv = await Deno.openKv();
const cached = await kv.get(['cache', req.url]);
if (cached.value) {
return new Response(cached.value as string, {
headers: {
'x-cache': 'HIT',
'x-latency': `${Date.now() - start}ms`
}
});
}
const response = await processRequest(req);
await kv.set(['cache', req.url], response, {
expireIn: 3600000 // 1 hora
});
return new Response(response, {
headers: {
'x-cache': 'MISS',
'x-latency': `${Date.now() - start}ms`
}
});
});
// Deploy: deployctl deploy
// Global edge deployment
Casos de Uso Perfeitos para Edge
1. Personalização por Geolocalização
// Detecta localização e personaliza
export default async function handler(req) {
const { country, city } = req.geo;
// Moeda local
const currency = getCurrencyForCountry(country);
// Idioma preferido
const language = getLanguageForCountry(country);
// Produtos disponíveis na região
const products = await getRegionalProducts(country);
return Response.json({
currency,
language,
products,
message: `Personalizado para ${city}, ${country}`
});
}
2. A/B Testing sem Latência
// A/B test decisions na edge = zero latency
export default function handler(req) {
const userId = req.headers.get('x-user-id');
// Consistent variant per user
const variant = hashUserId(userId) % 2 === 0 ? 'A' : 'B';
// Log para analytics (async, não bloqueia)
logVariantAssignment(userId, variant);
return Response.json({
variant,
features: getFeatureFlags(variant)
});
}
3. Authentication na Edge
// JWT validation na edge
import { verify } from 'jose';
export default async function handler(req) {
const token = req.headers.get('authorization')?.split(' ')[1];
if (!token) {
return new Response('Unauthorized', { status: 401 });
}
try {
// Valida JWT na edge
const { payload } = await verify(token, SECRET);
// Adiciona user info ao request
const modifiedReq = new Request(req.url, {
headers: {
...req.headers,
'x-user-id': payload.sub,
'x-user-role': payload.role
}
});
// Forward para origin
return fetch(ORIGIN_URL, modifiedReq);
} catch {
return new Response('Invalid token', { status: 401 });
}
}
4. Image Optimization na Edge
// Resize/optimize images on-the-fly
export default async function handler(req) {
const url = new URL(req.url);
const width = url.searchParams.get('w') || '800';
const quality = url.searchParams.get('q') || '80';
// Fetch imagem original
const imageReq = await fetch(url.pathname);
const image = await imageReq.arrayBuffer();
// Resize na edge (com WebAssembly!)
const resized = await resizeImage(image, {
width: parseInt(width),
quality: parseInt(quality)
});
return new Response(resized, {
headers: {
'content-type': 'image/jpeg',
'cache-control': 'public, max-age=31536000',
'x-processed-at': 'edge'
}
});
}
Limitações e Considerações
const edgeLimitations = {
cpuTime: 'Limitado (50-100ms típico)',
memory: 'Restrito (128MB típico)',
coldStart: 'Praticamente zero, mas existe',
statefulness: 'Difícil - edge é stateless',
debugging: 'Mais complexo que tradicional',
cost: 'Pode ser maior para alto tráfego'
};
// Quando NÃO usar edge:
const avoidEdgeFor = [
'Processamento CPU intensivo',
'Aplicações stateful complexas',
'WebSocket de longa duração',
'Operações que requerem >100ms CPU'
];
Performance Real: Antes e Depois
const realWorldImpact = {
ecommerce: {
before: 'TTFB 200ms, Core Web Vitals: Poor',
after: 'TTFB 10ms, Core Web Vitals: Good',
result: '+15% conversion rate'
},
media: {
before: 'First paint 1.2s',
after: 'First paint 0.3s',
result: '+30% engagement'
},
api: {
before: 'p99 latency 500ms',
after: 'p99 latency 50ms',
result: 'Better UX, lower costs'
}
};
Edge computing com Node.js está redefinindo performance web em 2025. <10ms latência global não é mais ficção científica - é realidade disponível hoje. Se você está construindo para a web, edge deve estar no seu radar. Para mais sobre Node.js moderno, veja: Serverless em 2025: Como Node.js Domina.
Bora pra cima! 🦅
🎯 Junte-se aos Desenvolvedores que Estão Evoluindo
Edge computing é construído sobre JavaScript/Node.js. Dominar fundamentos é essencial para aproveitar essa revolução de performance.
Comece agora:
- 3x de R$34,54 no cartão
- ou R$97,90 à vista