🚀 Node.js: Hızlı, Esnek ve Ölçeklenebilir Web Geliştirme Deneyimi!
Tags: javascript, node
Published: 2023-04-28 00:29:54

##🤔 Web Uygulamalarında Performansın Sırrı?
---
💡 Diyelim ki chat uygulaması veya sosyal medya uygulamaları gibi *gerçek zamanlı* bir uygulama yapmak istiyoruz. Bu uygulamalar yüksek performans gerektirir. Non-blocking ve event-driven gibi özelliklere sahip olması bu tip uygulamalar için Node.js’in tercih edilmesini sağlar. Bu özellikleri açıklamadan önce Node.js'in derinlerine inelim:

![Link](https://colorlib.com/wp-content/uploads/sites/2/nodejs-frameworks.png)



🌐 Biraz eskilere gidelim mi? ..

Web teknolojileri eskiden 3 kullanım sunardı; HTML, CSS ve JavaScript.

Fakat 2009 da Node.js ‘in ilk sunumu yapıldığında herkesi heyecanlandıran bir şey vardı; artık JavaScript sadece front-end değil  back-end kısmında da kullanılabilecekti. Yani Javascript artık tarayıcının sınırlamaları arasında kalmayacaktı.

Örneğin artık dosyalarla direkt iletişime geçilebilir, kendi sunucumuzu oluşturabilir ve veri tabanlarıyla direkt iletişime geçebiliriz.


![Link](https://gloify.com/wp-content/uploads/2021/06/shopify-2-1210x617.png)

**👉 Event-Driven Yapısı**

Node.js event-driven yani olay-odaklı çalışır. Ne demek istiyorum?

Burada ‘olay’ dan kastım; bir web sayfasının kullanıcı tarafından yüklenmesi olabilir, dosya okuma işlemleri olabilir, kullanıcının kayıt olma işlemini tamamlaması olabilir.. İşte bu gibi olayları izleyip, bunlara uygun yanıt vermesine event-driven diyoruz.

Callback fonksiyonları, promise, async/await yapılarını kullanılarak gerçekleştirilebilir.

**👉 Non-Blocking Özellik**

Bu özelliği anlamak için Node.js bir sihirbaz gibi düşünülebilir 🧙. Bir işlemi tamamlamadan diğer işlemlere devam edebilir.

Bu sayede, Node.js ile geliştirilen uygulamaların daha hızlı ve ölçeklenebilir olması sağlanır.

Bu özelliği aşağıdaki *Madenci Benzetmesi* ile daha iyi anlayabilirsiniz..

> *📝 Ölçeklenebilir derken şu kastediliyor: Uygulamalarınızın kullanıcı sayısı arttıkça, sunucu kapasitenizi de arttırarak daha fazla trafik ve isteği yönetebilirsiniz.*


**👉 Asenkron Yapısı**

Asenkron yapısı sayesinde birden fazla işlemi aynı anda yapabilir!

Böylece dosya okuma, veritabanı sorguları ve HTTP istekleri gibi işlemler daha hızlı ve verimli hale gelir.

**🔨 Madenci Benzetmesi:**

Elmas bulmak için mağarada harıl harıl çalışan bir madenci düşünelim. Madenci, elmas arıyor ve bulduğu elmasları torbasına koyuyor olsun. Elmas bulduğu zaman, torbasındaki elmasların sayısını arttırmak için birkaç saniye beklemesi gereksin.

![Link](https://cdn.dribbble.com/users/620403/screenshots/6027568/media/d04cb0c18edc2f6a08f2718ed76aa44e.gif)

Şimdi gelelim asıl noktaya, normal bir programla dili kullanıldığında, madenci elmas bulduğunda beklemesi gereken süre boyunca başka iş yapamaz. Fakat Node.js kullanıldığında, madenci elmas bulduğunda elmasları torbasına koymak için beklemesi gerekmez, bu bekleme işlemi arka planda devam eder ve madenci o sırada başka işlerine devam edebilir. 
Mesela fenerini kontrol edebilir, yönünü değiştirebilir ya da başka işlerini yapabilir.

💎💎

İşte Node.js non-blocking özelliği sayesinde, madenci bir sonraki işlemi yapmak için elmas bulma süresinin dolmasını beklemez, diğer işlerini yapmaya devam eder. Bu süre arka planda gerçekleşip, süresini doldurur. Bu sayede madenci işlerini daha verimli bir şekilde yapmış olur.  💪 💪





**🎉 Node.js ile yazılan *popüler* uygulamalar :**

İşte Node.js kullanarak yazılmış meşhur teknolojilerden bazıları:

![Link](https://r.resimlink.com/ArbNC2wzk6.png)

*Okuduğunuz için teşekkür ederim.. 🙏 😊*