NODE JS
- Tek amacı javascript kodunu makina koduna çevirmektir.
- Performansı çok yüksektir , response hızı yüksektir
- Zaman ve kaynak konusunda çok cimridir.
- Gerçek zamanlı uygulamalar Web Soket teknolojisi kullanılarak node js ile performanslı bir şekilde yapılabilir.
- Node js' geçen en ünlü firmalardan biri Linkedin'dir.Ve node js'e geçtikten sonra server maaliyeti 1/10 düşmüştür .Bazı işlemlerde 20 katına varan hızlanmalar olmuştur.
- Bir diğer örnek ise Paypal.Paypall çalışma platformunu riske etmemek için direkt node js'e geçiş yerine java ve node js olarak 2 platformda paralel olarak geliştirme yapmıştır.Sonuçta node js java uygulamasına göre 2 kat daha fazla saniyelik işlemi karşılamıştır..Üstelik node js tek çekirdekli bir işlemci üzerinden çalışırken java uygulaması 5 çekirdekli işlemci üzerinde çalışmaktadır.Yani node js maaliyeti 1/5 oranında azaltmıştır.Ayrıca response time %35 oranında hızlanmıştır.
- Node js yapı olarak asenkrondur.Beklemeyi hiç sevmez . İstekleri teker teker yapmak yerine paralel olarak yapar. İstekler bittiği zaman node'u geri ararlar(callback).Bu sayede anlık olarark çok sayıda istek hızlı bir şekilde karşılanabilir.
TCP/IP
- Bilgisayarlar arası veri iletme/alma birimleri arasında organizayonu saglayan ,böylece bir yerden diğerine veri iletişimini olanaklı kılan pek çok veri iletişim protokolüne verilen genel addır. Tcp de veri kaybı olmazken hızı yavaştır çünkü data gönderildikten sonra onay isteği beklenir. Ancak UDP'de ise onay bekleme olmadığı için işlem hızlıdır ancak veri kaybıda mümkündür.
WEBSOCKET
- İstemci ile sunucu arasındaki kalıcı bağdan başka bir şey değildir.
- Http staless req/res protokolüdür.
- Server'da bir değişilkik oldugunda server clinte bildirmez. Bu değişikliği algılayabilmek için pooling, long pooling yada websoket gibi yapılar kullanılır.Pooling belli zaman aralıklarında server'a request yaparve server her req için response'u oluşturup gönderir. Long Pooling, server request'i alır hemen res oluşturmaz yeni data oluşana kadar bekletir daha sonra res'i gönderir.Websocket ise tek bir tcp connectionu üzerinden çift yönlü ve full duplex mesajlaşmayı sağlar.Websocket ile birlikte clienttan request gelmesine gerek olmadan server'daki değişiklikler client'a iletilebilir hale geldi.Full duplex iki yönlü iletişime izin verir.
- Web soket websoket javascript api'den oluşur.
- Soket.io= javascript kütüphanesi ,,, websoket ise transportur türü taşınma türü olarak düşünülebilir.
- Soket io transports types are -> polling-jsonp , polling-xhr,polling,websocket
OSI
- Amaç iki bilgisayar arasındaki iletişimin nasıl olacağını tanımlamak
- OSI modeli herhangi bir donanım ya da bilgisayar ağı tipine göre değişiklik göstermemektedir.
- OSI'nin amacı ağ mimarilerinin ve protokollerinin bir ağ ürünü bileşeni gibi kullanılmasını sağlamaktır. 7 katmana ayrılmıştır.
- Yazılım ve donanım üreticileri bu modelin tanımlandığı kurallar çerçevesinde üretim yaparlar ve bu sayede ürünler birbiri ile uyumlu olur.
PM2
- Node js için geliştirilmiş işlem yöneticisidir.
- Node js uygulamalarını sonsuza dek çalışır durumda olmasını sağlar
VERTICAL SCALING
- Sistemin / Veritabanının yatayda ölçeklenebilir olması ucuz ve çok sayıda makinenin aynı anda kullanılması anlamına gelir.Yatayda scaling sayesinde yedeklilik de performans artışıda sağlanabilir.
HORIZONTAL SCALING
- Sistemin / Veritabanının dikeyde ölçeklenebilir olması bir tane çok güçlü aynı zamanda pahalı bir makine/donanım kullanılmasıdır.Donanım kısıtları mevcuttur.
**Yatay ölçeklebilirlikte yüzlerce binlerce makinelik server(sunucu) ağı kurulabilir.Yatay dikeye göre daha zordur
SOKET IO
- Gerçek zamanlı ve veri alışverişine ihtiyaç duyan uygulamalar geliştirmek için kullanılan Node js modülüdür.
- Her platformda çalışan güvenilir ve hızlı olmaya odaklanmış gerçek zamanlı , çift yönlü ve olay tabanlı bir iletişim sağlayan yapıdır.
- Yani normalde node js olay yapısında gelen requestleri alır ve onlara göre cevap üretir ve bu ürettiği cevabı client'e gönderir.Kullanıcıdan istek geldiğinde server ile client arasında bir kanal açılır ve node js cevabı üretip client'a gönderdikten sonra kanal kapanır ve olay bitmiş olur.Ancak online bir oyun oynuyorsanız bu durum farklı olur çünkü anlık olarak hem diğer etkileşimleri görmemiz hemde göstermemiz gerekir.Bunu sağlayan olay Socket io'dur.Node js normal req/res olayında gelen isteğe cevap hazırlayıp gönderince aradaki kanal kapanıyorken, socket io'da aradaki kanal taraflardan biri feshedene kadar devam eder.Böylece arada bağlantı kurmaya çalışmadan taraflar arası sadece veri akışı olur.Eğer socket io modülü olmasaydı node js her seferinde kullanıcıyla TCP connection açacak ve zaman,enerji ve gereksiz fazla internet sarfiyatına yol açacaktı
npm NEDİR ?
- Node js için gereken modülleri yüklemek ,silmek, güncellemek ve listelemek için kullanılan paket yöneticisidir.Yani node js ile birlikte çalışır ve node js'in paket yöneticisidir.
## Paketleri kullanabilmek için projenizin package.json adlı dosyayı içermesi gerekmektedir. Bu paketin içinde bazı metaveri bulacaksınız.Metaveri projenin aşağıdaki sırayla bazı detaylarını gösterir:
->Projenin adı
->Giriş sürümü
->Açıklaması
->Giriş nokrası
->Test komutları
->Git deposu
->Anahtar kelimeler
->Lisans
->Bağımlılıklar
->devBağımlılıklar
Metaveri projeyi tanımlamaya yardımcı olur ve kullanıcıların hakkında bilgi alması için ana hat işlevi görür.
NODEMON
- Manuel olarak sunucuya reset atmamıza gerek kalmadan yapılan değişiklikler neticesinde otomatik reset işlemini uygulayacak ve değişiklikleri yayına yansıtacaktır.
LOAD BALANCER
- Server üzerindeki fazla yükleri diğer serverlara dağıtarak işlemlerin birden fazla makinede kısa sürede çözülmesini sağlar.
- Yük dengeleyiciler , yükü dağıttıkları sistemlerin sağlıklı olup olmadığını belirli aralıklarla kontrol ederek sağlıklı çalışmayan sunuculara trafiği yönlendirmekten imtina edebilirler. Bu sayede, yük dengeleyiciler sistemlerimizin ölçeklenmesini sağladıkları gibi yüksek erişilebilirliğini sağlamak için de kullanılırlar.
- Problemli sunucuya yeni istek gönderilmez ve kullanıcıların problemden etkilenmemesi sağlanır.
- Load balancer sayesinde uygulama güncellemeri sistemde kesintiye sebep olmadan yapılabilir.
- İdeal koşullarda LB'ler gelen istekleri sunuculara rastgele ya da Round-Robin yani eşit bir biçimde dağıtırlar.İstersek bütün mesajları aynı suncuyada gönderebiliriz.
- HAProxy ve nginx en bilinen yazılım tabanlı yük dağıtıcılardır.
NGINX(vekil)
- Yüksek trafikli ve yoğun istek girişi olan web siteleri için biçilmiş kaftandır.Apache ve lighttpd ile karşılaştırıldığında çok daha az cpu kullanır.
- Alternatifler ile karşılaştırıldığında %400 daha performanslı ve hızlı olduğu görülmektedir.
- Temel özellikleri : reverse proxy , load balancing , virtual host , otomatik indeksleme
Reverse Proxy
* İstemciden gelen istekleri sunucu adına alan vekil sunucu diyebiliriz.Gelen istekleri karşılayarak sunucuya iletir ve dönen cevapları istemciye iletir. . Sağladığı avantajlar
-> Sunucuların varlığını ve özelliğini gizleyebilir,
-> İstemcileri web tabanlı saldırılara karşı koruyabilir.
-> Web sunucular üzerinden yükü azaltarak , web isteklerine hızlı bir şekilde cevap verebilir.
SSL KONFİGÜRASYONU
- SSL, server ile alıcı iletişimi esnasında verilerin şifrelenerek yapılması işlemidir.
HAProxy
- Http/tcp protokollerinde load balancer ve proxy hizmeti veren açık kaynak kodlu bir web servisidir.Yüksek performans sayesinde birçok populer web siteleri alt yapısını kullanmaktadır.
İŞLETİM SİSTEMLERİNDE PROCESS KAVRAMI
- Bir işletim sistemi üzerinde herhangi bir dille kodlanmış ve bir compiler ile derlenmiş ve daha sonra hafızaya yüklenerek işlemcide çalıştırılan programlara verilen isimdir.
- Genel anlamda her program bir process olarak düşünülebilir , ancak bir programın birden fazla processi olabileceği gibi her process yeni başka processlerde üretebilir.
- İşletim sisteminin tasarımına göre değişmekle birlikte işlemler(process) kendi adres alanlarında çalışırlar ve hafıza koruması uygulanır.Bu sayede bir işlemin başka işlemlerin bilgisine erişmesi engellenmiştir.
THREAD KAVRAMI
- Bir işletim sisteminde ya da yazılan bir programda birden fazla işin aynı anda yapılması için kullanılır.
- Kısacası bir thread'in var olması için önce bir işlemin var olması gerekir.
- Process'in altında çalışır.
- Örneğin web sunucumuza bağlanan her istemci için thread oluşturulur.Server'da bir tane process'in altında binlerce thread çalışabilmektedir.Ki genelde bir sunuca bir tane process çalışır.
- Mimaride bir tane sürekli dinleyen thread vardır.Gelen bağlantılar için hazır bekliyor.Bir client geldiğinde ise bağlantı için onu başka bir thread'e atıyor.
Modül
- Bir yazılımın ; bir veya daha fazla rutin işlemini içeren parçasına verilen isimdir.
Node js Express Modülü
- Web sunucu çatısıdır.(framework).
- İçerisinde bulunan http modülünü kullanarak web uygulamalarını kolay ve hızlı bir şekilde geliştirmeyi sağlar.
- Web uygulamalarını kolay ve hızlı bir şekilde geliştirmeyi sağlar
BROADCAST
- Server'a bağlı olan tüm client'ler arasında bir haberleşme ağı sağlayan yahut iletişim bağı oluşturulmasını belirten özel bir adrestir.Eğer ki bir mesaj , bir client tarafından broadcast üzerinden gönderilmişse , o TCP bağlantısına bağlı olan tüm clientlere iletilecektir.
- Tek amacı javascript kodunu makina koduna çevirmektir.
- Performansı çok yüksektir , response hızı yüksektir
- Zaman ve kaynak konusunda çok cimridir.
- Gerçek zamanlı uygulamalar Web Soket teknolojisi kullanılarak node js ile performanslı bir şekilde yapılabilir.
- Node js' geçen en ünlü firmalardan biri Linkedin'dir.Ve node js'e geçtikten sonra server maaliyeti 1/10 düşmüştür .Bazı işlemlerde 20 katına varan hızlanmalar olmuştur.
- Bir diğer örnek ise Paypal.Paypall çalışma platformunu riske etmemek için direkt node js'e geçiş yerine java ve node js olarak 2 platformda paralel olarak geliştirme yapmıştır.Sonuçta node js java uygulamasına göre 2 kat daha fazla saniyelik işlemi karşılamıştır..Üstelik node js tek çekirdekli bir işlemci üzerinden çalışırken java uygulaması 5 çekirdekli işlemci üzerinde çalışmaktadır.Yani node js maaliyeti 1/5 oranında azaltmıştır.Ayrıca response time %35 oranında hızlanmıştır.
- Node js yapı olarak asenkrondur.Beklemeyi hiç sevmez . İstekleri teker teker yapmak yerine paralel olarak yapar. İstekler bittiği zaman node'u geri ararlar(callback).Bu sayede anlık olarark çok sayıda istek hızlı bir şekilde karşılanabilir.
TCP/IP
- Bilgisayarlar arası veri iletme/alma birimleri arasında organizayonu saglayan ,böylece bir yerden diğerine veri iletişimini olanaklı kılan pek çok veri iletişim protokolüne verilen genel addır. Tcp de veri kaybı olmazken hızı yavaştır çünkü data gönderildikten sonra onay isteği beklenir. Ancak UDP'de ise onay bekleme olmadığı için işlem hızlıdır ancak veri kaybıda mümkündür.
WEBSOCKET
- İstemci ile sunucu arasındaki kalıcı bağdan başka bir şey değildir.
- Http staless req/res protokolüdür.
- Server'da bir değişilkik oldugunda server clinte bildirmez. Bu değişikliği algılayabilmek için pooling, long pooling yada websoket gibi yapılar kullanılır.Pooling belli zaman aralıklarında server'a request yaparve server her req için response'u oluşturup gönderir. Long Pooling, server request'i alır hemen res oluşturmaz yeni data oluşana kadar bekletir daha sonra res'i gönderir.Websocket ise tek bir tcp connectionu üzerinden çift yönlü ve full duplex mesajlaşmayı sağlar.Websocket ile birlikte clienttan request gelmesine gerek olmadan server'daki değişiklikler client'a iletilebilir hale geldi.Full duplex iki yönlü iletişime izin verir.
- Web soket websoket javascript api'den oluşur.
- Soket.io= javascript kütüphanesi ,,, websoket ise transportur türü taşınma türü olarak düşünülebilir.
- Soket io transports types are -> polling-jsonp , polling-xhr,polling,websocket
OSI
- Amaç iki bilgisayar arasındaki iletişimin nasıl olacağını tanımlamak
- OSI modeli herhangi bir donanım ya da bilgisayar ağı tipine göre değişiklik göstermemektedir.
- OSI'nin amacı ağ mimarilerinin ve protokollerinin bir ağ ürünü bileşeni gibi kullanılmasını sağlamaktır. 7 katmana ayrılmıştır.
- Yazılım ve donanım üreticileri bu modelin tanımlandığı kurallar çerçevesinde üretim yaparlar ve bu sayede ürünler birbiri ile uyumlu olur.
PM2
- Node js için geliştirilmiş işlem yöneticisidir.
- Node js uygulamalarını sonsuza dek çalışır durumda olmasını sağlar
VERTICAL SCALING
- Sistemin / Veritabanının yatayda ölçeklenebilir olması ucuz ve çok sayıda makinenin aynı anda kullanılması anlamına gelir.Yatayda scaling sayesinde yedeklilik de performans artışıda sağlanabilir.
HORIZONTAL SCALING
- Sistemin / Veritabanının dikeyde ölçeklenebilir olması bir tane çok güçlü aynı zamanda pahalı bir makine/donanım kullanılmasıdır.Donanım kısıtları mevcuttur.
**Yatay ölçeklebilirlikte yüzlerce binlerce makinelik server(sunucu) ağı kurulabilir.Yatay dikeye göre daha zordur
SOKET IO
- Gerçek zamanlı ve veri alışverişine ihtiyaç duyan uygulamalar geliştirmek için kullanılan Node js modülüdür.
- Her platformda çalışan güvenilir ve hızlı olmaya odaklanmış gerçek zamanlı , çift yönlü ve olay tabanlı bir iletişim sağlayan yapıdır.
- Yani normalde node js olay yapısında gelen requestleri alır ve onlara göre cevap üretir ve bu ürettiği cevabı client'e gönderir.Kullanıcıdan istek geldiğinde server ile client arasında bir kanal açılır ve node js cevabı üretip client'a gönderdikten sonra kanal kapanır ve olay bitmiş olur.Ancak online bir oyun oynuyorsanız bu durum farklı olur çünkü anlık olarak hem diğer etkileşimleri görmemiz hemde göstermemiz gerekir.Bunu sağlayan olay Socket io'dur.Node js normal req/res olayında gelen isteğe cevap hazırlayıp gönderince aradaki kanal kapanıyorken, socket io'da aradaki kanal taraflardan biri feshedene kadar devam eder.Böylece arada bağlantı kurmaya çalışmadan taraflar arası sadece veri akışı olur.Eğer socket io modülü olmasaydı node js her seferinde kullanıcıyla TCP connection açacak ve zaman,enerji ve gereksiz fazla internet sarfiyatına yol açacaktı
npm NEDİR ?
- Node js için gereken modülleri yüklemek ,silmek, güncellemek ve listelemek için kullanılan paket yöneticisidir.Yani node js ile birlikte çalışır ve node js'in paket yöneticisidir.
## Paketleri kullanabilmek için projenizin package.json adlı dosyayı içermesi gerekmektedir. Bu paketin içinde bazı metaveri bulacaksınız.Metaveri projenin aşağıdaki sırayla bazı detaylarını gösterir:
->Projenin adı
->Giriş sürümü
->Açıklaması
->Giriş nokrası
->Test komutları
->Git deposu
->Anahtar kelimeler
->Lisans
->Bağımlılıklar
->devBağımlılıklar
Metaveri projeyi tanımlamaya yardımcı olur ve kullanıcıların hakkında bilgi alması için ana hat işlevi görür.
NODEMON
- Manuel olarak sunucuya reset atmamıza gerek kalmadan yapılan değişiklikler neticesinde otomatik reset işlemini uygulayacak ve değişiklikleri yayına yansıtacaktır.
LOAD BALANCER
- Server üzerindeki fazla yükleri diğer serverlara dağıtarak işlemlerin birden fazla makinede kısa sürede çözülmesini sağlar.
- Yük dengeleyiciler , yükü dağıttıkları sistemlerin sağlıklı olup olmadığını belirli aralıklarla kontrol ederek sağlıklı çalışmayan sunuculara trafiği yönlendirmekten imtina edebilirler. Bu sayede, yük dengeleyiciler sistemlerimizin ölçeklenmesini sağladıkları gibi yüksek erişilebilirliğini sağlamak için de kullanılırlar.
- Problemli sunucuya yeni istek gönderilmez ve kullanıcıların problemden etkilenmemesi sağlanır.
- Load balancer sayesinde uygulama güncellemeri sistemde kesintiye sebep olmadan yapılabilir.
- İdeal koşullarda LB'ler gelen istekleri sunuculara rastgele ya da Round-Robin yani eşit bir biçimde dağıtırlar.İstersek bütün mesajları aynı suncuyada gönderebiliriz.
- HAProxy ve nginx en bilinen yazılım tabanlı yük dağıtıcılardır.
NGINX(vekil)
- Yüksek trafikli ve yoğun istek girişi olan web siteleri için biçilmiş kaftandır.Apache ve lighttpd ile karşılaştırıldığında çok daha az cpu kullanır.
- Alternatifler ile karşılaştırıldığında %400 daha performanslı ve hızlı olduğu görülmektedir.
- Temel özellikleri : reverse proxy , load balancing , virtual host , otomatik indeksleme
Reverse Proxy
* İstemciden gelen istekleri sunucu adına alan vekil sunucu diyebiliriz.Gelen istekleri karşılayarak sunucuya iletir ve dönen cevapları istemciye iletir. . Sağladığı avantajlar
-> Sunucuların varlığını ve özelliğini gizleyebilir,
-> İstemcileri web tabanlı saldırılara karşı koruyabilir.
-> Web sunucular üzerinden yükü azaltarak , web isteklerine hızlı bir şekilde cevap verebilir.
SSL KONFİGÜRASYONU
- SSL, server ile alıcı iletişimi esnasında verilerin şifrelenerek yapılması işlemidir.
HAProxy
- Http/tcp protokollerinde load balancer ve proxy hizmeti veren açık kaynak kodlu bir web servisidir.Yüksek performans sayesinde birçok populer web siteleri alt yapısını kullanmaktadır.
İŞLETİM SİSTEMLERİNDE PROCESS KAVRAMI
- Bir işletim sistemi üzerinde herhangi bir dille kodlanmış ve bir compiler ile derlenmiş ve daha sonra hafızaya yüklenerek işlemcide çalıştırılan programlara verilen isimdir.
- Genel anlamda her program bir process olarak düşünülebilir , ancak bir programın birden fazla processi olabileceği gibi her process yeni başka processlerde üretebilir.
- İşletim sisteminin tasarımına göre değişmekle birlikte işlemler(process) kendi adres alanlarında çalışırlar ve hafıza koruması uygulanır.Bu sayede bir işlemin başka işlemlerin bilgisine erişmesi engellenmiştir.
THREAD KAVRAMI
- Bir işletim sisteminde ya da yazılan bir programda birden fazla işin aynı anda yapılması için kullanılır.
- Kısacası bir thread'in var olması için önce bir işlemin var olması gerekir.
- Process'in altında çalışır.
- Örneğin web sunucumuza bağlanan her istemci için thread oluşturulur.Server'da bir tane process'in altında binlerce thread çalışabilmektedir.Ki genelde bir sunuca bir tane process çalışır.
- Mimaride bir tane sürekli dinleyen thread vardır.Gelen bağlantılar için hazır bekliyor.Bir client geldiğinde ise bağlantı için onu başka bir thread'e atıyor.
Modül
- Bir yazılımın ; bir veya daha fazla rutin işlemini içeren parçasına verilen isimdir.
Node js Express Modülü
- Web sunucu çatısıdır.(framework).
- İçerisinde bulunan http modülünü kullanarak web uygulamalarını kolay ve hızlı bir şekilde geliştirmeyi sağlar.
- Web uygulamalarını kolay ve hızlı bir şekilde geliştirmeyi sağlar
BROADCAST
- Server'a bağlı olan tüm client'ler arasında bir haberleşme ağı sağlayan yahut iletişim bağı oluşturulmasını belirten özel bir adrestir.Eğer ki bir mesaj , bir client tarafından broadcast üzerinden gönderilmişse , o TCP bağlantısına bağlı olan tüm clientlere iletilecektir.
Comments
Post a Comment