Belajar WebAssembly - Edge Functions & Serverless (FaaS)
Episode 12 of 23

Belajar WebAssembly - Edge Functions & Serverless (FaaS)

Menjelajahi WebAssembly di edge: Cloudflare Workers, Fastly Compute, Akamai EdgeWorkers, dan Spin/Kubernetes dengan SpinKube, plus pola HTTP handler, streaming response, serta stateless vs stateful di edge

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

Pendahuluan

Setelah di episode 11 kita mengenal runtime server-side — pada episode ini kita membawa Wasm ke tempat ia benar-benar bersinar: edge computing dan serverless (FaaS). Inilah alasan paling praktis mempelajari Wasm pada 2026 — platform edge besar mengadopsinya sebagai fondasi eksekusi fungsi.

Mengapa Wasm begitu cocok di edge? Karena serverless butuh cold start yang sangat cepat — fungsi harus mulai merespons dalam milidetik, bukan detik. Wasm dikompilasi dan divalidasi jauh lebih cepat daripada mem-boot container, binary-nya kecil, dan sandbox-nya aman untuk multi-tenant. Kombinasi ini membuatnya menjadi engine pilihan untuk fungsi di edge.

Platform Edge Berbasis Wasm

PlatformRuntimeBahasa Compile-to-wasmFitur Khas
Cloudflare WorkersWorkers runtime (V8 isolate)Rust, C/C++, Go, Kotlin, Python (Wasm)Cache, Durable Objects, KV
Fastly ComputeWasmtime (Wasm/WASI)Rust, Go, JS (via wasm), AssemblyScriptEdge networking tingkat lanjut
Akamai EdgeWorkersWasm + JSJS, RustEdgeWorkers massive (Akamai global)
Spin (Fermyon/Akamai)WasmtimeRust, Go, Python, JSDeploy ke Fermyon Cloud / SpinKube

Perbedaan kunci antar platform ada pada kontrak fungsi: Cloudflare Workers memakai API ala Service Worker (fetch handler), sementara Fastly Compute menjalankan modul WASI yang mengekspor handler sendiri.

Cloudflare Workers: contoh pola

Di Cloudflare Workers, fungsi dipanggil sebagai handler fetch. Untuk Wasm, kalian mengekspor fungsi dan memanggilnya dari handler:

src/lib.rs (Worker)
use worker::*;
 
#[event(fetch)]
pub async fn main(req: Request, env: Env, ctx: Context) -> Result<Response> {
    let url = req.url()?;
    let nama = url.path().trim_start_matches('/');
 
    let pesan = format!("Halo, {nama}! Dari edge WebAssembly.");
    Response::ok(pesan)
}

Deploy ke Cloudflare:

Deploy worker ke Cloudflare
npx wrangler deploy

Worker ini berjalan di ratusan data center Cloudflare sekaligus — request dari Jakarta diproses di lokasi terdekat, bukan di satu region pusat. Inilah janji edge computing: latensi rendah karena komputasi didekatkan ke pengguna.

Fastly Compute: modul WASI murni

Fastly Compute menjalankan modul Wasm/WASI secara langsung — tidak ada layer JS Service Worker. Handler didefinisikan dalam bahasa host kalian:

src/main.rs (Fastly)
use fastly::http::StatusCode;
use fastly::{Request, Response};
 
#[fastly::main]
fn main(req: Request) -> Result<Response, fastly::Error> {
    let body = format!(
        "Edge computing dengan WASI! UA: {}",
        req.get_header_str("user-agent").unwrap_or("-")
    );
    Ok(Response::builder()
        .status(StatusCode::OK)
        .body(body)
        .unwrap())
}

Karena berjalan di Wasmtime dengan WASI, modul Fastly bisa memakai sistem I/O async WASI 0.3 — stream request dan response yang efisien.

Streaming Response

Salah satu pola edge yang paling berguna adalah streaming: mengirim response secara bertahap, bukan menunggu seluruh payload selesai. Untuk file besar atau real-time updates:

streaming.rs
use fastly::streaming_body::{StreamingBody, BodyError};
 
fn stream_text() -> Result<(), BodyError> {
    let mut body = StreamingBody::new();
    body.write_str("bagian 1")?;
    body.write_str(" — lanjutan dikirim saat data tersedia")?;
    Ok(())
}

Dengan WASI 0.3, stream bukan lagi emulasi — ia adalah tipe stream<u8> native yang mengalir di antara komponen, HTTP server, dan client (detail di episode 17).

100%

Stateless vs Stateful di Edge

Stateless (rekomendasi default)

Fungsi tidak menyimpan state di memori; semua data persisten disimpan di layanan eksternal:

  • Cloudflare KV / D1 / R2 — key-value, SQLite, dan object storage.
  • Redis / object storage di platform lain.

Keuntungan: mudah diskalakan horizontal, tidak ada masalah konsistensi antar instance.

Stateful (Durable Objects)

Cloudflare Durable Objects memungkinkan fungsi memegang state deterministik di satu lokasi — seperti singleton yang hidup selama workflow berlangsung. Cocok untuk koordinasi WebSocket, workflow, atau counter terdistribusi. Kita bedah pola state management lebih dalam di episode 18.

Tip

Aturan praktis di edge: default-nya stateless. Pindahkan state ke KV/object storage saat data perlu bertahan, dan gunakan Durable Objects hanya saat benar-benar butuh koordinasi stateful. Stateless lebih murah, lebih dapat diskalakan, dan lebih mudah di-debug.

SpinKube: Wasm di Kubernetes

SpinKube membawa Spin ke Kubernetes: operator + runtime yang menjalankan aplikasi Spin sebagai pod yang lebih ringan. Alih-alih container berisi OS penuh, pod memuat modul Wasm yang dijalankan runtime Wasmtime — hasilnya image yang jauh lebih kecil dan startup jauh lebih cepat.

Install SpinKube operator
helm install spin-operator spin/operator --namespace spin-system
kubectl apply -f - <<EOF
apiVersion: core.spinoperator.dev/v1
kind: SpinApp
metadata:
  name: hello-spin
spec:
  image: ghcr.io/devvnull/hello-spin:1.0
  replicas: 3
EOF

Bayangkan perbandingannya: image container Node.js sekelas ratusan MB; image Spin + modul Wasm biasanya di bawah 10 MB, dengan cold start ~milidetik. Inilah argumen "Wasm menggantikan container untuk workload ringan" yang kita evaluasi kritis di episode 22.

Common Pitfalls

  • File besar di edge — payload besar lewat body worker; jangan simpan state besar di memori worker.
  • Salah mengasumsikan region — edge functions tidak punya "rumah"; jangan menaruh state di memori instance.
  • Cold start tetap ada — meski cepat, hitungan ms masih terasa untuk warm-up; ukur dengan real observability, bukan tebakan.
  • Sempitnya quota — baca batas CPU, memori, dan waktu eksekusi tiap platform sebelum mendesain workload.

Warning

Edge functions sangat cepat, tetapi bukan ajaib: setiap platform punya batas waktu eksekusi (mis. Cloudflare CPU time, Fastly timeout). Workload yang butuh komputasi berjam-jam tetap harus di-handoff ke layanan yang tepat, bukan dipaksakan di edge.

Penutup

Pada episode 12 ini, kalian telah memahami peran WebAssembly di edge computing dan serverless.

Inti yang harus dibawa pulang:

  • Cloudflare Workers, Fastly Compute, Akamai EdgeWorkers, dan Spin memakai Wasm sebagai engine fungsi edge.
  • Cold start ~milidetik dimungkinkan karena Wasm kecil, cepat dikompilasi, dan aman multi-tenant.
  • Pola HTTP handler dan streaming response adalah bread-and-butter edge functions.
  • Default stateless; gunakan KV/object storage, dan Durable Objects hanya saat perlu stateful.

Di episode 13 selanjutnya kita akan membahas data & binary processing — codec dan image/video transcoding dengan wasm, parse/serialize binary dengan serde, pemanfaatan SIMD, dan caching WebAssembly.Module dengan compileStreaming. Sampai jumpa di episode 13!

Belajar WebAssembly - Edge Functions & Serverless (FaaS) | Belajar Web Assembly