Cloud Pricing Model #
“Bayar hanya yang kamu pakai” adalah janji utama cloud — dan ini benar, tapi perlu dipahami secara mendalam. Tagihan cloud bukan hanya dari biaya compute dan storage yang terlihat jelas. Ada biaya data transfer, biaya per request, biaya managed service, biaya dukungan, dan berbagai komponen lain yang kalau tidak dipahami bisa menyebabkan kejutan di akhir bulan. Memahami bagaimana cloud billing bekerja adalah keterampilan dasar yang memungkinkan kamu membuat keputusan arsitektur yang sadar biaya — bukan menghindari fitur karena takut tagihan, tapi memilih dengan pengetahuan yang tepat.
Dimensi Biaya di Cloud #
Cloud billing bukan satu angka — ia terdiri dari banyak dimensi:
1. Compute (Waktu Berjalan)
→ Instance/VM: per jam atau per detik
→ Container: per vCPU dan GB RAM yang dikonsumsi
→ Serverless: per invocation + per GB-detik eksekusi
2. Storage (Kapasitas yang Disimpan)
→ Object storage: per GB per bulan
→ Block storage: per GB yang di-provision (bukan yang dipakai)
→ File storage: per GB per bulan
3. Network / Data Transfer
→ Ingress (masuk ke cloud): biasanya GRATIS
→ Egress (keluar dari cloud): BERBAYAR per GB
→ Cross-region transfer: berbayar per GB
→ Cross-AZ transfer: berbayar per GB (lebih murah dari cross-region)
4. Request / API Calls
→ Object storage: per 1000 PUT/GET request
→ Managed services: per request atau per unit tertentu
5. Managed Services
→ Database managed: per instance jam + storage
→ Load balancer: per jam + per LCU (Load Balancer Capacity Unit)
→ NAT Gateway: per jam + per GB diproses
6. Dukungan / Support
→ Developer, Business, Enterprise plan — biaya bulanan tetap
Data Transfer — Biaya yang Paling Sering Mengejutkan #
Aturan umum biaya data transfer:
GRATIS:
✓ Data masuk ke cloud (ingress) — biasanya tidak ada biaya
✓ Transfer antara layanan dalam AZ yang sama — biasanya gratis
✓ Transfer dari internet ke resource cloud — gratis
BERBAYAR:
✗ Data keluar dari cloud ke internet (egress)
→ Tipikal: $0.08–0.09 per GB
→ Di negara tertentu bisa lebih mahal
✗ Transfer antar AZ dalam satu region
→ Lebih murah dari egress ke internet, tapi tetap berbayar
→ Tipikal: $0.01–0.02 per GB per arah
✗ Transfer antar region
→ Lebih mahal dari cross-AZ
→ Tipikal: $0.02–0.08 per GB tergantung pasangan region
Contoh skenario yang sering mengejutkan:
Arsitektur multi-AZ yang tidak efisien:
→ App server di AZ-1a memanggil database di AZ-1b setiap request
→ 1000 request/detik × 10KB per response × 86400 detik = ~864 GB/hari
→ 864 GB × $0.01 = $8.64/hari = $259/bulan HANYA dari cross-AZ transfer
Solusi: tempatkan database dan app server di AZ yang sama,
dan gunakan replica di AZ lain hanya untuk failover
Compute Pricing — Berbagai Model #
On-Demand:
→ Bayar per jam atau per detik
→ Tidak ada commitment
→ Harga tertinggi, fleksibilitas tertinggi
→ Cocok untuk: workload yang tidak predictable, pengembangan
Reserved / Committed Use:
→ Commit untuk 1 atau 3 tahun
→ Diskon 30-60% dari on-demand
→ Bayar di muka (all upfront, partial, atau monthly)
→ Cocok untuk: baseline workload yang stabil
Spot / Preemptible:
→ 60-90% lebih murah dari on-demand
→ Bisa diterminasi kapan saja
→ Cocok untuk: batch, ML training, fault-tolerant workload
Savings Plans (AWS specific) / Flexible Committed Use:
→ Commit ke jumlah spend per jam (bukan instance spesifik)
→ Lebih fleksibel dari reserved: berlaku ke instance type apa pun
→ Diskon lebih kecil dari reserved spesifik, tapi lebih fleksibel
Perbandingan biaya (ilustrasi):
On-demand 1 tahun: $1000
Reserved 1 tahun: $600 (hemat 40%)
Spot rata-rata: $200 (hemat 80%, tapi bisa diterminasi)
Storage Pricing — Provisioned vs Used #
Block Storage (EBS, Persistent Disk):
→ Bayar per GB yang di-PROVISION, bukan yang digunakan
→ 500 GB volume yang hanya terisi 100 GB tetap bayar 500 GB
→ Pilih ukuran yang tepat — tidak ada manfaat melebihkan provisioning
Contoh anti-pattern:
Dev database dengan volume 2 TB karena "jaga-jaga"
→ Data aktual: 50 GB
→ Membayar 40x lebih dari yang dibutuhkan
Object Storage:
→ Bayar per GB yang AKTUALLY disimpan
→ Selain itu: biaya per request (PUT, GET)
→ Lifecycle policy memindahkan ke tier lebih murah otomatis
Storage tier pricing (ilustrasi):
Standard: $0.023/GB/bulan
Infrequent Access: $0.0125/GB/bulan + retrieval fee
Archive: $0.004/GB/bulan + restore time + fee
Serverless Pricing — Granular tapi Bisa Mengejutkan #
Function-as-a-Service (Lambda, Cloud Functions, Azure Functions):
→ Per invocation: $0.20 per 1 juta invokasi
→ Per GB-detik: $0.0000166667 per GB-detik
Contoh kalkulasi:
Fungsi dengan 512MB memory, berjalan 200ms, dipanggil 1 juta kali:
Invocation cost: $0.20
Duration cost: 0.5GB × 0.2 detik × 1.000.000 × $0.0000166667
= 0.5 × 0.2 × 1.000.000 × $0.0000166667
= $1.67
Total: $1.87 per bulan (sangat murah!)
Tapi jika traffic sangat tinggi:
100 juta invokasi per bulan:
Invocation: $20
Duration: $167
Total: $187 per bulan
Bandingkan dengan reserved instance untuk 100 juta request:
1 instance reserved: ~$50/bulan bisa handle ini → lebih murah
Pelajaran: serverless efisien untuk banyak kasus, tapi untuk
traffic sangat tinggi dan konsisten, compute model bisa lebih murah
Free Tier dan Cara Memanfaatkannya #
Semua major cloud provider punya free tier:
Tipe free tier:
Always-Free (tidak expire):
→ Lambda: 1 juta invokasi/bulan gratis selamanya
→ Object storage: beberapa GB gratis selamanya
→ Layanan monitoring, DNS, dll
→ Berguna untuk: production workload kecil, dev tools
12-Month Free (hanya tahun pertama):
→ EC2/Compute: t2.micro atau setara 750 jam/bulan
→ RDS: db.t2.micro 750 jam/bulan
→ Object storage: 5 GB
→ Berguna untuk: belajar dan eksperimen
Trial Credits:
→ $300 kredit untuk 90 hari (GCP)
→ Kredit berbeda per provider
→ Berguna untuk: proof of concept, evaluasi
Perhatian dengan free tier:
✗ Free tier tidak berlaku jika account sudah tidak baru
✗ Beberapa layanan tidak masuk free tier
✗ Free tier bisa habis tanpa peringatan yang jelas
✓ Set billing alert bahkan di free tier — untuk mencegah kejutan
Cara Membaca Tagihan Cloud #
Komponen tagihan yang perlu dipahami:
Line items per service:
→ Setiap layanan muncul sebagai baris terpisah
→ Bisa sangat panjang — ratusan line item untuk akun besar
Usage type:
→ Menjelaskan APA yang ditagih: "BoxUsage:t3.medium", "DataTransfer-Out"
→ Perlu waktu untuk belajar kode-kode usage type
Tanggal dan periode:
→ Tagihan per bulan kalender (biasanya)
→ Beberapa layanan ditagih harian
Unit:
→ Compute: per instance-hour
→ Storage: per GB-month
→ Transfer: per GB
→ Request: per million requests
Best practice membaca tagihan:
✓ Breakdown per service: service mana yang paling banyak?
✓ Breakdown per tag/project: tim mana yang paling banyak spend?
✓ Compare bulan ini vs bulan lalu: ada lonjakan tidak biasa?
✓ Cek line item "Other" atau "Untagged" — biasanya sumber kejutan
Ringkasan #
- Cloud billing bukan hanya compute dan storage — data transfer (terutama egress), request API, dan biaya managed service bisa signifikan dan sering mengejutkan.
- Egress ke internet selalu berbayar — sekitar $0.08-0.09/GB; desain arsitektur yang meminimalkan data keluar dari cloud atau antar-region.
- Block storage ditagih per GB yang di-provision, bukan yang dipakai — jangan lebih-provision; pilih ukuran yang tepat dan resize jika kebutuhan berubah.
- On-demand vs reserved vs spot: pilih berdasarkan workload — on-demand untuk fleksibilitas, reserved untuk baseline stabil, spot untuk fault-tolerant workload dengan biaya minimal.
- Serverless efisien untuk traffic rendah-sedang, tapi bisa lebih mahal dari reserved instance untuk traffic sangat tinggi — kalkulasi sebelum memilih.
- Set billing alert dari hari pertama — bahkan di free tier; lebih baik mendapat notifikasi awal daripada kaget di akhir bulan.
← Sebelumnya: Observability vs Monitoring Berikutnya: Cost Allocation & Tagging →