DEV Community

Nandan Ramdani
Nandan Ramdani

Posted on

Cara Tuning Aplikasi dan Mengatur Resource Container dengan Bijak

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
Enter fullscreen mode Exit fullscreen mode

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:

  1. Start kecil → load test.
  2. Tuning aplikasi → efisiensi CPU & RAM.
  3. Uji lagi → cari bottleneck.
  4. Lock profil container (berapa core/RAM per container).
  5. Hitung kebutuhan scaling.
  6. Scale out dengan HPA.
  7. 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)