# Skalabilitas

## Pengertian

Scalability atau skalabilitas adalah kemampuan suatu sistem untuk menangani peningkatan beban kerja dengan cara menambahkan sumber daya ke dalam sistem. Seiring pertumbuhan sistem, performa akan mulai menurun kecuali kita mengadaptasinya untuk menghadapi pertumbuhan tersebut.

Sebuah sistem yang dapat terus berkembang untuk mendukung peningkatan jumlah pekerjaan disebut sebagai sistem yang **scalable** (dapat diskalakan).

## Mengapa Skalabilitas Penting?

Dalam era digital saat ini, aplikasi dan layanan online dapat mengalami pertumbuhan pengguna yang sangat cepat. Tanpa skalabilitas yang baik, sistem akan:

* Mengalami penurunan performa
    
* Meningkatkan waktu respons
    
* Berpotensi mengalami downtime
    
* Memberikan pengalaman pengguna yang buruk
    

## Jenis-jenis Scalability

### 1\. **Vertical Scaling (Scale Up)**

Menambah kapasitas server yang ada dengan meningkatkan spesifikasi hardware seperti CPU, RAM, atau storage.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1762095625449/e433c107-9430-4185-bd48-15c48d2b007d.png align="center")

**Kelebihan:**

* Implementasi lebih sederhana
    
* Tidak perlu mengubah arsitektur aplikasi
    
* Tidak ada kompleksitas distributed system
    

**Kekurangan:**

* Ada batasan maksimal upgrade hardware
    
* Biaya meningkat drastis untuk hardware kelas atas
    
* Single point of failure
    

### 2\. **Horizontal Scaling (Scale Out)**

Menambah jumlah server atau node untuk mendistribusikan beban kerja.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1762096775677/f2c63a34-1ad6-4b24-807f-8bbbfbb0557a.png align="center")

**Kelebihan:**

* Tidak ada batasan teoritis untuk pertumbuhan
    
* Lebih cost-effective
    
* Meningkatkan redundancy dan availability
    

**Kekurangan:**

* Implementasi lebih kompleks
    
* Memerlukan load balancer
    
* Perlu menangani konsistensi data
    

## Studi Kasus: Tokopedia

### Latar Belakang

Tokopedia adalah salah satu e-commerce terbesar di Indonesia yang mengalami pertumbuhan pesat sejak didirikan tahun 2009. Pada event-event besar seperti Harbolnas (Hari Belanja Online Nasional), traffic bisa melonjak hingga 10-20 kali lipat dari hari biasa.

### Tantangan Scalability

**Sebelum Implementasi:**

* Server sering down saat traffic tinggi
    
* Waktu loading halaman mencapai 10-15 detik saat peak hour
    
* Proses checkout gagal karena database overload
    
* Banyak komplain pengguna di media sosial
    

**Masalah Teknis:**

* Database monolitik tidak mampu menangani ribuan transaksi per detik
    
* Frontend dan backend dalam satu server
    
* Tidak ada caching mechanism
    
* Image hosting di server utama memperlambat loading
    

### Solusi yang Diterapkan

#### 1\. **Microservices Architecture**

Tokopedia memecah aplikasi monolitik menjadi microservices:

* Service untuk product catalog
    
* Service untuk user authentication
    
* Service untuk payment
    
* Service untuk cart dan checkout
    
* Service untuk search
    

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1762096806198/c9b128ac-4992-4fbc-8e27-88961abb05a7.png align="center")

**Manfaat:** Setiap service dapat di-scale secara independen sesuai kebutuhan.

#### 2\. **Database Sharding**

Membagi database menjadi beberapa shard berdasarkan:

* Region geografis (Jakarta, Surabaya, Medan, dll)
    
* User ID range
    
* Product categories
    

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1762096867364/647221f9-aa92-4d8b-87b9-283c472e75b1.png align="center")

**Contoh Implementasi:**

```plaintext
Shard 1: User ID 1-1.000.000 → Server DB Jakarta
Shard 2: User ID 1.000.001-2.000.000 → Server DB Bandung
Shard 3: User ID 2.000.001-3.000.000 → Server DB Surabaya
```

#### 3\. **Caching Strategy**

Implementasi multi-layer caching:

* **CDN (Content Delivery Network):** Untuk static assets (gambar, CSS, JS)
    
* **Redis Cache:** Untuk data produk populer, session data
    
* **Application Cache:** Untuk query results yang sering diakses
    

**Hasil:** Loading halaman homepage turun dari 10 detik menjadi 2 detik.

#### 4\. **Load Balancing**

Menggunakan load balancer untuk mendistribusikan traffic:

* Round-robin untuk distribusi merata
    
* Least connection untuk server yang paling tidak sibuk
    
* Geographic routing untuk latency minimal
    

#### 5\. **Auto-Scaling dengan Cloud**

Implementasi auto-scaling di cloud infrastructure:

* Monitoring CPU usage, memory, dan request rate
    
* Automatic spin up server baru ketika threshold tercapai
    
* Automatic scale down saat traffic normal
    

**Konfigurasi Auto-Scaling:**

```plaintext
- CPU Usage > 70% → tambah 2 server
- CPU Usage > 85% → tambah 5 server
- CPU Usage < 30% selama 10 menit → kurangi 1 server
```

#### 6\. **Message Queue**

Menggunakan message queue (seperti RabbitMQ/Kafka) untuk:

* Proses asynchronous (email notification, SMS)
    
* Mengurangi beban real-time processing
    
* Buffering request saat traffic tinggi
    

### Hasil Implementasi

Ini adalah contoh dari metrik setelah dilakukan proses sebelumnya

**Metrik Performa:**

* **Response Time:** Turun dari 10 detik menjadi 1-2 detik
    
* **Throughput:** Meningkat dari 1.000 request/detik menjadi 50.000 request/detik
    
* **Availability:** Meningkat dari 95% menjadi 99.9% (Three nines)
    
* **Cost Efficiency:** Biaya per transaksi turun 40% dengan cloud auto-scaling
    

**Impact Bisnis:**

* Peningkatan conversion rate 35%
    
* Pengurangan cart abandonment 50%
    
* Customer satisfaction score meningkat dari 3.2 menjadi 4.5
    
* Mampu menangani 2 juta concurrent users saat Harbolnas
    

### Pelajaran yang Dapat Diambil

1. **Mulai dengan Monitoring:** Tidak bisa mengoptimalkan yang tidak bisa diukur
    
2. **Incremental Scaling:** Tidak perlu langsung microservices, bisa bertahap
    
3. **Database adalah Bottleneck:** Seringkali database menjadi bottleneck pertama
    
4. **Caching is King:** Implementasi caching yang tepat memberikan hasil signifikan
    
5. **Prepare for Failure:** Sistem harus dirancang dengan asumsi komponen akan gagal
    

## Best Practices untuk Scalability

1. **Stateless Application:** Hindari menyimpan state di application server
    
2. **Database Connection Pooling:** Reuse koneksi database
    
3. **Asynchronous Processing:** Pisahkan proses yang bisa dilakukan async
    
4. **Content Delivery Network:** Gunakan CDN untuk static content
    
5. **Monitoring dan Alerting:** Real-time monitoring untuk deteksi masalah dini
    

## Kesimpulan

Skalabilitas (Scalability) adalah aspek fundamental dalam system design modern. Seperti yang ditunjukkan dalam studi kasus Tokopedia, implementasi strategi scalability yang tepat tidak hanya meningkatkan performa teknis, tetapi juga berdampak langsung pada kepuasan pengguna dan pertumbuhan bisnis.

Kunci keberhasilan skalabilitas adalah perencanaan yang matang, monitoring yang konsisten, dan kesediaan untuk terus beradaptasi dengan pertumbuhan sistem.
