Modern mode
Notes
Home | Portfolio
- Loading notes...
- Loading note content...
Modern mode
Home | Portfolio
October 14, 2026
Panduan langkah demi langkah untuk melakukan deployment ke server production menggunakan metode Fail-Fast dan prosedur rollback jika terjadi kesalahan.
Sebelum menarik kode baru, pastikan untuk selalu melakukan backup database terlebih dahulu. Kita menggunakan format custom yang terkompresi.
sudo -u postgres pg_dump --format=custom --compress=6 --verbose name_db > /opt/backup_db/name_backup_$(date +%Y-%m-%d_%H-%M-%S).dump
Urutan ini dirancang agar sistem menghentikan proses deploy jika ada error pada kode, sehingga database tidak akan tersentuh jika aplikasi gagal dikompilasi.
Langkah-langkah:
Tarik Kode Terbaru:
Ambil pembaruan dari repositori. Posisi sebelum perintah ini berjalan akan disimpan di HEAD@{1} pada reflog Git.
git pull origin main
Sinkronkan Library (NPM):
Pastikan paket yang diinstal sesuai dengan package-lock.json.
npm ci
Update Prisma Client: Persiapkan struktur database baru agar bisa dibaca oleh TypeScript.
npx prisma generate
Kompilasi Kode (Build): (PERHATIAN: Jika proses ini memunculkan error, HENTIKAN proses deploy. Database Anda masih aman).
npm run build
Terapkan Migrasi Database: (Jalankan hanya jika langkah build sukses tanpa error).
npx prisma migrate deploy
Muat Ulang Aplikasi (PM2): Terapkan pembaruan ke production dengan sistem zero-downtime.
pm2 reload nama-aplikasi
Pantau Log Server: Pastikan tidak ada pesan crash atau database connection error.
pm2 logs
Jika terjadi error fatal setelah pm2 reload, lakukan identifikasi masalah dan pilih salah satu skenario berikut:
Jika error murni karena logika kode (tanpa ada perubahan skema database), Anda cukup membatalkan git pull tadi.
git reset --hard HEAD@{1}
npm ci
npm run build
pm2 reload nama-aplikasi
Jika error disebabkan oleh perubahan tabel/kolom yang salah di database, Anda memiliki dua opsi:
Opsi 1: Fix Forward (Direkomendasikan - Data Aman) Jangan melakukan restore backup jika aplikasi sudah mengumpulkan data/transaksi pengguna yang baru.
schema.prisma ke versi yang benar.npx prisma migrate dev --name fix-rollbackOpsi 2: Restore Instan (Mundur Total - Data Baru Hilang) Gunakan hanya jika aplikasi benar-benar hancur dan Anda rela kehilangan data yang masuk sejak proses backup terakhir.
# 1. Matikan aplikasi agar tidak ada koneksi/data yang masuk
pm2 stop nama-aplikasi
# 2. Kembalikan kode ke versi sebelum git pull
git reset --hard HEAD@{1}
npm ci
npm run build
# 3. Restore database ke kondisi bersih (menghapus skema yang salah)
pg_restore -U postgres --clean --if-exists -d mini_erp_db /opt/backup_db/nama_file_backup_sebelumnya.dump
# 4. Nyalakan kembali aplikasi
pm2 start nama-aplikasi