Node.js Üretim Altyapısı Nasıl Optimize Edilir: 2025 En İyi Uygulamalar

Günlük milyonlarca isteği işleyen, savaşta test edilmiş altyapımızdan Node.js üretim dağıtımının en iyi uygulamaları.

Forward Email'de, Node.js üretim ortamı kurulumumuzu mükemmelleştirmek için yıllar harcadık. Bu kapsamlı kılavuz, savaşta test edilmiş Node.js üretim dağıtım en iyi uygulamalarımızı paylaşarak, performans optimizasyonuna, izlemeye ve Node.js uygulamalarını milyonlarca günlük işlemi idare edecek şekilde ölçeklendirme konusunda öğrendiğimiz derslere odaklanıyor.

%573 Tek Çekirdek Performans Optimizasyon Devrimimiz

Intel'den AMD Ryzen işlemcilere geçtiğimizde, %573 performans iyileştirmesi Node.js uygulamalarımızda. Bu sadece küçük bir iyileştirme değildi; Node.js uygulamalarımızın üretimde nasıl performans gösterdiğini temelden değiştirdi ve herhangi bir Node.js uygulaması için tek çekirdek performans iyileştirmesinin önemini gösteriyor.

[!TIP] Node.js üretim dağıtımı en iyi uygulamaları için donanım seçimi kritik öneme sahiptir. JavaScript yürütmesi tek iş parçacıklı olduğundan, tek çekirdek performansı Node.js uygulamaları için çok önemli olduğundan, AMD Ryzen kullanılabilirliği için DataPacket barındırmayı özellikle seçtik.

Node.js için Tek Çekirdek Performans Optimizasyonunun Önemi

Intel'den AMD Ryzen'a geçişimiz şu sonuçları verdi:

  • %573 performans iyileştirmesi talep işleme sırasında (belgelenmiştir) durum sayfamızın GitHub Sorunu #1519)
  • İşlem gecikmeleri ortadan kaldırıldı (bahsedilen) neredeyse anında yanıtlar GitHub Sorunu #298)
  • Daha iyi fiyat-performans oranı Node.js üretim ortamları için
  • Geliştirilmiş yanıt süreleri tüm uygulama uç noktalarımızda

Performans artışı o kadar önemliydi ki artık AMD Ryzen işlemcilerini, ister web uygulamaları, ister API'ler, ister mikro hizmetler veya başka herhangi bir Node.js iş yükü çalıştırıyor olun, herhangi bir ciddi Node.js üretim dağıtımı için olmazsa olmaz olarak görüyoruz.

Altyapı seçeneklerimiz hakkında daha fazla bilgi için şuraya göz atın:

Node.js Üretim Ortamı Kurulumu: Teknoloji Yığını

Node.js üretim dağıtım en iyi uygulamalarımız, yılların üretim deneyimine dayalı bilinçli teknoloji seçimlerini içerir. İşte kullandığımız şey ve bu seçimlerin herhangi bir Node.js uygulamasına neden uygulandığı:

Paket Yöneticisi: Üretim Verimliliği için pnpm

Ne kullanıyoruz: pnpm (sabitlenmiş versiyon)

Node.js üretim ortamı kurulumumuz için npm ve yarn yerine pnpm'yi seçtik çünkü:

  • Daha hızlı kurulum süreleri CI/CD boru hatlarında
  • Disk alanı verimliliği sert bağlantı yoluyla
  • Sıkı bağımlılık çözümü hayalet bağımlılıkları önleyen
  • Daha iyi performans üretim dağıtımlarında

[!NOT] Node.js üretim dağıtım en iyi uygulamalarımızın bir parçası olarak, tüm ortamlarda ve ekip üyelerinin makinelerinde tutarlı davranışı garantilemek için pnpm gibi kritik araçların tam sürümlerini sabitliyoruz.

Uygulama detayları:

Web Çerçevesi: Modern Node.js Üretimi için Koa

Ne kullanıyoruz:

Node.js üretim altyapımız için Express yerine Koa'yı seçtik çünkü modern async/await desteği ve daha temiz ara yazılım bileşimi vardı. Kurucumuz Nick Baugh hem Express'e hem de Koa'ya katkıda bulunarak üretim kullanımı için her iki çerçeveye dair derinlemesine bir içgörü sağladı.

Bu kalıplar, REST API'leri, GraphQL sunucuları, web uygulamaları veya mikro hizmetler oluşturuyor olmanızdan bağımsız olarak geçerlidir.

Uygulama örneklerimiz:

Arka Plan İş İşleme: Üretim Güvenilirliği için Bree

Ne kullanıyoruz: bree zamanlayıcı

Bree'yi oluşturduk ve sürdürdük çünkü mevcut iş zamanlayıcıları, üretim Node.js ortamlarında çalışan iş parçacığı desteği ve modern JavaScript özellikleri için ihtiyaçlarımızı karşılamıyordu. Bu, arka plan işleme, zamanlanmış görevler veya çalışan iş parçacıklarına ihtiyaç duyan tüm Node.js uygulamaları için geçerlidir.

Uygulama örneklerimiz:

Hata İşleme: Üretim Güvenilirliği için @hapi/boom

Ne kullanıyoruz: @hapi/boom

Node.js üretim uygulamalarımızda yapılandırılmış hata yanıtları için @hapi/boom kullanıyoruz. Bu desen, tutarlı hata işleme gerektiren herhangi bir Node.js uygulaması için işe yarar.

Uygulama örneklerimiz:

Üretimde Node.js Uygulamaları Nasıl İzlenir

Üretimde Node.js uygulamalarını izleme yaklaşımımız, uygulamaları ölçeklenebilir şekilde çalıştırmanın yıllar sürmesiyle gelişti. Herhangi bir Node.js uygulaması için güvenilirlik ve performansı garantilemek amacıyla izlemeyi birden fazla katmanda uyguluyoruz.

Sistem Düzeyinde Node.js Üretim İzleme

Temel uygulamamız: helpers/monitor-server.js

Ne kullanıyoruz: node-os-utils

Üretim izleme eşiklerimiz (gerçek üretim kodumuzdan):

  • 2GB yığın boyutu sınırı otomatik uyarılarla
  • %25 bellek kullanımı uyarı eşiği
  • %80 CPU kullanımı uyarı eşiği
  • %75 disk kullanımı uyarı eşiği

[!UYARI] Bu eşikler, belirli donanım yapılandırmamız için çalışır. Node.js üretim izlemesini uygularken, tam mantığı anlamak ve değerleri kurulumunuza göre uyarlamak için monitor-server.js uygulamamızı inceleyin.

Node.js Üretimi için Uygulama Düzeyinde İzleme

Hata sınıflandırmamız: helpers/is-code-bug.js

Bu yardımcı şunları birbirinden ayırır:

  • Gerçek kod hataları acil müdahale gerektiren
  • Kullanıcı hataları beklenen davranışlardır
  • Harici hizmet arızaları kontrol edemediğimiz

Bu desen tüm Node.js uygulamalarına uygulanabilir - web uygulamaları, API'ler, mikro hizmetler veya arka plan hizmetleri.

Günlük kaydı uygulamamız: helpers/logger.js

Node.js üretim ortamımızda yararlı hata ayıklama yeteneklerini korurken hassas bilgileri korumak için kapsamlı alan düzenlemesi uyguluyoruz.

Uygulamaya Özel İzleme

Sunucu uygulamalarımız:

Kuyruk izleme: Kaynak tükenmesini önlemek için istek işleme için 5 GB kuyruk limitleri ve 180 saniyelik zaman aşımı süreleri uyguluyoruz. Bu kalıplar kuyrukları veya arka plan işlemesi olan tüm Node.js uygulamaları için geçerlidir.

PM2 Sağlık Kontrolleriyle Node.js Üretim İzleme

Yıllar süren üretim deneyimimiz sayesinde Node.js üretim ortamı kurulumumuzu PM2 ile geliştirdik. PM2 sağlık kontrollerimiz herhangi bir Node.js uygulamasında güvenilirliği korumak için olmazsa olmazdır.

PM2 Sağlık Kontrol Sistemimiz

Temel uygulamamız: jobs/check-pm2.js

PM2 sağlık kontrolleri içeren Node.js üretim izleme sistemimiz şunları içerir:

  • Her 20 dakikada bir çalışır cron zamanlaması yoluyla
  • Minimum 15 dakika çalışma süresi gerektirir sağlıklı bir süreci değerlendirmeden önce
  • İşlem durumunu ve bellek kullanımını doğrular
  • Başarısız olan işlemleri otomatik olarak yeniden başlatır
  • Yeniden başlatma döngülerini önler akıllı sağlık kontrolü yoluyla

[!CAUTION] For Node.js production deployment best practices, we require 15+ minutes uptime before considering a process healthy to avoid restart loops. This prevents cascading failures when processes are struggling with memory or other issues.

PM2 Üretim Yapılandırmamız

Ekosistem kurulumumuz: Node.js üretim ortamı kurulumu için sunucu başlangıç dosyalarımızı inceleyin:

Bu kalıplar, Express uygulamaları, Koa sunucuları, GraphQL API'leri veya diğer herhangi bir Node.js uygulamasını çalıştırıyor olmanıza bakılmaksızın geçerlidir.

Otomatik PM2 Dağıtımı

PM2 dağıtımı: ansible/playbooks/node.yml

Tüm sunucularımızda tutarlı Node.js üretim dağıtımlarını garantilemek için tüm PM2 kurulumumuzu Ansible aracılığıyla otomatikleştiriyoruz.

Üretim Hatası İşleme ve Sınıflandırma Sistemi

En değerli Node.js üretim dağıtım en iyi uygulamalarımızdan biri, herhangi bir Node.js uygulamasına uygulanabilen akıllı hata sınıflandırmasıdır:

Üretim için isCodeBug Uygulamamız

Kaynak: helpers/is-code-bug.js

Bu yardımcı, üretimdeki Node.js uygulamaları için akıllı hata sınıflandırması sağlar:

  • Gerçek hatalara öncelik verin kullanıcı hataları
  • Olay yanıtımızı iyileştirin gerçek sorunlara odaklanarak
  • Uyarı yorgunluğunu azaltın beklenen kullanıcı hatalarından
  • Daha iyi anlamak uygulama ve kullanıcı kaynaklı sorunlar

Bu model, e-ticaret siteleri, SaaS platformları, API'ler veya mikro hizmetler oluşturuyor olmanız fark etmeksizin tüm Node.js uygulamaları için işe yarar.

Üretim Kaydımızla Entegrasyon

Kaydedici entegrasyonumuz: helpers/logger.js

Kaydedicilerimiz şunları kullanır: isCodeBug Node.js üretim ortamımızda gürültüyü filtreleyerek gerçek sorunlar hakkında bildirim aldığımızdan emin olmak için uyarı seviyelerini ve alan düzenlemelerini belirlemek.

Hata işleme modellerimiz hakkında daha fazla bilgi edinin:

v8-profiler-next ve cpupro ile Gelişmiş Performans Hata Ayıklama

Üretim ortamımızda yığın anlık görüntülerini analiz etmek ve OOM (Bellek Yetersiz) sorunlarını, performans darboğazlarını ve Node.js bellek sorunlarını ayıklamak için gelişmiş profil oluşturma araçları kullanıyoruz. Bu araçlar, bellek sızıntıları veya performans sorunları yaşayan herhangi bir Node.js uygulaması için olmazsa olmazdır.

Node.js Üretimi için Profilleme Yaklaşımımız

Önerdiğimiz araçlar:

  • v8-profiler-next - Yığın anlık görüntüleri ve CPU profilleri oluşturmak için
  • cpupro - CPU profillerini ve yığın anlık görüntülerini analiz etmek için

[!TIP] Node.js uygulamalarımız için eksiksiz bir performans hata ayıklama iş akışı oluşturmak amacıyla v8-profiler-next ve cpupro'yu birlikte kullanıyoruz. Bu kombinasyon, bellek sızıntılarını, performans darboğazlarını belirlememize ve üretim kodumuzu optimize etmemize yardımcı oluyor.

Yığın Anlık Görüntü Analizini Nasıl Uyguluyoruz

İzleme uygulamamız: helpers/monitor-server.js

Üretim izlememiz, bellek eşikleri aşıldığında otomatik yığın anlık görüntüsü oluşturmayı içerir. Bu, uygulama çökmelerine neden olmadan önce OOM sorunlarını gidermemize yardımcı olur.

Temel uygulama kalıpları:

  • Otomatik anlık görüntüler yığın boyutu 2 GB eşiğini aştığında
  • Sinyal tabanlı profilleme üretimde talep üzerine analiz için
  • Saklama politikaları anlık görüntü depolamayı yönetmek için
  • Temizlik işlerimizle entegrasyon otomatik bakım için

Performans Hata Ayıklama İş Akışı

Gerçek uygulamamızı inceleyin:

Yığın anlık görüntü analizi için:

  1. v8-profiler-next'i yükleyin anlık görüntü oluşturma için
  2. cpupro'yu kullan oluşturulan anlık görüntüleri analiz etmek için
  3. İzleme eşiklerini uygulayın monitor-serv.js'imize benzer
  4. Otomatik temizlemeyi ayarlayın anlık görüntü depolamayı yönetmek için
  5. Sinyal işleyicileri oluşturun üretimde talep üzerine profilleme için

CPU profillemesi için:

  1. CPU profilleri oluşturun yüksek yük dönemlerinde
  2. cpupro ile analiz edin darboğazları belirlemek
  3. Sıcak yollara odaklanın ve optimizasyon fırsatları
  4. Önce/sonra izle performans iyileştirmeleri

[!UYARI] Yığın anlık görüntüleri ve CPU profilleri oluşturmak performansı etkileyebilir. Kısıtlamanın uygulanmasını ve yalnızca belirli sorunları araştırırken veya bakım pencereleri sırasında profillemenin etkinleştirilmesini öneririz.

Üretim İzleme Sistemimizle Entegrasyon

Profilleme araçlarımız daha geniş izleme stratejimizle bütünleşir:

  • Otomatik tetikleme bellek/CPU eşiklerine dayalı
  • Uyarı entegrasyonu performans sorunları tespit edildiğinde
  • Tarihsel analiz zaman içinde performans eğilimlerini izlemek için
  • Uygulama ölçümleriyle korelasyon kapsamlı hata ayıklama için

Bu yaklaşım, bellek sızıntılarını tespit edip çözmemize, sıcak kod yollarını optimize etmemize ve Node.js üretim ortamımızda istikrarlı performansı korumamıza yardımcı oldu.

Node.js Üretim Altyapısı Güvenliği

Ansible otomasyonu aracılığıyla Node.js üretim altyapımız için kapsamlı güvenlik uyguluyoruz. Bu uygulamalar herhangi bir Node.js uygulaması için geçerlidir:

Node.js Üretimi için Sistem Düzeyinde Güvenlik

Ansible uygulamamız: ansible/playbooks/security.yml

Node.js üretim ortamları için temel güvenlik önlemlerimiz:

  • Takas devre dışı bırakıldı hassas verilerin diske yazılmasını önlemek için
  • Çekirdek dökümleri devre dışı bırakıldı hassas bilgileri içeren bellek dökümlerini önlemek için
  • USB depolama engellendi yetkisiz veri erişimini engellemek için
  • Çekirdek parametre ayarı hem güvenlik hem de performans için

[!UYARI] Node.js üretim dağıtım en iyi uygulamalarını uygularken, takası devre dışı bırakmak, uygulamanız kullanılabilir RAM'i aşarsa bellek yetersizliği nedeniyle ölümlere neden olabilir. Bellek kullanımını dikkatlice izliyoruz ve sunucularımızı uygun şekilde boyutlandırıyoruz.

Node.js Uygulamaları için Uygulama Güvenliği

Günlük alanı düzenlememiz: helpers/logger.js

Şifreler, belirteçler, API anahtarları ve kişisel bilgiler dahil olmak üzere hassas alanları günlüklerden sansürlüyoruz. Bu, herhangi bir Node.js üretim ortamında hata ayıklama yeteneklerini korurken kullanıcı gizliliğini korur.

Altyapı Güvenlik Otomasyonu

Node.js üretimi için eksiksiz Ansible kurulumumuz:

Güvenlik İçeriğimiz

Güvenlik yaklaşımımız hakkında daha fazla bilgi edinin:

Node.js Uygulamaları için Veritabanı Mimarisi

Node.js uygulamalarımız için optimize edilmiş bir hibrit veritabanı yaklaşımı kullanıyoruz. Bu kalıplar herhangi bir Node.js uygulamasına uyarlanabilir:

Node.js Üretimi için SQLite Uygulaması

Ne kullanıyoruz:

Yapılandırmamız: ansible/playbooks/sqlite.yml

Node.js uygulamalarımızda kullanıcıya özel veriler için SQLite kullanıyoruz çünkü şunları sağlıyor:

  • Veri izolasyonu kullanıcı/kiracı başına
  • Daha iyi performans tek kullanıcı sorguları için
  • Basitleştirilmiş yedekleme ve göç
  • Azaltılmış karmaşıklık paylaşılan veritabanlarına kıyasla

Bu model, SaaS uygulamaları, çok kiracılı sistemler veya veri izolasyonuna ihtiyaç duyan herhangi bir Node.js uygulaması için iyi çalışır.

Node.js Üretimi için MongoDB Uygulaması

Ne kullanıyoruz:

Kurulum uygulamamız: helpers/setup-mongoose.js

Yapılandırmamız: config/mongoose.js

Node.js üretim ortamımızda uygulama verileri için MongoDB'yi kullanıyoruz çünkü şunları sağlıyor:

  • Esnek şema veri yapılarını geliştirmek için
  • Daha iyi performans karmaşık sorgular için
  • Yatay ölçekleme yetenekler
  • Zengin sorgu dili

[!NOTE] Hibrit yaklaşımımız, belirli kullanım durumumuza göre optimize edilir. Bu yaklaşımın Node.js uygulama ihtiyaçlarınıza uyup uymadığını anlamak için kod tabanındaki gerçek veritabanı kullanım modellerimizi inceleyin.

Node.js Üretim Arkaplan İş İşleme

Güvenilir Node.js üretim dağıtımı için arka plan iş mimarimizi Bree etrafında oluşturduk. Bu, arka plan işleme ihtiyacı olan herhangi bir Node.js uygulaması için geçerlidir:

Üretim için Bree Sunucu Kurulumumuz

Ana uygulamamız: bree.js

Ansible dağıtımımız: ansible/playbooks/bree.yml

Üretim İş Örnekleri

Sağlık takibi: jobs/check-pm2.js

Temizleme otomasyonu: jobs/cleanup-tmp.js

Tüm işlerimiz: Tam iş dizinimize göz atın

Bu kalıplar, aşağıdakilere ihtiyaç duyan herhangi bir Node.js uygulaması için geçerlidir:

  • Zamanlanmış görevler (veri işleme, raporlama, temizleme)
  • Arkaplan işleme (görüntü yeniden boyutlandırma, e-posta gönderme, veri aktarımı)
  • Sağlık izleme ve bakımı
  • CPU yoğun görevler için çalışan iş parçacığı kullanımı

Node.js Üretimi için İş Planlama Modellerimiz

İş rehberimizdeki gerçek iş planlama kalıplarımızı inceleyerek şunları anlayabilirsiniz:

  • Node.js üretiminde cron benzeri planlamayı nasıl uygularız
  • Hata işleme ve yeniden deneme mantığımız
  • CPU yoğun görevler için çalışan iş parçacıklarını nasıl kullanırız?

Üretim Node.js Uygulamaları için Otomatik Bakım

Yaygın Node.js üretim sorunlarını önlemek için proaktif bakım uygularız. Bu kalıplar herhangi bir Node.js uygulaması için geçerlidir:

Temizleme Uygulamamız

Kaynak: jobs/cleanup-tmp.js

Node.js üretim uygulamalarına yönelik otomatik bakımımız şunları hedefliyor:

  • Geçici dosyalar 24 saatten eski
  • Günlük dosyaları saklama sınırlarının ötesinde
  • Önbellek dosyaları ve geçici veriler
  • Yüklenen dosyalar artık ihtiyaç duyulmayanlar
  • Yığın anlık görüntüleri performans hata ayıklamasından

Bu kalıplar, geçici dosyalar, günlükler veya önbelleğe alınmış veriler üreten tüm Node.js uygulamaları için geçerlidir.

Node.js Üretimi için Disk Alanı Yönetimi

İzleme eşiklerimiz: helpers/monitor-server.js

  • Kuyruk limitleri arka plan işleme için
  • %75 disk kullanımı uyarı eşiği
  • Otomatik temizleme eşikler aşıldığında

Altyapı Bakım Otomasyonu

Node.js üretimi için Ansible otomasyonumuz:

Node.js Üretim Dağıtım Uygulama Kılavuzu

Üretim En İyi Uygulamaları için Gerçek Kodumuzu İnceleyin

Node.js üretim ortamı kurulumu için şu temel dosyalarla başlayın:

  1. Yapılandırma: config/index.js
  2. İzleme: helpers/monitor-server.js
  3. Hata işleme: helpers/is-code-bug.js
  4. Günlük kaydı: helpers/logger.js
  5. İşlem sağlığı: jobs/check-pm2.js

Blog Yazılarımızdan Öğrenin

Node.js üretimi için teknik uygulama kılavuzlarımız:

Node.js Üretimi için Altyapı Otomasyonu

Node.js üretim dağıtımı için inceleyeceğimiz Ansible kılavuzlarımız:

Vaka Çalışmalarımız

Kurumsal uygulamalarımız:

Sonuç: Node.js Üretim Dağıtımı En İyi Uygulamaları

Node.js üretim altyapımız, Node.js uygulamalarının aşağıdakiler aracılığıyla kurumsal düzeyde güvenilirliğe ulaşabileceğini göstermektedir:

  • Kanıtlanmış donanım seçimleri (AMD Ryzen %573 tek çekirdek performans optimizasyonu için)
  • Savaşta test edilmiş Node.js üretim izleme belirli eşikler ve otomatik yanıtlarla
  • Akıllı hata sınıflandırması üretim ortamlarında olay yanıtını iyileştirmek için
  • Gelişmiş performans hata ayıklama v8-profiler-next ve OOM önleme için cpupro ile
  • Kapsamlı güvenlik güçlendirmesi Ansible otomasyonu aracılığıyla
  • Hibrit veritabanı mimarisi uygulama ihtiyaçları için optimize edildi
  • Otomatik bakım yaygın Node.js üretim sorunlarını önlemek için

Önemli çıkarım: Genel en iyi uygulamaları takip etmek yerine gerçek uygulama dosyalarımızı ve blog yazılarımızı inceleyin. Kod tabanımız, herhangi bir Node.js uygulamasına - web uygulamaları, API'ler, mikro hizmetler veya arka plan hizmetleri - uyarlanabilen Node.js üretim dağıtımı için gerçek dünya kalıpları sağlar.

Node.js Üretimi için Tam Kaynak Listesi

Temel Uygulama Dosyalarımız

Sunucu Uygulamalarımız

Altyapı Otomasyonumuz

Teknik Blog Yazılarımız

Kurumsal Vaka Çalışmalarımız