Kalau kita deploy aplikasi ke server/VPS, sering muncul pertanyaan: “Berapa core CPU dan RAM yang harus saya kasih ke aplikasi ini?” atau “Kalau traffic naik, saya harus scale up atau scale out?”.
Jawabannya: jangan langsung tebak-tebak. Ada alur step-by-step yang bisa dipakai supaya tuning aplikasi lebih terukur, resource nggak boros, dan scaling lebih mulus.
1. Mulai dari Baseline (Start Kecil Dulu)
Jangan langsung kasih 8 core atau 16 GB RAM. Coba mulai dengan resource kecil misalnya 1–2 core dan 2–4 GB RAM.
Kenapa?
- Lebih gampang lihat bottleneck.
- Kita tahu seberapa efisien aplikasi sebelum di-boost.
- Kalau dari kecil udah boros, berarti ada yang perlu dioptimasi.
2. Tuning di Level Aplikasi
Sebelum mikirin scaling, pastikan aplikasi kamu pakai resource dengan benar.
Beberapa hal penting:
- Thread pool & concurrency → jangan kebanyakan worker melebihi jumlah core.
- Connection pool DB → atur secukupnya (misal 10–20, bukan 100+).
- Memory usage → cek apakah ada leak atau data terlalu banyak ditampung di RAM.
- Caching & query DB → simpan data yang sering dipakai, optimasi query berat.
3. Uji Lagi dan Cari Bottleneck
Lakukan load test (misalnya dengan wrk
, k6
, atau ab
). Catat:
- RPS (Requests per second)
- CPU usage
- RAM usage
- Latency (p95/p99)
Kalau CPU penuh tapi RAM masih longgar → aplikasi butuh core tambahan atau optimasi CPU.
Kalau RAM habis tapi CPU santai → aplikasi butuh RAM lebih atau optimasi memory.
Target ideal: CPU dan RAM kepakai 60–75% secara stabil.
4. Lock “Profil” Container
Dari hasil uji, tentukan konfigurasi per container.
Misalnya:
- 2 core + 4 GB RAM → aplikasi stabil di 200 RPS.
Ini jadi profil resmi aplikasi kamu.
5. Hitung Kebutuhan Scaling
Sekarang baru kita hitung kapasitas total:
Target RPS ÷ RPS per container = jumlah container
Contoh:
- Target: 1200 RPS
- Satu container handle: 200 RPS
- Hasil: 1200 ÷ 200 = 6 container
6. Scaling Strategy: Horizontal > Vertical
Lebih baik nambah container (scale out) daripada bikin satu container raksasa (scale up).
Alasannya:
- Load lebih tersebar.
- Kalau 1 container mati, traffic bisa dialihkan ke yang lain.
- Lebih fleksibel untuk auto-scaling.
7. Otomatisasi dengan HPA (Kubernetes)
Kalau aplikasi sudah jalan di Kubernetes, pakai Horizontal Pod Autoscaler (HPA).
Contoh aturan simpel:
- Min pod = 3
- Max pod = 10
- Scale up kalau CPU > 70%
- Scale down kalau CPU < 40%
Bisa juga pakai custom metric, misalnya:
- RPS
- Latency
- Queue length
8. Monitoring & Alerting
Jangan lupa pasang monitoring. Gunakan stack sederhana seperti:
- Prometheus + Grafana untuk metrik dan grafik.
- cAdvisor / node_exporter untuk resource usage.
- Alertmanager untuk notifikasi kalau CPU, RAM, atau latency kelewat batas.
Kesimpulan
Alur tuning yang sehat itu:
- Start kecil → load test.
- Tuning aplikasi → efisiensi CPU & RAM.
- Uji lagi → cari bottleneck.
- Lock profil container (berapa core/RAM per container).
- Hitung kebutuhan scaling.
- Scale out dengan HPA.
- Monitor terus, siap adjust kalau workload berubah.
Dengan cara ini, resource server/VPS bisa dipakai efisien, scaling jadi terukur, dan aplikasi tetap stabil meski traffic naik turun.
Top comments (0)