• 25-02-2024, 02:01:28
    #1
    Mobl uygulama geliştiriyorum ve server tarafını da artık kendim yapar hale gelmek istiyorum. Nodejs ve python arasında gelip gidiyorum. Asenkron işlemler konusunda nodejs daha avantajlı gibi ama güvenlik konusunda da berbat olduğu söyleniyor. Ayrıca ilerleyen zamanda blockchain bilgi sistemleri de kullanmam gereken projeler olacak bunuda göz önüne almam gerekiyor. Asenkron programlamayı yoğun kullanacağım projelerde var , küçük istekler için kullanacağım projelerde var kararsızım. Bu nedenle bilenlere sormak istedim.

    Nedeni ile birlikte bir dil önerirseniz sevinirim.
  • 25-02-2024, 03:01:15
    #2
    Merhaba.

    Python benim fikrimce daha basit API'lere gidecek bir dil çünkü kompleks yapılarda bazen aşırı mühendislik durumları oluşabiliyor (ayrıyeten gerçekleştirmek istediğiniz duruma göre aşırı mühendislikle dahi aşamayacağınız, farklı dile zorlanacağınız durumlar oluşabilir).
    Örnek vermek gerekirse GIL muhabbetleri ve Python'da bazı kütüphanelerde karşılaşabileceğiniz gevent-greenlet uyumsuzluğu (monkey patch'in dahi yetersiz kaldığı durumlar) yüzünden zorlanabilirsiniz. Kodlayacağınız yapıları bi' gözden geçirip bu tarafları iyice araştırmanızı tavsiye ediyorum. Onun haricinde yeterince iyi kodlarsanız bir problemle karşılaşma ihtimalinizin olduğunu sanmıyorum ve işinizi fazlasıyla görecektir bence. Ben biraz olsun kompleks yapıdaki bir API ile günde 10-20 milyon isteği yönetebiliyordum fakat asenkron yapıların uyuşmamazlığından ötürü çok çektim. Genel anlamda I/O temelli bir API'ydi ve CPU temelli yöntemlerle çözmek zorunda kalıyordum neredeyse. Bu da inanılmaz bir performans kaybı demek.

    Tavsiyem backend'i ya tam anlamıyla isteğinizi karşılayan alternatif bir dil ile kodlamak ya da birden fazla dil ile kodlamak olacaktır.
  • 25-02-2024, 03:13:06
    #3
    sechs adlı üyeden alıntı: mesajı görüntüle
    Merhaba.

    Python benim fikrimce daha basit API'lere gidecek bir dil çünkü kompleks yapılarda bazen aşırı mühendislik durumları oluşabiliyor (ayrıyeten gerçekleştirmek istediğiniz duruma göre aşırı mühendislikle dahi aşamayacağınız, farklı dile zorlanacağınız durumlar oluşabilir).
    Örnek vermek gerekirse GIL muhabbetleri ve Python'da bazı kütüphanelerde karşılaşabileceğiniz gevent-greenlet uyumsuzluğu (monkey patch'in dahi yetersiz kaldığı durumlar) yüzünden zorlanabilirsiniz. Kodlayacağınız yapıları bi' gözden geçirip bu tarafları iyice araştırmanızı tavsiye ediyorum. Onun haricinde yeterince iyi kodlarsanız bir problemle karşılaşma ihtimalinizin olduğunu sanmıyorum ve işinizi fazlasıyla görecektir bence. Ben biraz olsun kompleks yapıdaki bir API ile günde 10-20 milyon isteği yönetebiliyordum fakat asenkron yapıların uyuşmamazlığından ötürü çok çektim. Genel anlamda I/O temelli bir API'ydi ve CPU temelli yöntemlerle çözmek zorunda kalıyordum neredeyse. Bu da inanılmaz bir performans kaybı demek.

    Tavsiyem backend'i ya tam anlamıyla isteğinizi karşılayan alternatif bir dil ile kodlamak ya da birden fazla dil ile kodlamak olacaktır.
    Cevabınıziçin çok teşekkür ederim.
    • sechs
    sechs bunu beğendi.
    1 kişi bunu beğendi.
  • 25-02-2024, 03:42:52
    #4
    İhtiyaca göre değişir mesela büyük bir yük gerekecekse kesinlikle mikroservis olmalı. Load balancer şart vs. bunu da en iyi NodeJS ve Golang ile sağlayabildik. Haberleşme protokolü olarak GRPC tercih ediyoruz. Veritabanı ise mongodb. GRPC ile Rest API'dan 10x daha hızlı yanıt alıyoruz. Küçük ölçekli ise Rest API ve NodeJS kullanılabilir. Python hakkında deneyimim yok maalesef ama daha çok otomasyon işlemlerinde kullanıldığını görmüştüm. Biz onu da NodeJS ile yapıyoruz 😄

    Şuan 10dan fazla NodeJS servisimiz var hepsi duruma göre birbiri ile haberleşiyor ama düzenlemesi ve geliştirmesi yorucu oluyor onu belirteyim
  • 25-02-2024, 18:02:40
    #5
    Önceki yorumlara katılıyorum. Basit araçların komplex yapılarda eksiklerini çok çekersiniz. Java veya C# ile aşamayacağınız şey yok ama tabi ki 2-3 kat geliştirme süresini göze almalısınız.