Vercel Edge Functions: Jalankan Kode di 300+ Lokasi Dunia, Terdekat dengan User
Edge Functions menjalankan kode bukan di satu server terpusat, tapi di edge node terdekat dengan user. Hasilnya: latency turun drastis. Ini cara kerja, limitasi, dan kapan harus pakainya.
Muhamad Putra Aulia Hidayat
Vercel Edge Functions: Komputasi di Ujung Jaringan
Bayangkan server Anda tidak ada di satu tempat — tapi ada di mana-mana, di kota yang sama dengan user. Itulah Edge Functions.
Apa itu Edge Runtime?
Edge Functions berjalan di CDN edge nodes — Vercel punya 300+ lokasi di seluruh dunia. Ketika user di Surabaya request ke website Anda, kode akan dieksekusi di edge node terdekat, bukan di server utama di US.
Hasilnya: latency bisa turun dari 200-400ms ke 20-50ms.
Cara Aktifkan di Next.js
// app/api/location/route.ts
export const runtime = "edge" // Ini saja!
export async function GET(request: Request) {
const { searchParams } = new URL(request.url)
const name = searchParams.get("name") ?? "World"
return Response.json({
message: `Hello, ${name}!`,
// Vercel inject geo info otomatis
region: request.headers.get("x-vercel-ip-country"),
city: request.headers.get("x-vercel-ip-city"),
})
}
Use Case yang Tepat untuk Edge
1. Personalisasi Berdasarkan Lokasi
export const runtime = "edge"
export async function GET(request: Request) {
const country = request.headers.get("x-vercel-ip-country")
const city = request.headers.get("x-vercel-ip-city")
// Tampilkan konten berdasarkan lokasi user
const content = country === "ID"
? await getIndonesianContent(city)
: await getDefaultContent()
return Response.json(content)
}
2. A/B Testing
export const runtime = "edge"
export function middleware(request: NextRequest) {
const bucket = Math.random() < 0.5 ? "a" : "b"
const url = request.nextUrl.clone()
url.pathname = bucket === "a"
? "/landing-v1"
: "/landing-v2"
const response = NextResponse.rewrite(url)
response.cookies.set("ab-bucket", bucket, { maxAge: 86400 })
return response
}
3. Auth Check yang Cepat
export const runtime = "edge"
export async function middleware(request: NextRequest) {
const token = request.cookies.get("session")?.value
if (!token && request.nextUrl.pathname.startsWith("/dashboard")) {
return NextResponse.redirect(new URL("/login", request.url))
}
// Verify JWT di edge — sangat cepat
if (token) {
try {
await verifyJWT(token) // Gunakan library yang kompatibel edge
} catch {
return NextResponse.redirect(new URL("/login", request.url))
}
}
}
Limitasi Edge Runtime
Ini yang paling penting diketahui:
| Fitur | Node.js Runtime | Edge Runtime |
|---|---|---|
| Node.js built-ins | Penuh | Terbatas (tidak ada fs, path, dll) |
| npm packages | Semua | Hanya yang edge-compatible |
| Max memory | 1GB | 128MB |
| Max execution time | 5 menit | 30 detik |
| Database connections | Langsung | Harus pakai HTTP-based |
Database yang kompatibel Edge:
- Supabase (via REST atau JavaScript client)
- PlanetScale (HTTP protocol)
- Upstash Redis (HTTP-based)
- Neon (serverless driver)
- Turso (SQLite di edge)
Database yang TIDAK kompatibel Edge:
- PostgreSQL langsung (butuh TCP connection)
- MySQL langsung
- Redis TCP
Kapan Pakai Edge vs Node.js Runtime?
Pakai Edge:
- Auth middleware dan redirects
- Geo-based personalization
- A/B testing
- Simple data transformation
- Response caching
Pakai Node.js:
- Database queries kompleks
- File operations
- Library yang butuh Node.js built-ins
- Long-running processes
Edge Functions adalah tool yang powerful di tempat yang tepat — bukan pengganti server runtime biasa.
Newsletter Digital Uptime
Tips teknologi & bisnis mingguan
Bergabung dengan 2,500+ subscriber yang mendapatkan insight teknologi, tutorial development, dan tips bisnis digital langsung ke inbox mereka setiap minggu.