17.02.2023
2359
Hər birinizə salamlar🖐️. Bu gün sizlərə Node.js-in nə olduğu, nə kimi üstünlüklərinin olduğu və Node.js ilə nələr edə biləcəyiniz haqqında danışacam. Kofe’nizi hazırlayın və başlayaq☕
JavaScript-dən də bildiyimiz kimi, əvvəllər JavaScript sadəcə olaraq istifadəçi tərəfdə(client-side) çalışan bir proqramlaşdırma dili idi. Artıq brauzerlərdə işlədilən Chrome V8 mühərriki istifadəyə verildikdən sonra Ryan Dahl V8 engine-dən istifadə etməklə Node.js yaratdı. Və bununla da, JavaScript server-side’da da işlədilməyə başladı. Yəni əvvəllər JavaScript ancaq frontend-də var idisə Node.js-in yaradılmağı ilə backend-də də işlədilməyə başladı.Əlbəttə, Node.js-in yaradılması zamanı Ryanın qarşısında çətinliklər var idi. Bunlardan 2si daha qabarıq görünür. Birincisi, JS kodlarını icra (execute) etmək, ikincisi isə serverdə işlədilən kompüterin file sisteminə və əməliyyat sistemindəki funksiyalara əlçatanlıq. Ryan ilk problemi V8 mühərriki ilə həll edir. İkinci problem isə daha çətin prosessdir. Burada onun qarşısında 2 yol var, ya özü sıfırdan JS ilə kitabxanaları yenidən yazmalıdır ki, bu da çətin və vaxt alan işdir. İkinci yol isə hazır kitabxanalardan istifadə etməkdir. Ryan ikinci yolu seçir və libuv və s. C/C++ da yazılan kitabxanalardan istifadə edir.
Javascript-in Node.js ilə server tərəfə də daşınması ilə siz artıq bir proqramlaşdırma dili öyrənərək Fullstack Developer ola bilərsiniz. Frontend tərəfdə React kitabxanası və Backend tərəfdə Node js-i öyrənərək. Bu "cütlük" proqramlaşdırma aləmində MERN stack kimi də adlanır. (Mongo Express React Node)
Aşağıdakı şəkillərdə stackoverflow platformasında son illərdə etdiyi araşdırmalarda ən populyar olan, ən çox üstünlük verilən və ən çox sevilən texnologiyalarda Javascript və Node.js üstünlük təşkil edir.
Node.js Statistikası
Javascript Statistikası
V8 deyilən bu Javascript mühərriki Google şirkəti tərəfindən inkişaf etdirilən və Chrome web brauzerlərinin də üzərində çalışdığı bir mühərrikdir. Bu mühərrik C, C++ və Javascript dilləri ilə yazılmışdır. Tək məqsədi Javascript kodunu maşın koduna çevirməkdir. Şübhəsiz ki, çox performanslıdır. Asinxron olaraq işləməsi və non-blocking olması ona çox sürətli olmağa imkan verir. İndi isə gəlin asinxron əməliyyat və əməliyyatların bloklanmamağının (non-blocking) nə olduğuna baxaq.
Sizə asinxron və non-blocking məntiqini bir restoran ilə izah etmək istərdim. Restorana getdiyinizi və sifariş verdiyinizi düşünün. Siz sifarişi təbii ki ofisianta verəcəksiniz, o da öz növbəsində sifarişi gedib aşpaza çatdıracaq və aşpaz da sizin sifarişi hazırlayacaq. Deyək ki sizin yeməyinizin hazırlanma müddəti 30dəq oldu. Bu arada restoranda tək siz deyilsiniz və başqa müştərilər də vardır. Düşünək ki, onlar da eyni anda bir neçə sifariş verdilər. Aşpaz da onların yeməklərini hazırlayacaqdır. Burada bir məqam vardır ki, əgər ofisiant onların sifarişlərini sizin yemək hazırlanandan sonra alsaydı o zaman digər müştərilər çox vaxt itirmiş olacaqdılar. Amma ofisiant sifarişləri aldı və aşpaza verdi. Qısaca kimsə digərinin sifarişinin bitməsini gözləmədi. Yəni bu sistem asinxron olaraq işlədi.
Node.js tərəfdə də bu belədir. Node.js-ə bir iş üçün sorğu göndərildikdə o, bu sorğunu dərhal emal edir, amma digər sorğu göndərildikdə isə bu işin bitməsini gözləmir. İstəkləri sıra ilə qəbul edir və nəticə gözləmədən davam edir. Nəticələr gələn kimi göndərilir. Nəticələrdən hansı bitirsə o nəticə göndərilir. Eyni ilə restoran məntiqi kimidir. Bu məntiq asinxron əməliyyat məntiqi adlanır və bloklanmır(non-blocking), çünki bir əməliyyat digər əməliyyata mane olmur. Aşağıdakı şəkildə verilən nümunə asinxron və sinxron əməliyyat arasındakı fərqi gözəl şəkildə göstərir. Sinxron əməliyyatlarda bir əməliyyat digər əməliyyatları gözlədiyi üçün cəmi 4 əməliyyatın tamamlanması 45 saniyə çəkdi. Lakin asinxron strukturda hər bir prosesin başlaması digər prosesin sonundan asılı olmadığı üçün 25 saniyə çəkirdi. Burada Node.js bu asinxron strukturla ciddi sürət qazanır. Eyni zamanda, birdən çox istifadəçiyə tez cavab verə biləcəyi üçün miqyaslanma probleminin həllini də təklif edir. Və bu onun populyarlığının əsas səbəblərindən biridir. Əgər biz minlərlə insanın eyni anda istifadə etdiyi bir sistem yaratmaq istəyiriksə, Node.js çox yaxşı seçimlərdən biri olacaq.
Bəs, Python, Asp.Net, Java, Php, Ruby kimi texnologiyalar bu miqyaslanma problemini həll edə bilmir? Əlbəttə ki, həll edilə bilər, lakin daha çox xərc tələb edəcək. Bu səbəbdən Linkedin, Netflix, Paypal kimi çox istifadəçiləri olan böyük şirkətlər Node.js-dən istifadə edirlər.
1. Node.js-ə keçən məşhur şirkətlərdən biri Linkedin-dir. Mobil server tərəfində Node.js-ə keçməzdən əvvəl o, Rails-dən istifadə edirdi. Node.js-ə keçdikdən sonra server qiyməti 1/10 azaldı. Bəzi əməliyyatlarda 20 dəfəyə qədər sürət artımı olub.
2. İkinci və mənim fikrimcə ən yaxşı nümunə PayPaldır. Həm də daha yenidir. PayPal özünün iş platformasını riskə atmamaq üçün birbaşa Node.js-ə keçmək əvəzinə Java və Node.js kimi 2 platformada paralel olaraq inkişaf etmişdir. Nəticədə, Node.js Java tətbiqindən saniyədə 2 dəfə çox sorğuya cavab verdi. Üstəlik, Node.js birnüvəli prosessorda işlədiyi halda, Java proqramı beşnüvəli prosessorda işləyir. Beləliklə, Node.js dəyəri 1/5-ə endirdi. Bundan əlavə, cavab vermə müddəti 35% sürətləndirilmişdir.
Node.js işlədən məşhur şirkətlər
Node.js ilə ətraflı tanış olduq. Onu da deyək ki, hal-hazırda istər xarici bazarda istərsə də daxili bazarda ona tələbat yüksəkdir. Remote işlərdə də Node.js-ə tələbat yüksəkdir. (Remote nədir?)
O zaman Siz də Node.js-in dərinliklərini öyrənib bu sahədə işləmək istəyirsinizsə, o zaman linkə daxil olub münasib qiymətə Node.js kursumuza yazıla və 6 ay ərzində dərinliklərinə qədər öyrənə bilərsiniz. Xudahafiz!