Backend için yeni bir dil arayışı...

Kodla Büyü

kargasa1982

Seçkin Üye
Seçkin Üye
Mesajlar
337
Arkadaşlar herkese merhaba. Uzun yıllardır backend için kullandığım php den artık sıkılmış ve kendimi çok demode hissetmeye başladım. Önerebileceğiniz, mantığı ve yazımı kolay kavranabilen, özellikle verit tabanı işlemlerinde hızlı ve sorunsuz olan, güvenlik yönünden kanıtlanmış, yeni öğrenileceği için de kaynağı bol olmalı :) böyle bir dil sizce ne olmalı?
 
  • Beğen
Tepkiler: omd
Python deneyebilirsiniz. Django ve Flask Framework. Her iki framework u de denedim. Öğrenme hızı her ikisinde de gayet iyi. Hatta büyük denebilecek bir projede Django kullandim. Ihtiyaç duysam yine Django kullanırım.

Denemedim ama backend için golang de çok tercih edilmeye başlandı.

Ve node.js yi burda yazmadan olmaz.
 
Node.js kullanıyorum backend tarafında.
Video streaming, resim işleme veya multithread gerektiren işler yapmıyorsanız, node.js gayet iyi bir seçim. Ki web uygulamalarının büyük çoğunluğu json al json ver işleminden ibaret. Sunucu maliyetini inanılmaz düşürüyor(5 dolarlık tek işlemcili bir sunucu ile saniyede binlerce isteğe cevap verebilir), asenkron yapısından dolayı tıkanmıyor, json yapısı ile doğal uyumluluğundan dolayı response hızında tatminkâr sonuçlar elde ediliyor.

Bugünün teknolojisi olarak node.js tavsiye ediyorum. Ama yarının teknolojisi derseniz, go veya rust derim. Rust webassembly dolayısıyla frontend'de de javascriptin yerine geçecek büyük olasılıkla. Rust öğrenmek iyi bir yatırım olur gibi.
 
Bir ekleme; önerdiğiniz dillere yeni başlamak isteyenler için tavsiye edebileceğiniz kaynakları da belirtirseniz sevinirim :D
 
rust için bir ara baktım kendi sitesinde dokümanı vardı, yine duruyor sitesinde. https://doc.rust-lang.org/book/
önemli olan bence bir dile motive olabilmek, doğal olarak bazen neden kendimi yeni bir dil öğrenmek için zorlayayım diye arada düşünüyor insan.
 
Amaca odaklanmak lazım.Java eskiden beri vardı şimdi adı Kotlin oldu.Artik yeni dil üretmekten ziyade kütüphaneleri ve frameworkleri yazılıyor.
 
Node.js kullanıyorum backend tarafında.
Video streaming, resim işleme veya multithread gerektiren işler yapmıyorsanız, node.js gayet iyi bir seçim. Ki web uygulamalarının büyük çoğunluğu json al json ver işleminden ibaret. Sunucu maliyetini inanılmaz düşürüyor(5 dolarlık tek işlemcili bir sunucu ile saniyede binlerce isteğe cevap verebilir), asenkron yapısından dolayı tıkanmıyor, json yapısı ile doğal uyumluluğundan dolayı response hızında tatminkâr sonuçlar elde ediliyor.

Bugünün teknolojisi olarak node.js tavsiye ediyorum. Ama yarının teknolojisi derseniz, go veya rust derim. Rust webassembly dolayısıyla frontend'de de javascriptin yerine geçecek büyük olasılıkla. Rust öğrenmek iyi bir yatırım olur gibi.

Değerli cevaplarınız için teşekkürler. Önerileri incelediğimde #Buzkırıcı hocamızın da dediği gibi hepsi aslında java, tek farkları framework. Eski alışkanlıkların en büyük zorluğu sanırım şu framework yapısına bir türlü alışamamak. Yaptığım sistemlerde RESTAPI haricinde neredeyse hiç framework kullanmıyorum :)

Node.js olayını hafta sonu inceleme fırsatım oldu. Sanırım tüm işlemler eklentiler üzerinden yürüyor, ve neredeyse her işlev için (file upload vs) eklentilere ihtiyaç var. Localde çalışmasında bir sıkıntı yok, ama örneğin şuan kullandığım sunucuda 10 a yakın büyük web sitesi var ve bunların şuan ki gibi dns, veritabanı, ftp, ssl, güvenlik vb gibi yönetimlerini de ele alacak olursak Node.js çok fazla komplike ve hassas geldi bana. Belki daha kolay sunucu üzerinde kullanımı vardır ama, ben 2 günlük serüvende keşfedemedim.

Bir başka konu da Node.js projelerinde genellikle MongoDB kullanılmış, MySQL performansı nasıl acaba, tecrübe eden var mı? Özellikle aşağıdaki gibi boyutlara sahip bir sistem için.

10a1aab
 
Tek bir dil ile her şeyi yapayım mantığı demode oldu hocam. Projeler artık Microservice mantığı üzerine inşa ediliyor. Projenin bir kısmı PHP ile yazılırken, başka bir parçası Python ile yazılabiliyor bu mimaride. Proje yayına alındıktan sonra yeni bir modül gerektiğinde komple tüm altyapıyı elden geçirme zorunluluğu kalktı bu yapıda. Sahip olduğunuz her bilgi bu tür projelerde bir artıdır. Microservice ile ilgili bir makale bırakıyorum. https://gokhana.medium.com/microservice-mimarisi-nedir-microservice-mimarisine-giriş-948e30cf65b1
 
Arkadaşlar herkese merhaba. Uzun yıllardır backend için kullandığım php den artık sıkılmış ve kendimi çok demode hissetmeye başladım. Önerebileceğiniz, mantığı ve yazımı kolay kavranabilen, özellikle verit tabanı işlemlerinde hızlı ve sorunsuz olan, güvenlik yönünden kanıtlanmış, yeni öğrenileceği için de kaynağı bol olmalı :) böyle bir dil sizce ne olmalı?
Django hocam pythonun rahatlığını ve gücünü hissediyorsuz
 
Değerli cevaplarınız için teşekkürler. Önerileri incelediğimde #Buzkırıcı hocamızın da dediği gibi hepsi aslında java, tek farkları framework. Eski alışkanlıkların en büyük zorluğu sanırım şu framework yapısına bir türlü alışamamak. Yaptığım sistemlerde RESTAPI haricinde neredeyse hiç framework kullanmıyorum :)

Node.js olayını hafta sonu inceleme fırsatım oldu. Sanırım tüm işlemler eklentiler üzerinden yürüyor, ve neredeyse her işlev için (file upload vs) eklentilere ihtiyaç var. Localde çalışmasında bir sıkıntı yok, ama örneğin şuan kullandığım sunucuda 10 a yakın büyük web sitesi var ve bunların şuan ki gibi dns, veritabanı, ftp, ssl, güvenlik vb gibi yönetimlerini de ele alacak olursak Node.js çok fazla komplike ve hassas geldi bana. Belki daha kolay sunucu üzerinde kullanımı vardır ama, ben 2 günlük serüvende keşfedemedim.

Bir başka konu da Node.js projelerinde genellikle MongoDB kullanılmış, MySQL performansı nasıl acaba, tecrübe eden var mı? Özellikle aşağıdaki gibi boyutlara sahip bir sistem için.

10a1aab

Hocam php+mysql uyumluluğu efsane. Nodejs de mongodb gibi nosql db'lerle iyi çalışıyor. CAP teoremine göre sql'in de nosql'in de artıları var. Kullanılan iş modeline göre seçmek gerekiyor. e-ticaret sitesi, bankacılık işlemler vs. yapılıyorsa sql kullanmak mantıklıyken, sosyal medya, oyun, veri toplama, metrikleri alma vs. gibi şeyler yapılıyorsa nosql(hatta redis) mantıklı.

Php'nin çalıştığı makineler 4-8 çekirdekli, ram'i yüksek sunucular oluyor. Node.js tek çekirdek ve düşük ram ile çalışıyor. Ama sunucunuzda çalışan web sitelerinin trafiği nedir, mysql'e binen yük nedir bilmiyorum. Eklediğiniz resim görünmüyor maalesef. Over engineering hatasına düşmeyelim burada. Hiç kullanmayacağımız özelliklere göre değerlendirme hatası yapmak yanlış olur. Ufak ve orta ölçekli projelerde nodejs+mysql de gayet iş görecektir. Daha önce bir projede nodejs+sqlite kullandım, küçük bir projeydi ama şıkır şıkır çalışıyor. sqlite'ın kaynak tüketimi de mysql'e göre az.

Node.js ve mongodb ikilisi kullanılırken, vagrant, nginx yapılandırmaları ile yatay ölçeklenebilir sistemler kuruluyor. Biliyorsunuz işte, 1cpu 5 dolarlık bir sunucu istekleri karşılamakta yetersiz kalmaya başladığında, sharding yapılıyor ve 1cpu 5 dolarlık yeni sunucu devreye giriyor. Mysql'de veya postgres'de bu işlem var mı, varsa nasıl çalışıyor bilmiyorum. Ama nodejs+mongodb bu açıdan, yüksek kapasiteli sunucu gereksinimi duymadığı için avantaj sağlıyor. Ama buna ihtiyaç duyacak proje çıkarmak nasip olur mu bilmiyorum.(Allah'ım olsun lütfen. :) )

Yani bence alıştıysanız php+mysql işinizi görüyorsa node.js'e bulaşmaya gerek yok bence. Zira php halen geçer akçe. Wordpress dolayısıyla olabilir, en çok ihtiyaç duyulan backend dili sanırım.
 
Tek bir dil ile her şeyi yapayım mantığı demode oldu hocam. Projeler artık Microservice mantığı üzerine inşa ediliyor. Projenin bir kısmı PHP ile yazılırken, başka bir parçası Python ile yazılabiliyor bu mimaride. Proje yayına alındıktan sonra yeni bir modül gerektiğinde komple tüm altyapıyı elden geçirme zorunluluğu kalktı bu yapıda. Sahip olduğunuz her bilgi bu tür projelerde bir artıdır. Microservice ile ilgili bir makale bırakıyorum. https://gokhana.medium.com/microservice-mimarisi-nedir-microservice-mimarisine-giriş-948e30cf65b1

Hocam büyük projelerde microservis mimarisi gerekir mutlaka. Ekiple yapılan projelerde, kim hangi dili biliyorsa onunla ilgili modülü yazar, mikroservis yaklaşımı uygulanabilir.

Ama tek kişi çalışan insanlarız genelde ve tek dil ile her şeyi yapmaya çalışmak durumundayız. Şu kısmı java ile, şu kısmı python ile, şu kısmı php ile yazayım dersek iş ırağa gider, daha da karmaşık bir hal alır.

Tek dil ile de microservis mimarisi uygulanabilir tabii. Modülleri birbirinden yalıtmak gerekiyorsa uygulanabilir.
 
  • Beğen
Tepkiler: omd
İlk olarak Slim ile ilgili bir api örneğine denk gelmiştim. Tabii php tabanlı Slim de python tabanlı flask da mvc mimarisi olmadığından ileride projeye birçok özellik eklemek istenildiğinde proje birden php laravele python da djangoya evriliyor. Ya da başka mvc tabanlı fwlere birde paketler eklendiğinde geriye dönüşü maliyetli olabiliyir. Php için udemy üzerinde cem gündüz adlı arkadaşın kursu çok iyi. Sonrasında ben yine bir arayışa girdim. Yönetilebilir bir paneli olsun istedim. Ve karşıma cms node. Js tabanlı bir sistem olan strapi çıktı. Onun ise kursuna başlamadım henüz. Dediğim gibi hangisi olursa olsun iyi bildiğiniz bir Framework olmalı. Dediğim gibi django ya da node. Js de express de güçlü frameworler.

Tabi birde kullanılan araçlar da önemli. İdeler. Jetbrains firmasının öğrenci ve öğretmenlere ücretsiz sunduğu programlar olmazsa olmaz. Laravel yaziyorsaniz php storm. Python yaziyorsaniz pycharm pro. Go yaziyorsaniz ismini hatırlayamadım. Database kısmında da iyi programları mevcut. Bu programlar insanı kod yazarken teşvik ediyor yardımcı oluyor.

Bunların yanında nsql bir database bilmek yararlı. Aklımda olacağına depoda olsun.
 
Tabii php tabanlı Slim de python tabanlı flask da mvc mimarisi olmadığından ileride projeye birçok özellik eklemek istenildiğinde proje birden php laravele python da djangoya evriliyor.
Ben hep bunun tersini okudum. Django, uygulama geliştikçe daha kısıtlayıcı oluyordu ama öte yandan flask, kendisi de minimal bir sistem sunduğu için, üzerine yeni özellikler eklemek çok daha kolay oluyordu. Örneğin django kullanıcı sistem, django'nun temeli. Dolayısıyla siz kalkıp yeni bir kullanıcı sistemi, auth sistemi oluştururken neredeyse djangoyu yazmış kadar öğreniyorsunuz. Öte yandan flask, çok daha esnek olduğundan, üzerine çok fazla efor sarfetmeden yeni özellikler eklenebiliyor.
 
Başlığı açan yazara cevaben; 10 tane kallavi sistem kurulu iken bunları yeni bir dil üzerine taşımak bayağı büyük cesaret gerektirir. Hani yeni bir dil öğrenmek, yeni framework kullanmak yeni bir proje için çok daha elverişli. Öte yandan ftp gibi iş ve işlemler daha çok web sunucusu değil de sunucu işleri. Detayları bilmiyorum ama php ile çok da göbekten bağları yoktur.
 
Ben hep bunun tersini okudum. Django, uygulama geliştikçe daha kısıtlayıcı oluyordu ama öte yandan flask, kendisi de minimal bir sistem sunduğu için, üzerine yeni özellikler eklemek çok daha kolay oluyordu. Örneğin django kullanıcı sistem, django'nun temeli. Dolayısıyla siz kalkıp yeni bir kullanıcı sistemi, auth sistemi oluştururken neredeyse djangoyu yazmış kadar öğreniyorsunuz. Öte yandan flask, çok daha esnek olduğundan, üzerine çok fazla efor sarfetmeden yeni özellikler eklenebiliyor.
Hem django hem de flask kullandığım için söylediklerinize pek katılmıyorum. Django oldukça esnek. Mantığını öğrendikten sonra custom üyelik sistemi oluşturabilirsiniz.

Büyük bir projeye girisiyorsaniz Django daha mantıklı görünüyor bana.
 
Son düzenleme:
Ben hep bunun tersini okudum. Django, uygulama geliştikçe daha kısıtlayıcı oluyordu ama öte yandan flask, kendisi de minimal bir sistem sunduğu için, üzerine yeni özellikler eklemek çok daha kolay oluyordu. Örneğin django kullanıcı sistem, django'nun temeli. Dolayısıyla siz kalkıp yeni bir kullanıcı sistemi, auth sistemi oluştururken neredeyse djangoyu yazmış kadar öğreniyorsunuz. Öte yandan flask, çok daha esnek olduğundan, üzerine çok fazla efor sarfetmeden yeni özellikler eklenebiliyor.

Slim gibi flask gibi frameworler ufak projeler için çok uygun. Dediğiniz gibi paket eklemesiyle birlikte bazı sıkıntılar çıkmaya başlıyor. Model, controller, factort kavramları 5 tablo ile başlayıp tablo sayısı ilişkiler arttıkça daha çok onme arz ediyor. Yoksa bunlar da is görüyor. Hız bakımından oldukça iyi sonuç verirler.
 
Hocam php+mysql uyumluluğu efsane. Nodejs de mongodb gibi nosql db'lerle iyi çalışıyor. CAP teoremine göre sql'in de nosql'in de artıları var. Kullanılan iş modeline göre seçmek gerekiyor. e-ticaret sitesi, bankacılık işlemler vs. yapılıyorsa sql kullanmak mantıklıyken, sosyal medya, oyun, veri toplama, metrikleri alma vs. gibi şeyler yapılıyorsa nosql(hatta redis) mantıklı.

Php'nin çalıştığı makineler 4-8 çekirdekli, ram'i yüksek sunucular oluyor. Node.js tek çekirdek ve düşük ram ile çalışıyor. Ama sunucunuzda çalışan web sitelerinin trafiği nedir, mysql'e binen yük nedir bilmiyorum. Eklediğiniz resim görünmüyor maalesef. Over engineering hatasına düşmeyelim burada. Hiç kullanmayacağımız özelliklere göre değerlendirme hatası yapmak yanlış olur. Ufak ve orta ölçekli projelerde nodejs+mysql de gayet iş görecektir. Daha önce bir projede nodejs+sqlite kullandım, küçük bir projeydi ama şıkır şıkır çalışıyor. sqlite'ın kaynak tüketimi de mysql'e göre az.

Node.js ve mongodb ikilisi kullanılırken, vagrant, nginx yapılandırmaları ile yatay ölçeklenebilir sistemler kuruluyor. Biliyorsunuz işte, 1cpu 5 dolarlık bir sunucu istekleri karşılamakta yetersiz kalmaya başladığında, sharding yapılıyor ve 1cpu 5 dolarlık yeni sunucu devreye giriyor. Mysql'de veya postgres'de bu işlem var mı, varsa nasıl çalışıyor bilmiyorum. Ama nodejs+mongodb bu açıdan, yüksek kapasiteli sunucu gereksinimi duymadığı için avantaj sağlıyor. Ama buna ihtiyaç duyacak proje çıkarmak nasip olur mu bilmiyorum.(Allah'ım olsun lütfen. :) )

Yani bence alıştıysanız php+mysql işinizi görüyorsa node.js'e bulaşmaya gerek yok bence. Zira php halen geçer akçe. Wordpress dolayısıyla olabilir, en çok ihtiyaç duyulan backend dili sanırım.

Hocam MySQL trafiği toplamda tek sunucu üzerinde günlük 100GB dolaylarında. Üzeri var eksiği yok. Sırf bu yüksek trafik yüzünden şuan NATRO dan vazgeçemiyorum. Geçenlerde uğradıkları saldırı ve her geçen gün yükselen teknik geri dönüş süreleri diken üstünde tutuyor resmen. Ama 1Gbit trafik ve yüksek bant genişliğini o fiyatlara veren de yok maalesef :(

Projeler sürekli güncelleme içinde olduklarından, hepsini birden zaten geçirmem imkansız ama en azından birini bir framework yapısına kavuşturursam gerisi çok daha hızlı olur diye düşünüyorum. Sitelerde yıl içinde majore varan güncellemeler olabiliyor çünkü.

Sunucu işlemlerini de direk php ile bağlantılı olduğu için değil, örneğin node.js + nginx + ... kullanılacak bir sistemde bunların idare ve takibi için bir panel göremedim. çoğunlukla terminal üzerinden çalıştır bırak örnekleri var. Mevcut paneller ile birlikte kullanımında bir sıkıntı çıkar mı onu bilmiyorum, deneyim sahibi arkadaşlar tavsiyede bulunabilirler.
 
Ben hep bunun tersini okudum. Django, uygulama geliştikçe daha kısıtlayıcı oluyordu ama öte yandan flask, kendisi de minimal bir sistem sunduğu için, üzerine yeni özellikler eklemek çok daha kolay oluyordu. Örneğin django kullanıcı sistem, django'nun temeli. Dolayısıyla siz kalkıp yeni bir kullanıcı sistemi, auth sistemi oluştururken neredeyse djangoyu yazmış kadar öğreniyorsunuz. Öte yandan flask, çok daha esnek olduğundan, üzerine çok fazla efor sarfetmeden yeni özellikler eklenebiliyor.
Kesinlikla katılıyorum. Flask Django'ya göre hem daha esnek hem de hız olarak daha çok verim aldım.
 
Affınıza sığınarak bir yanlış anlamayı yazmak istiyorum.
Yazılan tavsiyeler genelde framework , fakat arkadaşın sorduğu dil.
Laravel , nodejs, django, angularjs, vue, react
Bunların dil olmadığını belirtmek isterim.
yeni başlayanların bunu bilmesi önemli.
 
Affınıza sığınarak bir yanlış anlamayı yazmak istiyorum.
Yazılan tavsiyeler genelde framework , fakat arkadaşın sorduğu dil.
Laravel , nodejs, django, angularjs, vue, react
Bunların dil olmadığını belirtmek isterim.
yeni başlayanların bunu bilmesi önemli.
başlığı açan hocamız programlamaya yabancı değil framework terimini zaten biliyordur bu frameworkler ile python javascript ve php geliştirildiğinide biliyordur php den sıkılan bir programcıya başka framework önermek gerekir çünkü php dünyada hala en geçerli dillerden biri diğer frameworkler de gelecek vadeden diller için tavsiyemdi yanlış anlama yok yani.
 
başlığı açan hocamız programlamaya yabancı değil framework terimini zaten biliyordur bu frameworkler ile python javascript ve php geliştirildiğinide biliyordur php den sıkılan bir programcıya başka framework önermek gerekir çünkü php dünyada hala en geçerli dillerden biri diğer frameworkler de gelecek vadeden diller için tavsiyemdi yanlış anlama yok yani.
Sizin için yazmadım :)
Sizin mesajı okuyan herkes için yazdım.
Yani siz değil, sizin mesajı okuyanların yanlış anlama ihtimali var.
Tıpkı sizin benim mesajımı yanlış anladığınız gibi.
 
Konu güzel, paylaşılan tecrübeler yorumlar güzel.;) Büyük projelere dahil olmuş arkadaşlar yaptıkları işlerden örnek verseler biz de feyizlensek daha da güzel olmaz mı?:)
 
Hocam MySQL trafiği toplamda tek sunucu üzerinde günlük 100GB dolaylarında. Üzeri var eksiği yok. Sırf bu yüksek trafik yüzünden şuan NATRO dan vazgeçemiyorum. Geçenlerde uğradıkları saldırı ve her geçen gün yükselen teknik geri dönüş süreleri diken üstünde tutuyor resmen. Ama 1Gbit trafik ve yüksek bant genişliğini o fiyatlara veren de yok maalesef :(

Projeler sürekli güncelleme içinde olduklarından, hepsini birden zaten geçirmem imkansız ama en azından birini bir framework yapısına kavuşturursam gerisi çok daha hızlı olur diye düşünüyorum. Sitelerde yıl içinde majore varan güncellemeler olabiliyor çünkü.

Sunucu işlemlerini de direk php ile bağlantılı olduğu için değil, örneğin node.js + nginx + ... kullanılacak bir sistemde bunların idare ve takibi için bir panel göremedim. çoğunlukla terminal üzerinden çalıştır bırak örnekleri var. Mevcut paneller ile birlikte kullanımında bir sıkıntı çıkar mı onu bilmiyorum, deneyim sahibi arkadaşlar tavsiyede bulunabilirler.

Günlük db trafiği 100gb olan 10 adet projeyi yeni bir dil üzerine yeni bir framework'e taşımak epey zaman alır. Bir bilgi yatırımı da yapmışsınız php'ye. Bu yüzden laravel gibi php frameworkleri üzerinden gitseniz daha mantıklı olur sanki.

cpanel destekli nodejs hostingler var. Ben hiç kullanmadım. Terminal üzerinden ssh bağlantı yetiyor şimdilik.
 
Geri
Üst