{"id":31324,"date":"2021-07-03T15:00:00","date_gmt":"2021-07-03T12:00:00","guid":{"rendered":"https:\/\/www.natro.com\/blog\/?p=31324"},"modified":"2021-10-18T17:01:45","modified_gmt":"2021-10-18T14:01:45","slug":"node-js-nedir","status":"publish","type":"post","link":"https:\/\/www.natro.com\/blog\/node-js-nedir\/","title":{"rendered":"Node.js Nedir?"},"content":{"rendered":"\n<p>G\u00fcn\u00fcm\u00fczde yayg\u0131n olarak kullan\u0131lan backend dilleri aras\u0131nda Node.js ilk s\u0131ralarda yer almaktad\u0131r. Son y\u0131llarda pop\u00fclerli\u011fi her ge\u00e7en g\u00fcn biraz daha artan AliExpress gibi e-ticaret platformalar\u0131nda bu programlama dili kullan\u0131l\u0131r. Ayr\u0131ca Netflix, LinkedIn, Uber ve NASA gibi platformlarda da Node.js kullan\u0131ld\u0131\u011f\u0131na \u015fahit olabilirsiniz.<\/p>\n\n\n\n<p>2018 y\u0131l\u0131 istatistiklerine g\u00f6re Node.js \u00fczerinde 23 milyondan fazla geli\u015ftirici vard\u0131. Bu kullan\u0131c\u0131 listesi de her ge\u00e7en g\u00fcn biraz daha art\u0131yordu. Google\u2019\u0131n V8 motoru i\u00e7in \u00f6zellikle geli\u015ftirilen Node.js, a\u00e7\u0131k kayna\u011fa sahip bir Javascript runtime environment\u2019t\u0131r. Bu sayede web uygulamalar\u0131 h\u0131zl\u0131 bir \u015fekilde \u00f6l\u00e7eklendirilebilir hale getirilebilir. Ayr\u0131ca ger\u00e7ek zamanl\u0131 uygulamalar\u0131n verimli ve kolay bir \u015fekilde \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-node-js-nas-l-al-r\"><span id=\"node-js-nasil-calisir\">Node.js Nas\u0131l \u00c7al\u0131\u015f\u0131r?<\/span><\/h2>\n\n\n\n<p>Node.js, non blocking I\/O ve g\u00fcd\u00fcml\u00fc sunucu motorunu kullan\u0131r. Bu sayede kodun \u00e7al\u0131\u015fmas\u0131 daha h\u0131zl\u0131 olaca\u011f\u0131 i\u00e7in JavaScript adaptasyonu daha kolay ve h\u0131zl\u0131 \u015fekilde ger\u00e7ekle\u015fir. Node.js ve JavaScript sayesinde sistem \u00fczerinde kullan\u0131lan kodlar\u0131n \u00e7al\u0131\u015fmas\u0131 kolayla\u015f\u0131r. Bu da web sitesinin performans\u0131n\u0131n artmas\u0131 demektir.<\/p>\n\n\n\n<p>Node.js, Google V8 JavaScript motoru \u00fczerinde \u00e7al\u0131\u015f\u0131r. Burada yer alan web uygulamalar\u0131, olay g\u00fcd\u00fcml\u00fc, yani event-based \u015feklindedir.\u00a0Node.js platformunda \u201csingle threaded event loop\u201d sistemi kullan\u0131l\u0131r. \u201cMulti threaded request-response\u201d mimarisinin \u00e7ok yava\u015f bir event loop oldu\u011fu g\u00f6ze \u00e7arpmaktad\u0131r. Bu da ayn\u0131 anda \u00e7oklu thread i\u015flenmesini zorla\u015ft\u0131r\u0131r. Platformdaki isteklere cevap vermek ad\u0131na daha basit bir model olan single thread event loop kullan\u0131lmas\u0131 daha uygundur. Bunun i\u00e7in de Node.js, kullan\u0131c\u0131lara Libuv k\u00fct\u00fcphanesini sunmu\u015ftur.<\/p>\n\n\n\n<p>Bu yaz\u0131l\u0131m dili kullan\u0131l\u0131rken her bir iste\u011fin RAM \u00fczerinde ayr\u0131 bir thread olu\u015fturan web-serving tekni\u011fi yerine Node.js tek bir thread kullan\u0131r. Bu da ayn\u0131 anda y\u00fczlerce ba\u011flant\u0131n\u0131n y\u00f6netilmesini sa\u011flar. Node.js sisteminde npm ile kullan\u0131c\u0131ya paket y\u00f6netim deste\u011fi de sunulmaktad\u0131r. Pop\u00fcler bir paket k\u00fct\u00fcphanesi diyebilece\u011fimiz npm, Node.js kullan\u0131c\u0131lar\u0131na sunulan en b\u00fcy\u00fck kolayl\u0131klardan biridir.<\/p>\n\n\n\n<p>Node.js i\u00e7in geli\u015ftirilmi\u015f, spesifik tek bir ihtiyaca y\u00f6nelik, indirilebilir milyonlarca k\u00fct\u00fcphane bulunmaktad\u0131r. K\u00fct\u00fcphanelerin kullan\u0131c\u0131ya sundu\u011fu en b\u00fcy\u00fck \u00f6zellikler aras\u0131nda tamamen \u00fccretsiz olmas\u0131n\u0131 da sayabiliriz. S\u00f6z konusu k\u00fct\u00fcphanelerin hemen hepsi b\u00fcy\u00fck bir h\u0131zla b\u00fcy\u00fcmekte ve kendini geli\u015ftirmektedir. Bu da Node.js toplulu\u011funu daha g\u00fc\u00e7l\u00fc hale getirmektedir. D\u00fcnyan\u0131n her bir noktas\u0131ndaki Node.js geli\u015ftiricileri paketleri \u00f6d\u00fcn\u00e7 almak ya da payla\u015fmak i\u00e7in npm kullan\u0131rlar.<\/p>\n\n\n\n<p>Node.js, 11.0 g\u00fcncellemesi ile birlikte Node.js native Node kullan\u0131larak daha da stabil hale getirilmi\u015ftir. En yayg\u0131n \u015fekilde kullan\u0131lan npm mod\u00fclleri aras\u0131nda Meteor.js, Express.js, Sails.js, Nest.js, Koa.js, Hapi.js, Mongo.js, Total.js, Socket.js ve Loopbask.js mod\u00fcllerini sayabiliriz. Bu npm mod\u00fclleri ile performans\u0131 art\u0131rmak, zamandan tasarruf sa\u011flamak ve b\u00fcy\u00fck bir test ortam\u0131 olu\u015fturmak m\u00fcmk\u00fcn hale gelmi\u015ftir.\u00a0<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-neden-node-js\"><span id=\"neden-node-js\">Neden Node.js?<\/span><\/h2>\n\n\n\n<p>Neden Node.js, sorusunun cevab\u0131, verilecek bir \u00f6rnekle daha iyi anla\u015f\u0131labilir. Bir restorana gitti\u011finizi ve men\u00fcden se\u00e7im yaparak sipari\u015f verdi\u011finizi d\u00fc\u015f\u00fcn\u00fcn. Restoranda, siz garsona sipari\u015finizi verirsiniz. Garson da a\u015f\u00e7\u0131ya sipari\u015fi bildirerek sipari\u015f haz\u0131rlanmaya ba\u015flan\u0131r. Tabi sipari\u015finizi verdikten sonra restoranda oturan tek ki\u015finin siz olamad\u0131\u011f\u0131n\u0131z\u0131 da d\u00fc\u015f\u00fcnmeniz gerekir. E\u011fer garson, sizin sipari\u015finiz haz\u0131rlanana kadar di\u011fer m\u00fc\u015fterilerin sipari\u015flerini almazsa, s\u00f6z konusu m\u00fc\u015fteriler do\u011fal olarak \u00e7ok fazla zaman kaybeder. Bu nedenle sizin sipari\u015finiz a\u015f\u00e7\u0131ya bildirildikten sonra garson di\u011fer m\u00fc\u015fterilerden sipari\u015f almaya ve a\u015f\u00e7\u0131ya e\u015f zamanl\u0131 \u015fekilde sipari\u015fleri bildirmeye devam eder. Bu sayede bir ki\u015finin iste\u011fi, di\u011ferlerinin i\u015fini engellememi\u015f olur.\u00a0\u00a0<\/p>\n\n\n\n<p>Node.js \u00e7al\u0131\u015fma mant\u0131\u011f\u0131n\u0131 yukar\u0131daki restoran \u00f6rne\u011fine benzetebilirsiniz. Sisteme bir talep iletildi\u011finde Node.js bu talebi derhal i\u015fleme koyar. Sisteme bu arada onlarca talep gelmektedir. Node.js, ilk talebin sonucunu beklemeden sonraki talepleri almaya ve onlar\u0131 da i\u015fleme koymaya devam eder. Bu sayede hi\u00e7bir istek, di\u011ferini engellemez. Hangi talep \u00f6nce tamamlan\u0131rsa onun cevab\u0131 sisteme d\u00fc\u015fer. Sistemin bu d\u00f6ng\u00fcs\u00fc asenkron \u00e7al\u0131\u015fma mant\u0131\u011f\u0131 olarak adland\u0131r\u0131l\u0131r. Bir i\u015flem di\u011fer bir i\u015flemi engellemedi\u011fi i\u00e7in non-blocking olmaktad\u0131r.<\/p>\n\n\n\n<p>Senkron i\u015flemlerde bir talep sonu\u00e7lanmadan di\u011fer talebe cevap verilmez. Bu da zaman kayb\u0131 demektir. \u0130\u015fte Node.js, bu zaman kayb\u0131n\u0131n \u00f6n\u00fcne ge\u00e7ilmesini sa\u011flad\u0131\u011f\u0131 i\u00e7in yayg\u0131n olarak tercih edilen bir sistemdir. Node.js, birden \u00e7ok talebe h\u0131zl\u0131 \u015fekilde cevap verdi\u011fi i\u00e7in \u00f6l\u00e7eklenebilirlik sorununa da \u00e7\u00f6z\u00fcm bulmu\u015ftur. Bu da sistemin pop\u00fcler olmas\u0131nda en etkili nedenlerden biridir. Ayn\u0131 anda binlerce insan\u0131n kullanaca\u011f\u0131 bir sistem geli\u015ftirmeyi d\u00fc\u015f\u00fcn\u00fcyorsan\u0131z, Node.js bu anlamda olduk\u00e7a do\u011fru bir tercih olarak kabul g\u00f6r\u00fcr.<\/p>\n\n\n\n<p>Peki, Asp.Net, Python, Php, Java ya da Ruby gibi teknolojiler \u00f6l\u00e7eklenebilirlik sorununa \u00e7are bulam\u0131yor mu? Evet s\u00f6z konusu teknolojiler de bu soruna \u00e7are bulur; fakat sistemin maliyeti \u00e7ok daha fazlad\u0131r. Yap\u0131lan maliyet analizleri nedeniyle \u00f6zellikle Netflix, LinkedIn gibi b\u00fcy\u00fck \u015firketler Node.js kullanmay\u0131 tercih ederler.<\/p>\n\n\n\n<p>Node.js\u2019nin en b\u00fcy\u00fck avantajlar\u0131 aras\u0131nda mod\u00fcler yap\u0131s\u0131 g\u00f6sterilmektedir. Bunun yan\u0131nda s\u00f6z konusu yap\u0131y\u0131 destekleyen paket y\u00f6netim sistemleri olan npm de geli\u015ftiricilere b\u00fcy\u00fck avantaj sa\u011flamaktad\u0131r. Npm\u2019yi Node.js projelerinin deposu olarak d\u00fc\u015f\u00fcnebilirsiniz. Yukar\u0131da say\u0131lan nedenlerden dolay\u0131 Node.js g\u00fcn\u00fcm\u00fczde en pop\u00fcler sistemler aras\u0131ndad\u0131r.\u00a0<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-node-js-ile-neler-yap-labilir\"><span id=\"node-js-ile-neler-yapilabilir\">Node.js ile Neler Yap\u0131labilir?<\/span><\/h2>\n\n\n\n<p>Node.js, geli\u015ftiricilere s\u0131n\u0131rs\u0131z bir ortam sunmas\u0131 ile bu denli yayg\u0131n hale gelmi\u015ftir. G\u00fcn\u00fcm\u00fcz d\u00fcnyas\u0131nda Node.js\u2019nin ba\u015far\u0131l\u0131 \u015fekilde kullan\u0131ld\u0131\u011f\u0131 \u00e7ok fazla platform mevcuttur. Bunlar aras\u0131nda tek sayfa uygulamalar\u0131, sosyal medya a\u011flar\u0131, data streaming, chat uygulamalar\u0131 ve IoT uygulamalar\u0131 yer al\u0131r. K\u0131saca bu platformlar \u00fczerinde Node.js kullan\u0131larak neler yap\u0131labildi\u011fine bir g\u00f6z atal\u0131m:<\/p>\n\n\n\n<p><strong>Tek Sayfa Uygulamalar\u0131<\/strong><\/p>\n\n\n\n<p>Node.js kullan\u0131larak tek sayfa uygulama geli\u015ftirmek son derece h\u0131zl\u0131 ve pratik \u015fekilde ger\u00e7ekle\u015ftirilir. Sistemin sa\u011flad\u0131\u011f\u0131 avantajlar aras\u0131nda web sitelerinin dinamik hale getirilmesi ve mail \u00e7\u00f6z\u00fcmlerinin sa\u011flanmas\u0131 ilk s\u0131ralarda yer almaktad\u0131r. Asenkron veri ak\u0131\u015f\u0131 sa\u011flayan sistem sayesinde tek sayfa uygulamas\u0131 geli\u015ftirmek m\u00fcmk\u00fcn olmu\u015ftur.<\/p>\n\n\n\n<p><strong>Sosyal Medya Uygulamalar\u0131<\/strong><\/p>\n\n\n\n<p>Medium ya da LinkedIn gibi bir\u00e7ok sosyal medya platformu, Node.js ile yeniden geli\u015ftirilmi\u015ftir. V8 motoru sayesinde Node.js, geli\u015ftiricilere \u00e7ok h\u0131zl\u0131 routing imkan\u0131 tan\u0131maktad\u0131r. Ayr\u0131ca Node.js\u2019nin sosyal medya uygulamalar\u0131nda yayg\u0131n \u015fekilde kullan\u0131lmas\u0131n\u0131n en \u00f6nemli nedeni \u00f6l\u00e7eklendirilebilir bir yap\u0131ya sahip olmas\u0131d\u0131r.<\/p>\n\n\n\n<p><strong>Data Streaming<\/strong><\/p>\n\n\n\n<p>Netflix, g\u00fcn\u00fcm\u00fczde en yayg\u0131n kullan\u0131lan, 190 \u00fclkede aktif olan, geli\u015fmi\u015f bir platformdur. S\u00f6z konusu platform, Node.js sayesinde 100 milyon saatten fazla uzunlu\u011fa sahip video i\u00e7erikleri 120 milyondan fazla kullan\u0131c\u0131ya ula\u015ft\u0131rmaktad\u0131r. Node.js\u2019nin dosyalar\u0131 h\u0131zl\u0131 bir \u015fekilde i\u015flemesi, encode\u2019a izin vermesi gibi \u00f6zellikleri sayesinde bu platformda yayg\u0131n olarak tercih edilmektedir. \u00c7ok say\u0131da video i\u00e7eri\u011fi b\u00fcnyesinde bar\u0131nd\u0131ran e-ticaret platformlar\u0131nda da bu \u00f6zellik g\u00f6z \u00f6n\u00fcnde bulundurularak Node.js kullan\u0131l\u0131r.<\/p>\n\n\n\n<p><strong>Chat Uygulamalar\u0131<\/strong><\/p>\n\n\n\n<p>Node.js, chatbotlar ve ger\u00e7ek zamanl\u0131 chat uygulamalar\u0131 i\u00e7in de \u00f6nemli avantajlar sa\u011flamaktad\u0131r. Yo\u011fun veriler, y\u00fcksek site trafi\u011fi, \u00e7ok kullan\u0131c\u0131l\u0131 uygulamalar gibi \u00f6zellikler i\u00e7in chatbot kullan\u0131m\u0131 vazge\u00e7ilmez bir sistemdir. Push bildirimlerin kolay \u00e7al\u0131\u015ft\u0131r\u0131lmas\u0131 ve sunucudan taraftaki event loop\u2019lar sayesinde ger\u00e7ek zamanl\u0131 chat uygulamalar\u0131 tercih edilir.<\/p>\n\n\n\n<p><strong>IoT Uygulamalar\u0131<\/strong><\/p>\n\n\n\n<p>\u00d6zellikle ge\u00e7ti\u011fimiz 10 y\u0131lda IoT cihazlar\u0131nda inan\u0131lmaz bir geli\u015fim oldu\u011funu g\u00f6zlemleyebilirsiniz. Bu geli\u015fim, herkesin hayat\u0131nda bu cihazlar\u0131n yer almas\u0131na neden olmu\u015ftur. Node.js, IoT \u00e7\u00f6z\u00fcmlerinde en \u00e7ok kullan\u0131lan programlama dillerinden biri halini alm\u0131\u015ft\u0131r. Bu sistem sayesinde IoT a\u011flar\u0131ndaki event driven mimarisi ve I\/O operasyonlar\u0131n\u0131n asenkron i\u015flemleri pratik hale gelmi\u015ftir. Bunun yan\u0131nda Node.js, okunabilir ve yaz\u0131labilir kanallar\u0131n ve yay\u0131nlar\u0131n y\u00f6netilmesini sa\u011flad\u0131\u011f\u0131 i\u00e7in IoT uygulama geli\u015ftirme birimlerinde yayg\u0131n olarak tercih edilir.<\/p>\n","protected":false},"excerpt":{"rendered":"G\u00fcn\u00fcm\u00fczde yayg\u0131n olarak kullan\u0131lan backend dilleri aras\u0131nda Node.js ilk s\u0131ralarda yer almaktad\u0131r. Son y\u0131llarda pop\u00fclerli\u011fi her ge\u00e7en g\u00fcn&hellip;\n","protected":false},"author":7,"featured_media":31326,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[652],"tags":[1335],"class_list":{"0":"post-31324","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-nedir","8":"tag-node-js"},"_links":{"self":[{"href":"https:\/\/www.natro.com\/blog\/wp-json\/wp\/v2\/posts\/31324","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.natro.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.natro.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.natro.com\/blog\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.natro.com\/blog\/wp-json\/wp\/v2\/comments?post=31324"}],"version-history":[{"count":0,"href":"https:\/\/www.natro.com\/blog\/wp-json\/wp\/v2\/posts\/31324\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.natro.com\/blog\/wp-json\/wp\/v2\/media\/31326"}],"wp:attachment":[{"href":"https:\/\/www.natro.com\/blog\/wp-json\/wp\/v2\/media?parent=31324"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.natro.com\/blog\/wp-json\/wp\/v2\/categories?post=31324"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.natro.com\/blog\/wp-json\/wp\/v2\/tags?post=31324"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}