Node.js, modern web uygulamaları için popüler ve yüksek performanslı bir çalışma zamanı ortamı sunar. Ancak bu gücü etkili kullanabilmek için VDS (Virtual Dedicated Server) üzerinde doğru yapılandırmalar ve optimizasyonlar gereklidir. Bu yazıda, VDS üzerinde Node.js barındırırken performansı en üst seviyeye çıkarmak için uygulanabilecek temel yöntemleri ele alacağız.
1. Çoklu Process Kullanımı: PM2 ile Uygulama Yönetimi
Node.js tek iş parçacıklı (single-threaded) çalışır. Ancak PM2 gibi process yöneticileri sayesinde, çoklu çekirdeklerden tam performans alabilirsiniz.
- PM2 ile uygulamanızı cluster mode’da çalıştırarak her CPU çekirdeği için bir instance oluşturabilirsiniz.
- Uygulama çökerse otomatik yeniden başlatma sağlar.
- Bellek ve CPU kullanımı detaylı izlenebilir.
pm2 start app.js -i max
Bu komut, mevcut çekirdek sayısına göre maksimum process başlatır.
2. Ters Proxy Kurulumu (NGINX veya Apache)
Node.js doğrudan 80/443 portlarını kullanmaz. Bu sebeple VDS üzerinde NGINX veya Apache gibi bir ters proxy yapılandırmak gereklidir.
Avantajları:
- SSL sertifikalarının yönetimi kolaylaşır (Let’s Encrypt).
- Static dosyalar doğrudan servis edilir.
- Yük dengeleme ve gzip gibi hızlandırıcılar devreye girer.
NGINX için örnek yapılandırma:
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
3. Çevresel Değişkenler ile Yapılandırma (Environment Variables)
Node.js uygulamanızda kaynak sınırları, port ayarları ve modüler yapıların kontrolü için .env
dosyaları ile ortam değişkenleri kullanmak, ölçeklenebilirliği artırır.
PORT=3000
NODE_ENV=production
DB_HOST=localhost
Bu yapı sayesinde staging, test ve production ortamlarında hızlı geçiş sağlanır.
4. Kaynak Sınırlandırma ve İzleme
VDS sunucunuzda çalışan diğer servislerin Node.js uygulamasını etkilemesini önlemek için CPU ve RAM sınırları konulabilir.
pm2
ile bellek kullanımı sınırlandırılabilir.htop
,top
,iotop
gibi araçlarla anlık takip yapılabilir.logrotate
ile log büyümeleri kontrol altına alınmalıdır.
5. Dosya ve Cache Optimizasyonu
- Static dosyalar (CSS, JS, görseller) Node.js üzerinden değil, doğrudan NGINX veya CDN üzerinden sunulmalıdır.
- Node.js içinde
compression
modülü ile gzip desteği sağlanabilir. - Redis veya Memcached gibi servislerle API yanıtları için cache katmanı eklenebilir.
6. Güvenlik Katmanları
- Helmet gibi güvenlik modülleri ile HTTP başlıkları sertleştirilebilir.
- Rate limiting ile brute-force saldırıları azaltılabilir.
- SSL sertifikaları Let’s Encrypt üzerinden kurulmalı ve otomatik yenilenmelidir.
7. Loglama ve Hata Yönetimi
- PM2 logları döngüsel olarak yönetilmeli (logrotate).
- Hatalar için
winston
,morgan
,sentry
gibi loglama sistemleri entegre edilmelidir. - Anlık bildirim ve uyarı sistemleri kurulmalıdır.
Sonuç
VDS üzerinde Node.js hosting, doğru yapılandırmalar ile yüksek performanslı, ölçeklenebilir ve güvenli bir çözüm sunar. PM2, NGINX, çevresel değişkenler ve cache mekanizmaları gibi unsurlar uygulamanızın erişilebilirliğini ve verimliliğini doğrudan etkiler.