Öncelikle Node.js platformunun avantajlarından bahsetmek istiyorum;
Geliştiricinin sunucu ve istemci tarafında kodların tamamını JavaScript programlama dili ile geliştirmesi Full Stack Dev mantığı ile baktığımızıda büyük rahatlık diyebilirim.
Veri transferleri, forum doğrulamalar, Veritabanı (MongoDB veya herhangi bir NoSQL) CRUD işlemleri, DOM elementleri ile etkileşim. kullanılan template motorları bunların hepsinin JavaScript ile yazmak ve bir uygulama ortaya çıkarmak çok keyifli.
Sunucu yapılandırması Apache, Nginx ya da Tomcat’te olduğu gibi bir kabusa dönüşmüyor çok fazla bir bileşen değişen yok. Oldukça kolay ve pratik. Tek bir satır kod ile HTTP sunucunuzu hizmete açabiliyorsunuz.
Olayları singlethread olarak ele alması benim en beğendiğim tarafı. Beraberinde hız, basitlik ve yüksek performansı beraberinde getiriyor.
NPM ekosistemi ise şu an dünyadaki en geniş paket içeriğine sahip olması da yaşayan bir platformun olduğunu gösteriyor.
NPM den sonra 2. JAVA 3. PHP bu sırayı takip ediyor.
Gelelim Dezavantajlarına;
Yukarıda saydığım iyi taraflarının dışında eksi yönleri her platformda olduğu gibi var.
Mesela compile sırasında veri tipi kontrolü yapamamak matematiksel hesap uygulamalarında sizi kanser edebilir. Tabi Uzman bir geliştirici iseniz bunun da bir yolunu bulabilirsiniz burada belirtmekte fayda var.
Uygulamanız için uygun paketi NPM üzerinden bulup eklemek basit olduğu kadar karmaşık gelebilir. Çünkü aynı görevi üstlenen paketin yüzlerce farklı varyasyonu olabiliyor bazı konularda. Acaba hangisini kullanayım dediğinizin zamanlar olacak. Bir kez başıma geldi. Aynı paket bir sonraki versiyonunda baştan aşağı değişmişti. Yazdığım tüm kodlar çöp kutusuna gönderildi oturup saatlerce tekrar refactoring yaptım.
PHP, Ruby On Rails, JAVA gibi dillerden JavaScript dünyasına geçen geliştiricilerin en sık takıldığı konu asenkron mantığıdır. Asenkron program akışı mucizeden öteye geçerek bazılarımızda kabus olarak rüyalarımıza girebilir. İç içe girmiş callback functionlar anlatmama gerek yok bunu bizzat yaşamanızı tavsiye ediyorum.
Meslektaşlarımla mikro servisler hakkında konuşuyorduk, NodeJS performansı ve geleceği hakkında fikirlerimi belirttim. CPU dan çok RAM kullanma gereği duyması diğer programlama dillerine nazaran performan gerektiren masaüstü uygulamarda sınıfta kalıyor. Buna canlı örnek vermek gerekirse: Yeni nesil editörler, Atom, VsCode ve electron.js ile masaüstü gibi görünen browser pencereli SPA uygulamalar verilebilir. Bu fikrime katılanlar da oldu katılmayanlar da.
Yukarıda yazdıklarım sizi bekleyen en kötü şeyler. Onun dışında üzülmeyin bu kadar bir gün hepimiz öleceğiz zaten :) kahvenizi tazeleyin devam ediyoruz. :)
Bilmeyenler için bir açıklama gereği duyuyorum sıkça sorulan bir kavram:
Asynchronous, eş zamanlı olmayan, başlama ve bitme anları başka olan (olaylar) yani synchronous un karşıtı eş zamanlı olmayan demek.