Merhabalar,
R10.net üzerinde böyle bir konuya ihtiyaç olduğu için açmak istedim. Konu üzerinde en azından yeni başlayanların birçok sorusuna cevap bulabileceğini ve rehber olabileceğini düşünüyorum. Hazırsak, başayalım!
PHP'nin tarihi:
İlk çıkış tarihi 1995 yılında olan PHP, çok uzun zamandır yaşamını sürdürüyor. Birçok dev firmanın kullandığı gibi Türkiye'de de yaygın olarak kullanılıyor. Genel amacı websitelerinde kullanılmak olan PHP'nin, API mantığında geliştirildiğinde birçok platforma can veriyor. Geniş bir topluluk ağı olan PHP, Wordpress gibi hazır yapılarla da destekleniyor ve kullanılıyor.
NodeJS'in tarihi:
Javascript'i özellikle web geliştiricileri dahil olmak üzere tüm geliştiriciler bilirler. "Öğrenilmeden yazılan dil" olarakta nitelendirilir. Javascript ilk olarak Flash'ın yerine Front-End üzerinde kullanılmak üzere çıkarılmış olsa da, 2008 yılında Google V8 Javascript Engine ile Back-End'de kullanılabilir hale geldi. Ve NodeJS ile anıldı. Buna ek olarak Javascript, bu gelişme ile beraber neredeyse bütün platformlara geliştirme yapabilecek hale geldi. NodeJS'i öğrenmek isteyen bir geliştirici, Javascript'i baştan sona öğrenmesi gerekir.
İki dilinde Back-End'de konumlandırıldığını düşündüğümüzde kendi içlerinde artıları ve eksileri bulunuyor. Bunlara girişmeden önce performans verileriyle ilgili bir görseli burada paylaşmak istiyorum:
Görselde dillerin birbirleri arasındaki performans farklılıkları var. Saniye başına alabildikleri maksimum sorgu sayıları üzerinden hazırlanan görselde, Go dili birinci sırada gözükürken, ikinci sırada NodeJS bulunmaktadır. NodeJS ile PHP arasında neredeyse 2 katı fark bulunuyor. NodeJS 3614 RPS alırken, PHP 1773 RPS ile geride kalıyor.
Bu görselde ise başlangıçta ufak isteklerde NodeJS düşük bir başlangıç yapsa da sayı arttıkça performası ciddi şekilde eline alıyor. (Süreler milisaniye cinsindendir.)
Neden NodeJS ? Yenilikçilik ve Genişlik: NodeJS çıktığı zamanlardan bu yana büyük başarılar ve yollar katetti. Toplulukları tarafından da çok fazla desteklenen NodeJS birçok farklı alanda yeni kapılar açtı. React, React Native, Vue, ElectronJS gibi yapılar sayesinde Javascript ile neredeyse tüm platformlara uygulama geliştirebiliyoruz artık.
Performans: Üstteki görselde gözüktüğü gibi NodeJS performans odaklı yaklaşımda çok daha fazla başarılı.
Ölçeklenebilirlik: Mikroservis mimarileri ve Docker gibi araçlar sayesinde NodeJS uygulamaları çok basit bir şekilde ölçeklenebilir hale geldi. Bu ölçeklenebilirlik yapısı sayesinde ufak tüketimlerle büyük işler başarabiliyor.
Uyumluluk: Birçok platform üzerinden desteklenen NodeJS ile neredeyse tüm platformlarda çalışabilir veya uygulama çıkartabilirsiniz.
Tüketim Maliyetleri: NodeJS ile beraber büyük işler, küçük makinelerle büyük işler başarabilirsiniz. Basit ve güç tüketmeyen deployment araçları ile yayınlayabilirsiniz.
JSON: JSON'u neredeyse tüm geliştiriciler bilir. Özellikle API ile haberleşmeler arasında kullanılan JSON yapısı, başka dillerde bir çevirici yapısıyla okunurken NodeJS'te kendisi tarafından okunabilir. Çünkü JSON = Javascript demektir.
Neden PHP ? Kolay Yazım: Genel programlama dillerine hakim olan bir geliştirici, PHP'ye kolay adapte olabilir. Klasik programlama yapısına sahiptir. Javascript'te bunu yapabilmek için Typescript yapısı kullanılması gerekir. Son ES6 ile güncellemeler yapılsa da hala yeteri kadar klasik değil.
Yayınlama: LAMPP, XAMP veya Apache kurulu bir sunucuda kolaylıkla çalıştırılabilir. Neredeyse bütün sunucu firmalarının sağladığı hosting paketleri içerisinde PHP kullanılabilir. Bu sayede ekstra olarak sunucu konfigürasyonları yapmanız gerekmez.
Popülerlik: Şu anda Github ve Stackoverflow verilerinde NodeJS birinci sırada gözükse de, hala en çok yayındaki sitede bulunan dil PHP'dir.
Wordpress: Neredeyse her insanın duyduğu bir yapı olan Wordpress, PHP ile geliştirilmiştir. PHP bilen bir kişi, Wordpress üzerinde de rahatlıkla değişiklikler yapabilir.
NodeJS'in Artıları:
- Performans odaklı uygulamalarda çok başarılıdır.
- Canlı veri akışının olduğu uygulamalar için neredeyse tek seçenektir.(Websocket)
- Öğrenme süreçleri ne kadar zor olsa da geliştirme süreçleri çok hızlıdır.
- Tek dil ile hem Front-End hem de Back-End geliştirmesi yapabilirsiniz.(MERN, MEVN, MEAN)
- MongoDB ve NoSQL veritabanları sayesinde verilerinizi JSON olarak saklayıp, JSON olarak rahatlıkla okuyabilirsiniz.
NodeJS'in Eksileri:
- Hosting paketleri sunucu paketlerine göre daha uygun fiyatlıdır. NodeJS bir hosting üzerinde çalışmaz.(Bazı hosting firmaları NodeJS desteği sağladığını biliyorum) Bu yüzden bir sunucuya ihtiyacı vardır.(Dedicated, VDS, VPS)
- Asenkron bir dil yapısına sahip olduğu için canı sıkılan bir çocuk gibi davranabilir. İstediği fonksiyonu istediği zaman çalıştırabilir. Bu başlangıçta geliştiriciler için zor gözükse de doğru kullanıldığında avantajdır.
- Yazması zordur. Klasik bir dil gibi değildir.
- Yayınlamak için sunucu konfigürasyonları gerektirir. Hostinglerde çalışmadığı için sunucu firmaları hazır sistem vermesi zordur.
PHP'nin Artıları:
- Yazımı kolaydır. Klasik geliştiriciler rahatlıkla yazabilir.
- Hosting paketlerinde çalışabildiği için yüksek maliyetli sunucuya ihtiyaç duymaz.
- Wordpress gibi araçlar tarafından desteklenir ve kolaylıkla bir websitesi yapabilir.
- Yayınlamak için hosting yeterli olabilir. Daha öncesinden sunucu şirketleri tarafından hosting paketleri özel konfigüre edildiği için sizin yapmanıza gerek yoktur.
PHP'nin Eksileri:
- Performans için tercih edilmesi doğru değildir.
- Canlı akış uygulamalarında NodeJS'e ihtiyaç duyar.
- Geliştirme süreçleri kolay gibi gözükse de proje büyüdükçe zorlaşır.
Hangisini Tercih Etmeliyim ?
Burada karar biraz yapacağınız projeye özgüdür. Küçük-orta büyüklükteki projeler için PHP tercih edilebilir. Ama proje büyüklüğü orta-üst seviyeye ilerledikçe veya performans odak noktası olduğunda NodeJS tercih edilmelidir. Bunun yanı sıra canlı veri akışının olduğu projelerde yine aynı şekilde NodeJS tercih edilmesi gerekir. Buradaki verilerin birçoğu araştırma olup bazılarında kendi duygu ve düşüncelerime yer edindim. Mesleğime ilk başladığımda PHP ile hareket edip, kendi framework'ümü hazırlamıştım. OOP, MVC, Design Patterns gibi birçok veriyi yemiş yutmuştum. Daha sonrasında NodeJS ile tanıştıktan sonra PHP yazmayı bırakın, yazmayı unuttum denebilir. Tabiki okuduğumu anlıyorum ama yazmak istemiyorum

PHP konusu Türkiye'de anlamadığım bir şekilde çok yaygın. Bunun en büyük destekçilerinden birisi şüphesiz Wordpress. Ancak iş piyasasında uzun zamandır Javascript hükümdarlığını sürdürüyor. Açılan iş ilanları ve geliştirilen projelere baktığımda bu şekilde gözlemliyorum. Ancak yine yurtdışına göre PHP hakimiyeti sürüyor. R10'da bu daha hissedilebilir halde
Eğer amacınız sadece websitesi geliştirmek ve yukarıdaki bahsettiğim hususlar ise PHP sizin için yeterli olur. Ancak daha büyük işler yapmak, daha fazla noktaya değinebilmek isterseniz NodeJS'i seçmeniz gerekir. Umarım başarılı bir yazı olmuştur ve işinizi görür. Yeni başlayan arkadaşlar veya başlamak isteyenler için güzel içerik olur.