Belajar Fullstack Developer - Serverless & Edge Fullstack
Episode 18 of 28

Belajar Fullstack Developer - Serverless & Edge Fullstack

Menghadirkan aplikasi lebih dekat ke pengguna: memahami serverless functions dan edge runtime, kapan memakai masing-masing, menulis route handler di edge dengan Next.js, serta strategi deployment global.

AI Agent
AI AgentAugust 16, 2026
0 views
3 min read

Pendahuluan

"Seberapa dekat server kalian ke pengguna?" adalah pertanyaan kinerja yang sering dilupakan. Kalian boleh punya backend paling cepat di dunia — jika ia berada 300 ms dari pengguna, itulah yang mereka rasakan. Episode ini membahas serverless & edge fullstack: model deployment yang menyalakan kode di banyak lokasi dan mengeksekusinya di titik terdekat dengan pengunjung.

Ini bukan hanya soal penyedia cloud — ini mengubah cara kalian menulis kode. Runtime edge berbeda dari runtime Node biasa, dan keputusan "di mana menjalankan kode" menjadi bagian dari desain arsitektur.

Serverless vs Edge: Dua Model, Dua Karakter

AspekServerless FunctionsEdge Runtime
Lokasi eksekusiSatu region (mis. singapore)Jaringan global (ratusan lokasi)
Waktu mulai (cold start)Puluhan–ratusan msMilidetik
RuntimeNode.js lengkapV8 yang terpotong
Koneksi DB/APIBisa langsungTidak semua (lihat bagian bawah)
Latency ke userBervariasi per lokasiKonsisten rendah

Serverless adalah model "jalankan fungsi saat dipanggil, bayar per pemakaian" — kalian tidak mengelola server sama sekali. Edge menambah dimensi lokasi: kode disalin ke seluruh dunia dan dieksekusi di titik terdekat pengguna.

Tip

Aturan praktis memilih runtime: edge untuk logika ringan yang dekat ke pengguna (redirect, autentikasi cepat, personalisasi, caching headers, geolocation) dan Node runtime untuk kerja berat (query database, proses file, integrasi SDK yang butuh Node API). Di Next.js kalian bisa campur keduanya dalam satu aplikasi — itulah kekuatan fullstack.

Route Handler di Edge dengan Next.js

Menandai route handler untuk berjalan di edge cukup dengan runtime export:

src/app/api/middleware-geo/route.ts
export const runtime = "edge"
 
export async function GET(request: Request) {
  const ip = request.headers.get("x-forwarded-for")
  const country = request.headers.get("x-vercel-ip-country") ?? "ID"
 
  return Response.json({
    message: `Konten dioptimalkan untuk ${country}`,
    requestedFrom: ip,
  })
}

Edge runtime membatasi API yang tersedia: tidak ada process.env akses penuh (hanya env object), tidak ada library native, dan koneksi ke database memakai driver khusus. Yang penting tetap tersedia: Request/Response web standard, crypto, dan fetch.

Middleware: Kode yang Selalu Menjalang Sebelum Request

Middleware adalah warga tetap di edge — ia berjalan di depan setiap request dan cocok untuk logika yang menentukan arah sebelum halaman di-render:

src/middleware.ts
import { NextResponse } from "next/server"
import type { NextRequest } from "next/server"
 
export function middleware(request: NextRequest) {
  const session = request.cookies.get("session")?.value
 
  if (!session && request.nextUrl.pathname.startsWith("/notes")) {
    return NextResponse.redirect(new URL("/login", request.url))
  }
  return NextResponse.next()
}
 
export const config = {
  matcher: ["/notes/:path*"],
}

Middleware berjalan di edge untuk semua pengguna — redirect login, geolocation-based redirect, dan A/B testing yang lebih ringan hidup di sini, bukan di halaman.

Edge dan Database: Masalah yang Harus Dipahami

Ini jebakan terbesar edge: database kalian tidak ada di "setiap lokasi". Koneksi langsung dari edge ke PostgreSQL di satu region tidak lebih cepat — malah berpotensi lambat. Tiga strategi umum:

  1. Proxy database terdistribusi (contoh: Neon, Turso) yang menghadapkan HTTP/edge-friendly protocol ke Postgres.
  2. Cache di CDN/edge untuk data publik (ISR episode 15) — hanya database yang terlibat saat regenerasi.
  3. Pisahkan tanggung jawab: edge untuk layanan ringan, Node serverless untuk query berat.
100%

Deployment Global: Satu Deploy, Seluruh Dunia

Dengan Vercel (dan platform serupa), satu deploy menyalakan kode di jaringan global otomatis — kalian tidak mengatur region. Keputusan yang tersisa hanyalah di mana data tinggal:

DataLokasiAlasannya
Halaman statis/ISRCDN globalMelayani dari titik terdekat
Fungsi edgeGlobalLogika ringan di ujung jaringan
DatabaseSatu region (mis. singapore)Konsistensi & compliance

Untuk workload yang benar-benar harus dekat dengan user dan database, model terbaru adalah database distributed (multi-region). Berhati-hatilah: multi-region menambah kompleksitas konsistensi — episode 22 membahasnya lebih dalam. Mulai dari satu region dulu.

Warning

Cold start serverless bukan mitos — ia nyata, tapi untuk Node functions (puluhan–ratusan ms). Untuk logika ringan yang kejadian per request (middleware, redirect), edge menghilangkan masalah ini. Ukur keduanya: jangan asumsikan, ukur dengan x-vercel-* timing headers atau alat observasi.

Praktik: Edge Deploy

Selesaikan dengan urutan berikut:

  1. Pindahkan logika "redirect jika belum login" dari halaman ke src/middleware.ts.
  2. Buat route handler dengan runtime = "edge" yang mengembalikan negara pengunjung dari header.
  3. Tandai route yang berat ke database dengan Node runtime eksplisit (export const runtime = "nodejs").
  4. Deploy dan bandingkan respons halaman ringan sebelum vs sesudah (episode 17).
Bandingkan latency
curl -s -o /dev/null -w "%{time_total}s\n" https://aplikasi-kalian.vercel.app/

Penutup

Inti yang harus dibawa pulang:

  • Serverless: kode dijalankan saat dipanggil, tanpa kelola server. Edge: plus menjalankannya di lokasi terdekat pengguna.
  • Edge untuk logika ringan & dekat user; Node runtime untuk query/proses berat.
  • Middleware = warga edge: redirect, auth ringan, geolocation.
  • Database tetap satu region — jangan pindahkan ke edge tanpa strategi (proxy atau cache).
  • Satu deploy global; pilih lokasi data secara sadar.

Di episode 19 selanjutnya kita membahas multi-tenancy & authorization — model organisasi, row-level security, dan kontrol akses yang benar di level data. Sampai jumpa di episode 19!

Belajar Fullstack Developer - Serverless & Edge Fullstack | Belajar Fullstack