UNDER PRESSURE

Level 1 · Menggandakan Mesin

Sesi 8: Membesarkan atau Memperbanyak (Vertical vs Horizontal Scaling)

Bagaimana jika kita tinggal beli server yang dua kali lebih besar? Sampai kapan trik itu bisa dipakai?

Sesi 8 / 343 menit baca

1. Bayangkan Jika: Loket Raksasa vs Deretan Loket

Bayangkan sebuah kantor pos dengan satu petugas yang sangat sibuk melayani 500 orang per jam. Karena antrean mengular, manajemen kantor mengambil keputusan pertama yang paling intuitif: ganti petugas tersebut dengan manusia super. Petugas super ini bisa mengetik 4× lebih cepat dan membaca 4× lebih kilat.

Untuk sementara, antrean terurai. Tapi tahun depan, pengunjung naik jadi 5.000 orang per jam. Sekarang, manajemen mencari manusia super tingkat dewa yang bisa mengetik 50× lebih cepat.

Di sinilah dua tembok besar runtuh: 1. Tembok Fisik: Manusia super dengan kecepatan 50× tidak ada di dunia nyata. Komponen silikon (CPU clock speed, memory bus bandwidth, socket limit) memiliki batas fisik termal dan propagasi sinyal. 2. Tembok Ekonomi (Exponential Cost): Server dengan 128 core harganya bukan sekadar 4× lipat server 32 core, melainkan bisa 12× hingga 20× lipat karena arsitektur multi-socket NUMA bus yang sangat kompleks dan mahal.

Pilihan kedua adalah memperbanyak loket: alih-alih mencari satu manusia super, buka 10 loket biasa yang dijaga oleh 10 petugas normal.


2. Mekanisme di Balik Sistem: Scale Up vs Scale Out

VERTICAL SCALING (SCALE UP)                HORIZONTAL SCALING (SCALE OUT)
┌─────────────────────────────────┐        ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐
│  SINGLE GIANT SERVER            │        │NODE 1│ │NODE 2│ │NODE 3│ │NODE 4│
│  64 Core → 128 Core → 256 Core  │        └──────┘ └──────┘ └──────┘ └──────┘
│  512 GB RAM                     │           ▲        ▲        ▲        ▲
│  Single Failure Point           │           └────────┴──┬─────┴────────┘
└─────────────────────────────────┘                       │
                                                    LOAD BALANCER

2.1 Vertical Scaling (Scale Up)

  • Definisi: Menambah kapasitas sumber daya pada satu mesin fisik/instans tunggal (CPU, RAM, disk NVMe I/O).
  • Kelebihan:
  • Nol perubahan arsitektur aplikasi (tidak butuh shared session, tidak butuh distributed locking).
  • Konsistensi data mutlak (ACID di memori/disk lokal).
  • Latensi antar-komponen sangat rendah (komunikasi lewat internal bus/RAM, bukan jaringan kabel).
  • Kekurangan:
  • Ada batas atas mutlak (hardware ceiling).
  • Downtime saat upgrade hardware fisik.
  • Single Point of Failure (SPOF): Jika motherboard atau RAM mesin raksasa tersebut crash, 100% sistem tumbang total.
  • Kurva Biaya Eksponensial: Biaya hardware kelas enterprise naik tajam secara eksponensial di batas atas kapasitas.

2.2 Horizontal Scaling (Scale Out)

  • Definisi: Menambah jumlah mesin (commodity nodes / replicas / pods) yang bekerja paralel membagi beban kerja.
  • Kelebihan:
  • Kapasitas teori hampir tanpa batas (elastic scalability).
  • High Availability: Jika 1 dari 10 server terbakar, 9 server lain tetap melayani sisa 90% trafik.
  • Efisiensi Biaya: Memakai mesin komoditas standar (commodity hardware) yang diproduksi massal.
  • Kekurangan:
  • Butuh lapisan distribusi trafik (Load Balancer).
  • Aplikasi wajib stateless (tidak boleh menyimpan session login di memori lokal server).
  • Menghadapi network latency antar-server dan kompleksitas konkurensi data terdistribusi.

3. Kurva Biaya dan Batas Fisik (The Law of Hardware Economics)

Metrik Scale Up (Vertical) Scale Out (Horizontal)
Batas Maksimal Terbatas batas socket & chipset fisik Elastis, ribuan node komoditas
Kurva Biaya Eksponensial (
O(e^k)
)
Linear (
O(N)
)
Kesiapan Aplikasi Langsung jalan (Legacy friendly) Wajib Stateless + Central Store
Ketahanan Bencana Rentan (Single Point of Failure) Tangguh (Toleran N-1 failure)
Kompleksitas Ops Rendah di awal, tinggi saat mentok Butuh orkestrasi, CI/CD, monitoring

4. Lensa Performance Tester

Bagi performance tester, perbedaan vertikal dan horizontal menentukan pola kegagalan saat stress test:

  1. Pada Sistem Vertikal (Scale Up): - Saat beban naik dari 500 ke 5.000 RPS, metrik CPU/RAM naik lurus sampai 90–95%. - Begitu batas tercapai, antrean internal CPU (run queue latency) meledak seketika, dan latensi sistem melonjak tajam (hockey stick curve). - Seluruh pengguna mengalami kelambatan bersamaan secara serentak.

  2. Pada Sistem Horizontal (Scale Out): - Beban didistribusikan ke N node. - Jika satu node mengalami memory leak atau CPU throttling, hanya sebagian kecil request yang gagal (partial degradation), selama load balancer memiliki mekanisme health check dan auto-drain yang baik.


5. Pertanyaan untuk Ronde Berikutnya

"Kalau kita memutuskan memperbanyak server jadi 5 mesin yang identik... siapa yang berdiri di depan pintu untuk membagi siapa masuk ke server mana? Dan apa yang terjadi kalau pemilihnya salah membagi beban?"

(Lanjut ke Sesi 9: Kalau Ada Dua Server, Siapa yang Menentukan?)