# VPS Deployment Guide (High Concurrency 1000 Users)

Dokumen ini berisi langkah-langkah krusial untuk melakukan deployment backend ke lingkungan VPS agar siap menangani beban 1000 user secara bersamaan.

## 1. PM2 Cluster Mode

Untuk memanfaatkan seluruh core CPU yang tersedia dan mencegah bottleneck pada satu instance, aktifkan cluster mode.

```bash
# Hapus instance lama jika ada
pm2 delete event-app-backend

# Jalankan dengan cluster mode (max instances)
pm2 start dist/main.js -i max --name "event-app-backend"
```

> [!IMPORTANT]
> Menggunakan `-i max` akan menjalankan instance sebanyak jumlah Core CPU pada VPS Anda. Ini sangat krusial saat menangani lonjakan login serentak.

## 2. Database connection Tuning

Sesuaikan `connection_limit` pada variabel lingkungan agar Prisma dapat menangani lebih banyak koneksi simultan dari berbagai instance PM2.

Edit file `.env` di VPS:

```env
# Tambahkan ?connection_limit=100 di akhir URL
DATABASE_URL="postgresql://user:password@localhost:5432/dbname?schema=public&connection_limit=100"
```

## 3. Optimasi Environment (Production)

Pastikan environment disetel ke `production` agar logger menggunakan format yang hemat data dan tidak membebani I/O disk.

```env
NODE_ENV=production
```

## 4. Verifikasi Redis

Pastikan service Redis telah berjalan (`systemctl status redis`). Sistem sekarang sangat bergantung pada Redis untuk:

- **Refresh Token Storage**: Menghindari I/O database saat login berkali-kali.
- **Permission Cache**: Mempersepat autentikasi.
- **Exam Session Data**: Buffer jawaban, strikes, dan urutan soal.

---

_Dibuat oleh Antigravity - Senior Backend Engineer & Tech Lead Assistant_
