Baik systemd maupun PM2 bertujuan membuat aplikasi atau bot kita tetap berjalan 24/7, namun keduanya berada di tingkat yang berbeda. Systemd adalah manajer layanan sistem operasi (init) yang sudah menjadi bawaan Debian, sedangkan PM2 adalah process manager yang berjalan di atas sistem operasi dan fokus mengawasi aplikasi Node.js. Artikel ini membandingkan keduanya secara detail agar Anda dapat memilih yang paling sesuai.
Sebelum membaca perbandingan, silakan lihat panduan langkah demi langkah masing-masing: Menjalankan Aplikasi atau Bot Menggunakan Systemd dan Menjalankan Aplikasi atau Bot Menggunakan PM2.
Cara Kerja
Systemd membaca berkas unit .service yang kita letakkan di /etc/systemd/system/, lalu mengawasi proses sesuai konfigurasi (misalnya Restart=always). PM2, di sisi lain, adalah program yang kita jalankan sendiri; ia membungkus aplikasi kita dalam proses yang diawasinya, dan untuk bertahan saat reboot PM2 mendaftarkan dirinya ke systemd melalui pm2 startup. Dengan kata lain, pada Debian modern, PM2 pun pada akhirnya memanfaatkan systemd di belakang layar.
Perbandingan Detail
| Aspek | Systemd | PM2 |
|---|---|---|
| Fokus utama | Manajer layanan sistem operasi. | Process manager untuk aplikasi Node.js. |
| Cara menjalankan | Unit file .service di /etc/systemd/system. | Perintah pm2 start script.js. |
| Auto-restart | Via Restart=always di unit. | Aktif secara bawaan. |
| Startup saat boot | systemctl enable. | pm2 save lalu pm2 startup. |
| Penyimpanan log | journalctl (terpusat di OS). | pm2 logs (di ~/.pm2/logs). |
| Monitoring | systemctl status, journalctl. | pm2 monit, pm2 list (dashboard). |
| Multi-core / cluster | Tidak langsung, butuh unit tambahan. | Cluster mode bawaan (instances). |
| Bahasa aplikasi | Bebas (Node, Python, Go, dll). | Fokus Node.js, bisa lain via interpreter. |
| Ketergantungan | Bawaan Linux (Debian). | Perlu npm install -g pm2. |
| Konsumsi resource | Sangat ringan. | Sedikit lebih berat (Node + daemon). |
| Tingkat kesulitan | Menengah (menulis unit). | Ramah pemula (perintah sederhana). |
Keunggulan dan Kekurangan
| Layanan | Keunggulan | Kekurangan |
|---|---|---|
| Systemd | Ringan, bawaan OS, mendukung semua bahasa, kontrol resource penuh. | Penulisan unit agak teknis; cluster butuh konfigurasi tambahan. |
| PM2 | Sangat mudah, monitoring & cluster bawaan, ramah pemula Node.js. | Khusus ekosistem Node.js, perlu instalasi, memakai resource lebih. |
Perbandingan Perintah di Terminal
Agar Anda dapat membandingkan secara langsung, berikut perintah umum yang sering dipakai pada masing-masing layanan untuk mengelola aplikasi bernama mybot.
| Tugas | Systemd | PM2 |
|---|---|---|
| Menjalankan aplikasi | systemctl start mybot.service | pm2 start bot.js --name mybot |
| Mengecek status | systemctl status mybot.service | pm2 list |
| Melihat log | journalctl -u mybot.service -f | pm2 logs mybot |
| Restart | systemctl restart mybot.service | pm2 restart mybot |
| Menghentikan sementara | systemctl stop mybot.service | pm2 stop mybot |
| Aktif otomatis saat boot | systemctl enable mybot.service | pm2 save lalu pm2 startup |
| Menghapus dari daftar | systemctl disable mybot.service | pm2 delete mybot |
Sebagai ilustrasi, berikut urutan perintah lengkap untuk menjadikan bot aktif 24/7 pada masing-masing layanan:
Systemd:
sudo systemctl daemon-reload
sudo systemctl enable mybot.service
sudo systemctl start mybot.service
systemctl status mybot.servicePM2:
pm2 start bot.js --name mybot
pm2 save
pm2 startup
pm2 listRekomendasi: Mana yang Dipakai?
- Gunakan Systemd jika Anda ingin solusi paling ringan dan stabil, menjalankan aplikasi bukan Node.js (Python, Go, Rust), atau butuh kontrol penuh atas izin dan resource tingkat sistem.
- Gunakan PM2 jika aplikasi Anda berbasis Node.js, Anda menginginkan perintah sederhana, serta fitur cluster mode dan dasbor pemantauan tanpa konfigurasi rumit.
- Gunakan keduanya bersama untuk hasil terbaik: jalankan PM2, lalu pasang
pm2 startupagar PM2 (dan seluruh bot Anda) otomatis hidup saat VPS reboot melalui systemd.