Tutorial sistem desain dari luar negeri biasanya mengasumsikan infrastruktur yang berbeda: latency rendah ke AWS us-east-1, Stripe sebagai payment, dan email sebagai channel komunikasi utama.
Indonesia berbeda — dan perbedaan ini mempengaruhi setiap keputusan arsitektur. Berikut yang perlu Anda pertimbangkan yang tidak ada di tutorial internasional.
Latency dan CDN — Edge di Indonesia
| Opsi CDN | Edge di Indonesia | Harga | Cocok Untuk |
|---|---|---|---|
| Cloudflare (free/Pro) | Jakarta, Surabaya, Medan, Bali | Free tier memadai | Static assets, API caching, DDoS protection |
| AWS CloudFront | Jakarta PoP | Pay per use | Sudah pakai AWS stack |
| Cloudflare Workers | Edge compute Indonesia | 100k req/hari gratis | API gateway, auth, rate limiting di edge |
| GCP Cloud CDN | Jakarta region | Pay per use | Sudah pakai GCP stack |
Untuk majority usecase, saya default ke Cloudflare Workers sebagai edge API gateway — route request ke origin server di Railway/GCP, tapi handle auth, rate limiting, dan caching di edge. Ini yang saya pakai untuk GiziKu.
export default {
async fetch(request: Request, env: Env): Promise<Response> {
const url = new URL(request.url)
// 1. Rate limiting di edge — sebelum hit origin
const ip = request.headers.get('CF-Connecting-IP')
const rateLimitKey = `rl:${ip}`
const requests = await env.KV.get(rateLimitKey)
if (Number(requests) > 100) {
return new Response('Too Many Requests', { status: 429 })
}
// 2. Auth check di edge
const token = request.headers.get('Authorization')?.replace('Bearer ', '')
if (!token || !await validateJWT(token, env.JWT_SECRET)) {
return new Response('Unauthorized', { status: 401 })
}
// 3. Forward ke origin — request sudah validated
return fetch(`${env.ORIGIN_URL}${url.pathname}`, {
method: request.method,
headers: request.headers,
body: request.body
})
}
}
Payment — Ekosistem Lokal yang Wajib Didukung
Internasional: Stripe cukup. Indonesia: minimal perlu 5 kategori payment method.
| Kategori | Platform | Market Share Estimasi | Target Segment |
|---|---|---|---|
| E-wallet | GoPay, OVO, DANA, ShopeePay | ~45% | Millennial, Gen-Z urban |
| Virtual Account | BCA, BNI, Mandiri, BRI | ~35% | Semua segment, B2B |
| QRIS | Semua bank via Midtrans | ~10%, growing | Warung, retail kecil |
| Credit Card | Visa, Mastercard | ~7% | Upper middle class, B2B |
| COD | Via JNE, J&T logistics | ~3%, declining | Non-bankable, daerah 3T |
Bank Indonesia mendorong QRIS secara agresif — satu QR code yang bisa dibayar dari wallet apapun. Untuk target market UKM dan warung, implementasi QRIS via Midtrans atau DOKU lebih efektif dari GoPay standalone.
WhatsApp sebagai Channel Utama
Di Indonesia, WhatsApp bukan alternatif dari email — ini adalah primary channel. Open rate WhatsApp ~90% vs email ~20%. Ini implication-nya untuk arsitektur:
PDPA Indonesia — Checklist Minimum
UU PDP (Perlindungan Data Pribadi) berlaku sejak Oktober 2024. Ini bukan formalitas — ada sanksi pidana dan denda. Checklist minimum untuk developer:
✓ Data Inventory
- Catat data pribadi apa yang dikumpulkan
- Catat tujuan penggunaan setiap data
- Catat pihak ketiga yang menerima data
✓ Consent
- Consent eksplisit sebelum collect data
- Bukan pre-checked checkbox
- Mudah dicabut (unsubscribe, delete account)
✓ Data Minimization
- Hanya collect yang benar-benar dibutuhkan
- Review: apakah perlu birth date? Atau cukup age range?
✓ Data Retention
- Tentukan berapa lama data disimpan
- Implement auto-delete setelah periode tertentu
✓ Security
- Enkripsi data sensitif at rest (nama, email, telp)
- HTTPS wajib untuk semua endpoint
- Audit log untuk akses data sensitif
✓ Breach Notification
- Prosedur notifikasi ke user jika ada breach
- Laporan ke Kominfo dalam 14 hari kerja
Di Indonesia, nomor HP sering digunakan sebagai single point of identity — untuk WhatsApp, GoPay, mobile banking, dan OTP. Perlakukan nomor HP setara dengan password: enkripsi di database, tidak pernah di-log dalam plain text, dan audit akses.
Kesimpulan
Sistem yang bekerja di Indonesia perlu dirancang dengan mempertimbangkan konteks lokal dari awal: CDN edge di Jakarta, ekosistem payment yang terfragmentasi, WhatsApp sebagai primary channel, dan compliance UU PDP. Bukan afterthought — ini adalah keputusan arsitektur pertama.
Jangan desain untuk "user global" lalu lokalisasi di akhir. Desain untuk pengguna Indonesia dari awal — jauh lebih mudah dibanding re-architect setelah production.