CDN & Edge Computing — System Design

CDN (Content Delivery Network) adalah jaringan server yang tersebar di seluruh dunia, menyajikan konten dari lokasi terdekat dengan user. Masalah tanpa CDN: Use

CDN (Content Delivery Network) adalah jaringan server yang tersebar di seluruh dunia, menyajikan konten dari lokasi terdekat dengan user.

Masalah tanpa CDN:

User di Jakarta → Request → Server di US → Response
                  Latency: ~200ms round trip
                  Setiap gambar, CSS, JS = 200ms tambahan

Dengan CDN:

User di Jakarta → Request → CDN Edge (Singapore) → Response
                  Latency: ~20ms round trip
                  File sudah di-cache di edge server terdekat

Bagaimana CDN bekerja:

1. User pertama request gambar.jpg
2. CDN Edge belum punya → request ke Origin Server
3. Origin kirim file → CDN Edge menyimpan (cache)
4. CDN Edge kirim ke user
5. User kedua request gambar.jpg → CDN Edge sudah punya → kirim langsung!

Apa yang di-cache CDN:

Konfigurasi caching di CDN:

// Header dari origin server menentukan caching behavior
app.use("/static", (req, res, next) => {
  // Cache selama 1 tahun (immutable file dengan hash)
  res.set("Cache-Control", "public, max-age=31536000, immutable");
  next();
});

app.get("/api/articles", (req, res) => {
  // Cache 5 menit di CDN
  res.set("Cache-Control", "public, s-maxage=300");
  res.json(articles);
});

Cache Purging: Ketika file berubah, kamu perlu membersihkan cache di CDN:

// Strategi 1: Cache busting dengan hash di filename
// style.abc123.css → style.def456.css (URL beda = cache baru)

// Strategi 2: Purge via API
await fetch("https://api.cloudflare.com/client/v4/zones/ZONE/purge_cache", {
  method: "POST",
  body: JSON.stringify({ files: ["https://mysite.com/style.css"] })
});

Edge Computing — CDN yang bisa menjalankan kode:

CDN tradisional hanya menyajikan file statis. Edge computing memungkinkan kamu menjalankan kode di edge server, lebih dekat dengan user.

// Cloudflare Worker (berjalan di 300+ edge locations)
export default {
  async fetch(request) {
    const url = new URL(request.url);

    // A/B testing di edge (tanpa request ke origin)
    const variant = Math.random() > 0.5 ? "A" : "B";

    // Redirect berdasarkan lokasi user
    const country = request.headers.get("CF-IPCountry");
    if (country === "ID") {
      return Response.redirect("https://id.mysite.com" + url.pathname);
    }

    return fetch(request);
  }
};

Use cases edge computing:

CDN populer:

CDN Kelebihan
Cloudflare Free tier, edge workers, security
AWS CloudFront Integrasi AWS, Lambda@Edge
Vercel Edge Otomatis untuk Next.js/Vercel
Fastly Real-time purging, Compute@Edge

Tips: Untuk website Indonesia, pastikan CDN kamu punya edge server di Singapore atau Jakarta.

🎭 Analogi sehari-hari: CDN = waralaba minimarket. Daripada semua orang ke gudang pusat di Jakarta, ada Indomaret/Alfamart deket rumah (edge server). Mau beli sabun? Cabang Cibubur. Sudah habis? Cabang minta dari gudang pusat, simpan untuk pelanggan berikutnya. Lebih cepat, lebih murah, lebih dekat.

💡 Mengapa CDN bukan cuma untuk static? Edge computing = jalan kode di lokasi yang sama. Cloudflare Workers, Vercel Edge Functions bisa: A/B test, geo-redirect, auth check, image transform — tanpa hit origin. Latency 20ms vs 200ms ke origin = beda dunia untuk UX.

⚠️ Jebakan umum:

🎯 Cache strategy by asset type:

TL;DR: CDN = static + dynamic delivery dari edge dekat user. Static cache jangka panjang, HTML pendek + revalidate, API user-specific no-cache. Edge computing geser logic ke edge untuk latency 10x lebih baik. Default Cloudflare/Vercel Edge.