Node.js Nedir? Bir Amca ve Yeğen Diyaloğu ile Dahili Çalışma Mantığı – Bölüm 1 Yazılım

Node.js Nedir? Bir Amca ve Yeğen Diyaloğu ile Dahili Çalışma Mantığı – Bölüm 1

Bu yazıda, 30 yıllık backend tecrübesine sahip bir amca, yeğenine Node.js'in neden var olduğunu ve çalışma mantığını sade bir dille anlatıyor.

Node.js, 2009 yılında Ryan Dahl tarafından geliştirilmiş bir JavaScript runtime ortamıdır. Peki neden var? Çünkü o zamana kadar JavaScript sadece tarayıcılarda çalışıyordu. Bir web sitesi yapmak için frontend'de JavaScript, backend'de ise Java, PHP veya Python gibi farklı diller kullanılıyordu. Bu durum ekiplerin ayrı diller konuşmasına ve iletişim sorunlarına yol açıyordu. Ryan Dahl, "JavaScript zaten iyi bir dil, neden tarayıcı dışında da çalışmasın?" sorusunu sorarak Node.js'in temelini attı.

Node.js bir dil değil, bir runtime environment'dır. Yani JavaScript motorunu alıp, onu farklı bir ortamda çalıştırmak için gereken araçları sağlar. Tıpkı aynı motorun farklı arabalara takılması gibi. Tarayıcıdaki JavaScript, DOM, window, alert gibi özelliklere erişirken, Node.js'te fs, http, process gibi modüller bulunur. Dilin kendisi (if, döngüler, fonksiyonlar) aynı kalır.

Tarayıcıdaki JavaScript neden dosya okuyamaz veya sunucu açamaz? Çünkü güvenlik nedeniyle bir kum havuzu (sandbox) içinde çalışır. Kötü amaçlı bir sitenin bilgisayarınızdaki dosyalara erişmesini engellemek için tarayıcı, JavaScript'e sınırlı yetkiler verir. Ancak Node.js, sunucu tarafında çalıştığı için bu kısıtlamalar kalkar ve dosya sistemi, ağ, veritabanı gibi kaynaklara doğrudan erişim sağlanır.

Sistem Güvenliği

Peki frontend (React gibi) neden doğrudan veritabanına bağlanamaz? Çünkü frontend kodu kullanıcının tarayıcısına gönderilir ve herkes tarafından okunabilir. Veritabanı şifrenizi frontend koduna yazarsanız, herkes görebilir ve kötüye kullanabilir. Bu nedenle veritabanı işlemleri her zaman güvenli bir backend üzerinden yapılmalıdır. Node.js bu backend görevini üstlenerek güvenli ve verimli bir çözüm sunar.

Paylaş: