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…

CDN (Content Delivery Network) adalah jaringan server di banyak kota yang menyimpan salinan konten situsmu dekat dengan pengguna. Edge computing artinya menjalankan kode di server-server itu juga, bukan cuma menyajikan file. Bayangin pabrik roti di satu kota. Toko cabang di kota-kota lain menyimpan stok roti yang paling laku, jadi pembeli gak perlu menunggu roti dikirim dari pabrik. Stok di cabang punya tanggal kedaluwarsa, dan bisa ditarik kalau resepnya berubah. Kue ulang tahun pesanan atas nama satu orang tetap dibuat di pabrik. Kasir cabang juga bisa mengerjakan urusan kecil sendiri, seperti mengecek kupon, tanpa menelepon pabrik.

🧪 Tebakan cepat: origin TiketNada di Virginia, Amerika Serikat. Poster Konser Nusantara sudah tersimpan di PoP Jakarta. Budi di Jakarta memintanya. Berapa lama: sekitar 8 ms, 230 ms, atau 232 ms? Tebak dulu, jawabannya ada di bagian "HIT, MISS, dan jarak".

Istilah: origin, PoP, edge

Latency mengikuti jarak

Sinyal di kabel serat optik paling cepat sekitar 200 km per milidetik, dan jalurnya gak pernah lurus. Makin jauh, makin lama, dan gak ada optimasi kode yang bisa menghapusnya. Model contoh di Lab, waktu bolak-balik (round trip) dari HP pembeli. Angka Jakarta sama dengan lesson Client-Server Architecture:

Pembeli di ke Jakarta ke Singapura ke Makassar ke Virginia
Jakarta 8 ms 20 ms 30 ms 230 ms
Medan 30 ms 15 ms 55 ms 245 ms
Jayapura 70 ms 85 ms 40 ms 290 ms

Di Lab ada tiga PoP contoh: Jakarta, Singapura, dan Makassar. Tiap pembeli memakai yang terdekat: Jakarta ke PoP Jakarta (8 ms), Medan ke Singapura (15 ms), Jayapura ke Makassar (40 ms).

HIT, MISS, dan jarak

Request MISS menempuh tiga jalan: pembeli ke PoP, PoP ke origin lewat jaringan provider CDN, lalu kerja origin (2 ms untuk file, 20 ms untuk halaman). Request HIT cuma menempuh jalan pertama. Poster dari Jakarta, origin di Virginia:

Request Jalannya Total
Pertama: MISS 8 ms ke PoP Jakarta + 220 ms PoP ke Virginia + 2 ms 230 ms
Kedua: HIT 8 ms ke PoP Jakarta 8 ms
Tanpa CDN 230 ms ke Virginia + 2 ms 232 ms

Jawabannya 8 ms. Itu jawaban tebakannya. Begitu salinannya ada di PoP, jauhnya origin gak berpengaruh lagi. Yang membayar jarak cuma MISS, dan MISS sedikit lebih lambat dari tanpa CDN, karena ada satu persinggahan tambahan.

Untungnya berlipat karena satu salinan dipakai bersama. Saat war tiket, 10.000 orang per detik membuka poster yang sama. Dengan hit ratio (persen request yang HIT) 99%, origin cuma menerima 100 request per detik. Sisanya dijawab PoP.

Apa yang di-cache: statis atau dinamis

Konten yang paling tepat di-cache CDN adalah aset statis yang sama untuk semua orang dan jarang berubah: gambar, CSS, bundle JavaScript, font. Konten yang dibuat khusus untuk satu orang (keranjang, profil, riwayat pesanan) atau yang berubah tiap detik jangan di-cache di CDN: kalau tersimpan di PoP, pembeli lain bisa menerima keranjang Budi.

Origin memberi tahu CDN lewat header Cache-Control:

// Aturan TiketNada di origin
const RULES = {
  '/img/poster-nusantara.jpg': 'public, max-age=86400', // statis: 1 hari
  '/events/42': 'public, s-maxage=60',                  // halaman konser: 60 detik di CDN
  '/api/cart': 'private, no-store',                     // keranjang satu pembeli: jangan simpan
};

Detail semua nilai Cache-Control, nama file ber-hash, dan purge per tag ada di lesson CDN & Edge Caching (track Performance).

TTL dan purge: segar atau cepat

TTL (time to live) adalah berapa lama salinan dianggap segar. Selama TTL, PoP gak bertanya ke origin, jadi dia gak tahu kalau data di origin berubah. Di Lab, halaman /events/42 disimpan di detik 0, lalu harganya turun dari Rp750.000 jadi Rp700.000:

Detik Request ke PoP Status Harga yang tampil
0 pertama MISS Rp750.000
30 setelah harga turun HIT Rp750.000, basi
61 TTL 60 detik sudah lewat EXPIRED Rp700.000

Purge menghapus salinan di semua PoP sekarang juga, jadi request berikutnya MISS dan mengambil versi baru. Ini trade-off-nya: TTL panjang berarti hit ratio tinggi dan origin santai, tapi data basi lebih lama. TTL pendek berarti lebih segar, tapi lebih banyak request ke origin. Untuk data yang sama untuk semua orang tapi bisa berubah, pakai TTL pendek dan purge saat datanya berubah.

Edge computing: kode yang jalan di PoP

CDN modern bisa menjalankan kode di PoP: Cloudflare Workers, Vercel Edge Functions, Fastly Compute. Edge computing adalah menjalankan logika aplikasi di server CDN yang dekat dengan pengguna, bukan cuma menyajikan file statis. Contoh TiketNada saat war tiket: cek token antrean sebelum request boleh ke origin.

// Cloudflare Worker: jalan di PoP, bukan di origin
export default {
  async fetch(request) {
    const cookie = request.headers.get('Cookie') || '';
    if (!cookie.includes('giliran=ok')) {
      return new Response('Kamu di antrean. Halaman ini dicoba lagi sebentar lagi.');
    }
    return fetch(request); // sudah giliran: teruskan ke cache atau origin
  },
};

Edge cocok untuk logika kecil: redirect per negara, A/B test, cek token, blokir bot. Datanya tetap di origin, jadi logika yang butuh database tetap lebih baik di sana. Lebih lanjut di lesson Cloudflare Workers & Edge Computing (track DevOps).

🎯 Strategi per jenis konten

Konten Strategi
File ber-hash (app.3f9a1c.js), poster, font cache lama: max-age=31536000, immutable atau sehari
Halaman publik yang bisa berubah (detail konser) cache pendek (s-maxage=60) + purge saat berubah
Data pribadi (keranjang, profil, riwayat pesanan) jangan di-cache: private, no-store
Data real-time (sisa kursi detik ini) jangan di-cache, atau beberapa detik saja
Logika kecil sebelum origin (antrean, redirect) edge function

⚠️ Jebakan yang sering ketemu

TL;DR: CDN menyimpan salinan konten di PoP (Point of Presence), lokasi server CDN di kota dekat pengguna, jadi latency-nya mengikuti jarak ke PoP, bukan ke origin. Di model TiketNada, poster dari Jakarta dengan origin di Virginia: MISS 230 ms, HIT 8 ms, tanpa CDN 232 ms. Dengan hit ratio 99%, origin cuma menerima 1 dari 100 request. Cache aset statis yang sama untuk semua orang (gambar, CSS, JavaScript) lama; halaman publik yang berubah dengan TTL pendek plus purge; data pribadi dan real-time jangan di-cache (private, no-store, BYPASS). Selama TTL, PoP gak tahu origin berubah, jadi bisa mengirim harga lama sampai TTL habis atau di-purge. Edge computing menjalankan logika aplikasi di server CDN dekat pengguna, misalnya cek token antrean dalam 41 ms dari Jayapura, bukan 310 ms ke origin.

Yang akan kamu pelajari