Eğitim seçeneklerini yan yana koyup karar verin

PM2 mi Supervisor mi Systemd mi? Node.js Process Yönetimi

Node.js Process Yönetimi: PM2, Supervisor ve Systemd Arasında Seçim

Node.js uygulamalarını geliştirme ortamında çalıştırmak basit görünse de, üretim sunucularında durum tamamen farklıdır. Uygulamanız kapanırsa, otomatik olarak yeniden başlamalı; hatalar düzenli olarak kaydedilmeli; sistem kaynaklarını iyi kullanmalıdır. İşte bu noktada process yöneticileri devreye girer. PM2, Supervisor ve Systemd—her biri Node.js uygulamalarının yaşam döngüsünü yönetmek için tasarlanmıştır, ancak farklı ihtiyaçlar ve teknik mimariler için uygunluk dereceleri değişir.

PM2: Node.js Odaklı Çözüm

PM2, özel olarak Node.js ekosistemi için geliştirilmiş bir process yöneticisidir. NPM üzerinden kurulur ve neredeyse tüm Node.js projeleriyle anında uyumludur. PM2'nin en belirgin avantajı, basit bir CLI arayüzü sunmasıdır: pm2 start app.js komutuyla başlarsınız, pm2 monit ile gerçek zamanlı izleme yaparsınız.

PM2'nin temel özellikleri:

  • Otomatik yeniden başlatma (uygulama kapanırsa veya çöküşse)
  • Cluster modu (multi-core işlemci kullanımı için)
  • Detaylı log yönetimi (günlük dosyalara otomatik kayıt)
  • Sıfır kapanış süresi (zero-downtime deployment) desteği
  • Web dashboard ve SSH ile uzaktan izleme
  • Dosya değişim izleme (watch mode)

Ancak PM2'nin bir sınırlaması vardır: PM2'nin kendisinin Node.js tarafından çalıştırılması gerekir. Bu, sistem başlangıcında root seviyesinde otomatik başlatma ihtiyacı duyduğunuzda ek yapılandırma gerektirir. Ayrıca, dağıtılmış ortamlarda (microservices) her makineye ayrı kurulum yapmalısınız.

Supervisor: Evrensel ve Sistem Düzeyinde Çalışan

Supervisor, yalnızca Node.js için değil, herhangi bir uzun süreli çalışan process'i yönetmek için tasarlanmıştır. Python'da yazılmış, sistem seviyesinde çalışır ve sunucu başladığında otomatik olarak başlatılır. Bu, Supervisor'ü özellikle karışık sunucu ortamlarında (PHP, Python, Node.js uygulamalarının birlikte çalıştığı) çok tercih edilir hale getirir.

Supervisor'ün temel özellikleri:

  • Sistem düzeyinde otomatik başlatma
  • Process gruplaması (birden fazla process'i bir araya yönetmek)
  • CPU ve bellek sınırlandırması
  • Web arayüzü ve XML-RPC API desteği
  • Yapılandırma dosyası temelli (ini formatı)

Supervisor'ün dezavantajları daha belirgindir. PM2'nin basit komut satırı ergonomisine kıyasla, Supervisor yapılandırma dosyalarını elle düzenlemek gerekir. Log yönetimi de daha temeldir. Ayrıca, Supervisor'de cluster modu yoktur; çok çekirdekli işlemcileri kullanmak için kendiniz birden fazla process başlatmalısınız. Başarısız process'lerin yeniden başlatılması arasında gecikme (retry backoff) kontrolü sınırlıdır.

Systemd: Modern Linux'in Yerleşik Çözümü

Systemd, modern Linux dağıtımlarında ön yüklü gelen sistem ve servis yöneticisidir. Ek yazılım kurulumuna gerek yoktur—her zaten sistemde vardır. Bu, dağıtım sonrası bağımlılıkları minimize eder ve güvenlik açısından avantajsaldır.

Systemd'nin temel özellikleri:

  • İşletim sistemiyle tam entegrasyon
  • Hiyerarşik bağımlılık yönetimi (ör: network başlamadan sonra başla)
  • Journald ile merkezi log yönetimi
  • Resource limiting (CPU, bellek, açık dosya sayısı gibi)
  • Timer-based yeniden başlatma kuralları
  • Güvenlik alanlandırması (sandboxing) desteği

Ancak Systemd öğrenme eğrisi daha diktir. Unit dosya formatı (ini benzeri ancak farklı) başlangıçta kafa karıştırıcı olabilir. Gerçek zamanlı izleme (monitoring) için ayrı araçlar gerekir—Systemd kendisi bunu sunmaz. Cluster modu veya sıfır kapanış süresi gibi gelişmiş özellikler de yoktur.

Karşılaştırma Tablosu

Özellik PM2 Supervisor Systemd
Kurulum Kolaylığı Çok kolay (NPM) Kolay (paket yöneticisi) Önceden yüklü
Node.js Uyumluluğu Mükemmel İyi İyi
Cluster Modu Evet Hayır Hayır
Gerçek Zamanlı İzleme Dahil Web UI (opsiyonel) Harici araç gerekli
Sıfır Kapanış Süresi Evet Hayır Hayır
Öğrenme Eğrisi Düşük Orta Yüksek
Sistem Entegrasyonu Zayıf Orta Kusursuz

Hangileri Ne Zaman Seçilmelidir?

PM2'yi seçin eğer: Tek amaçlı Node.js sunucusu çalıştırıyorsanız; ekibiniz Node.js'ye aşinaysa; cluster modundan faydalanabiliyorsanız; uygulamayı sık güncelleyeceğiniz için sıfır kapanış süresi gerekiyorsa.

Supervisor'ü seçin

Systemd'yi seçin

Gerçekte, seçim teknik gereksinimlerle birlikte ekip deneyimini de yansıtmalıdır. PM2 hızlı başlangıç için idealdir, ancak uzun vadeli, karmaşık altyapıda Systemd'nin sistem entegrasyonu ve Supervisor'ün evrenselliği daha kıymetli olabilir. Her üç araç da üretim ortamında güvenilir ve kapsamlı Test edilmiş çözümlerdir—karar, uygulamanızın mimarisi ve sunucu altyapınızın karakteristiğine dayanmalıdır.