SlideShare a Scribd company logo
1 of 42
Node.js w dużej skali


DreamLab Onet.pl
Kraków, 25 marca 2012
Plan




 • Onet.Cloud

 • Metody skalowania

 • Specyficzne aspekty działania w dużej skali

 • Uruchomienie SG
NodeJS
Dynamiczna rzeczywistość (Cloud)
NodeJS SDK
Skalowanie




http://www.visualphotos.com/
Skalowanie – Wątki vs Procesy




                                http://www.michaeljohngrist.com/2009/02/ryogoku-sumo/
Procesy - Cluster
Procesy - Cluster
Procesy - Cluster
Isolate




          http://www.flickr.com/photos/pepemczolz/5314122337/
Wątki - node-threads-a-gogo



function fibo (n) {
   return n > 1 ? fibo(n - 1) + fibo(n - 2) : 1;
}
function cb (err, data) {
   process.stdout.write(data); this.eval('fibo(35)', cb);
}

var thread= require('threads_a_gogo').create();

thread.eval(fibo).eval('fibo(35)', cb);




                 https://github.com/xk/node-threads-a-gogo
A my robimy to tak
A my robimy to tak




                     Storage
A my robimy to tak




                     Storage
A my robimy to tak




       LB            Storage
Problem 1. Ograniczenia




                          http://hdw.eweb4.com/out/126191.html
Problem 2. Pule połączeń



        NodeJS App




                                        Storage
           Business        Connection
            Logic             Pool
Problem 2. Pule połączeń



        NodeJS App




                                        Storage
           Business        Connection
            Logic             Pool
Problem 2. Pule połączeń



        NodeJS App




                                        Storage
           Business        Connection
            Logic             Pool
Problem 2. Pule połączeń



        NodeJS App




                                        Storage
           Business        Connection
            Logic             Pool
Problem 2. Pule połączeń



        NodeJS App




                                        Storage
           Business        Connection
            Logic             Pool
Problem 2. Pule połączeń



        NodeJS App




                                        Storage
           Business        Connection
            Logic             Pool
Problem 2. Pule połączeń



        NodeJS App




                                        Storage
           Business        Connection
            Logic             Pool
Problem 2. Pule połączeń



        NodeJS App




                                        Storage
           Business        Connection
            Logic             Pool
Problem 2. Pule połączeń



        NodeJS App




                                        Storage
           Business        Connection
            Logic             Pool
Problem 2. Pule połączeń




export.request = function(options, cb) {
 if (options.agent === undefined) {
   options.agent = getAgent(options.host, options.port);
 } else if (options.agent === false) {
   options.agent = new Agent(options);
 }
 return exports._requestFromAgent(options, cb);
};
Problem 3. Zarządzanie konfiguracją




                                      http://www.wheatandtares.org/2010/11/29/change-without-change/
Problem 3. Zarządzanie konfiguracją




                                      http://svn.apache.org/repos/asf/zookeeper/logo/
Problem 4. Operacje blokujące




 • Buffer.toString()
 • JSON.parse
 • Gzip
NodeJS + moduły w C = NodeJS++




                          http://www.tecnologiadiaria.com/2010/12/configurar-tiempo-expiracion-cache.html
Uriparser 3 razy szybszy niż url.parse




 Tak robią wszyscy:
 var handler = function(req, res) {
     var http = require('http');
     var u = http.parse(req.url);
 }

 Tak robimy my:
 var handler = function(req, res) {
     var uriparser = require('uriparser');
     var u = uriparser.parse('http://www.onet.pl/);
 }


               https://github.com/DreamLab/node-uriparser
CPU affinity




               http://www.ksl.com/?nid=148&sid=12793814
Kilkaset tyś req/min




                       http://www.onet.pl/
Uptime > 99.9%




                 http://www.onet.pl/
Wiele razy wycofane testy




                            http://9gag.com/
Charakterystyka ruchu




        Noc. Nuuuda.
Charakterystyka ruchu




    Ludzie przyszli do pracy
    i wchodzą na Onet ;)
Charakterystyka ruchu




        100% ruchu
        z chmury!!
Charakterystyka ruchu



                        Koniec testów.
                        Otwieramy kolejnego szampana
Charakterystyka ruchu




                        Użytkownicy przeczytali już
                        cały Onet i idą spać
Dziękuję za uwagę


Blog
 http://it-onet.blogujacy.pl/

Github
 https://github.com/DreamLab

More Related Content

Similar to Node.js w dużej skali

Testowanie rozwiązań serverless z LocalStack
Testowanie rozwiązań serverless z LocalStackTestowanie rozwiązań serverless z LocalStack
Testowanie rozwiązań serverless z LocalStackThe Software House
 
PLNOG 8: Tomasz Sawiak - Log management i analizy > to czego nie widać
PLNOG 8: Tomasz Sawiak - Log management i analizy > to czego nie widać PLNOG 8: Tomasz Sawiak - Log management i analizy > to czego nie widać
PLNOG 8: Tomasz Sawiak - Log management i analizy > to czego nie widać PROIDEA
 
Co nowego w VS 2013 dla programistów ASP.NET?
Co nowego w VS 2013 dla programistów ASP.NET?Co nowego w VS 2013 dla programistów ASP.NET?
Co nowego w VS 2013 dla programistów ASP.NET?Bartlomiej Zass
 
Michał Dec - Quality in Clouds
Michał Dec - Quality in CloudsMichał Dec - Quality in Clouds
Michał Dec - Quality in Cloudskraqa
 
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...The Software House
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowychTomasz Borowski
 
Optimizing Drupal Performance (Polish)
Optimizing Drupal Performance (Polish)Optimizing Drupal Performance (Polish)
Optimizing Drupal Performance (Polish)Timur Kamanin
 
4Developers 2015: .NET 2015 - co nowego? - Michał Dudak, Future Processing
4Developers 2015: .NET 2015 - co nowego? - Michał Dudak, Future Processing4Developers 2015: .NET 2015 - co nowego? - Michał Dudak, Future Processing
4Developers 2015: .NET 2015 - co nowego? - Michał Dudak, Future ProcessingPROIDEA
 
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.Wojciech Barczyński
 
Magento Meetup Wrocław 6. "Venia Storefront Concept", Piotr Makowski VIRTUA
Magento Meetup Wrocław 6. "Venia Storefront Concept", Piotr Makowski VIRTUAMagento Meetup Wrocław 6. "Venia Storefront Concept", Piotr Makowski VIRTUA
Magento Meetup Wrocław 6. "Venia Storefront Concept", Piotr Makowski VIRTUAMagento Meetup Wrocław
 
CI oraz CD w złożonym projekcie o małym budżecie
CI oraz CD w złożonym projekcie o małym budżecieCI oraz CD w złożonym projekcie o małym budżecie
CI oraz CD w złożonym projekcie o małym budżecieGrzegorz Godlewski
 
Aplikacje internetowe (2010)
Aplikacje internetowe (2010)Aplikacje internetowe (2010)
Aplikacje internetowe (2010)Adrian Kalbarczyk
 
GET.NET - Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
GET.NET -  Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...GET.NET -  Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
GET.NET - Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...Michal Furmankiewicz
 
Microservieces and their communication (RabbitMQ/SIDEKIQ)
Microservieces and their communication (RabbitMQ/SIDEKIQ)Microservieces and their communication (RabbitMQ/SIDEKIQ)
Microservieces and their communication (RabbitMQ/SIDEKIQ)infakt
 
Google App Engine i Google Play Services w Twoich aplikacjach
Google App Engine i Google Play Services w Twoich aplikacjachGoogle App Engine i Google Play Services w Twoich aplikacjach
Google App Engine i Google Play Services w Twoich aplikacjach3camp
 

Similar to Node.js w dużej skali (20)

Testowanie rozwiązań serverless z LocalStack
Testowanie rozwiązań serverless z LocalStackTestowanie rozwiązań serverless z LocalStack
Testowanie rozwiązań serverless z LocalStack
 
PLNOG 8: Tomasz Sawiak - Log management i analizy > to czego nie widać
PLNOG 8: Tomasz Sawiak - Log management i analizy > to czego nie widać PLNOG 8: Tomasz Sawiak - Log management i analizy > to czego nie widać
PLNOG 8: Tomasz Sawiak - Log management i analizy > to czego nie widać
 
Co nowego w VS 2013 dla programistów ASP.NET?
Co nowego w VS 2013 dla programistów ASP.NET?Co nowego w VS 2013 dla programistów ASP.NET?
Co nowego w VS 2013 dla programistów ASP.NET?
 
Mongodb with Rails
Mongodb with RailsMongodb with Rails
Mongodb with Rails
 
Michał Dec - Quality in Clouds
Michał Dec - Quality in CloudsMichał Dec - Quality in Clouds
Michał Dec - Quality in Clouds
 
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
 
university day 1
university day 1university day 1
university day 1
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowych
 
Optimizing Drupal Performance (Polish)
Optimizing Drupal Performance (Polish)Optimizing Drupal Performance (Polish)
Optimizing Drupal Performance (Polish)
 
4Developers 2015: .NET 2015 - co nowego? - Michał Dudak, Future Processing
4Developers 2015: .NET 2015 - co nowego? - Michał Dudak, Future Processing4Developers 2015: .NET 2015 - co nowego? - Michał Dudak, Future Processing
4Developers 2015: .NET 2015 - co nowego? - Michał Dudak, Future Processing
 
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
 
Magento Meetup Wrocław 6. "Venia Storefront Concept", Piotr Makowski VIRTUA
Magento Meetup Wrocław 6. "Venia Storefront Concept", Piotr Makowski VIRTUAMagento Meetup Wrocław 6. "Venia Storefront Concept", Piotr Makowski VIRTUA
Magento Meetup Wrocław 6. "Venia Storefront Concept", Piotr Makowski VIRTUA
 
CI oraz CD w złożonym projekcie o małym budżecie
CI oraz CD w złożonym projekcie o małym budżecieCI oraz CD w złożonym projekcie o małym budżecie
CI oraz CD w złożonym projekcie o małym budżecie
 
Aplikacje internetowe (2010)
Aplikacje internetowe (2010)Aplikacje internetowe (2010)
Aplikacje internetowe (2010)
 
GET.NET - Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
GET.NET -  Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...GET.NET -  Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
GET.NET - Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
 
Warsjawa hackaton
Warsjawa hackatonWarsjawa hackaton
Warsjawa hackaton
 
Microservieces and their communication (RabbitMQ/SIDEKIQ)
Microservieces and their communication (RabbitMQ/SIDEKIQ)Microservieces and their communication (RabbitMQ/SIDEKIQ)
Microservieces and their communication (RabbitMQ/SIDEKIQ)
 
Google App Engine i Google Play Services w Twoich aplikacjach
Google App Engine i Google Play Services w Twoich aplikacjachGoogle App Engine i Google Play Services w Twoich aplikacjach
Google App Engine i Google Play Services w Twoich aplikacjach
 
Środowisko PWA
Środowisko PWAŚrodowisko PWA
Środowisko PWA
 
Kickoff to Node.js
Kickoff to Node.jsKickoff to Node.js
Kickoff to Node.js
 

More from OnetIT

Onet barcamp 4 - Usługa w chmurze, Onet Accelerator
Onet barcamp 4 - Usługa w chmurze, Onet AcceleratorOnet barcamp 4 - Usługa w chmurze, Onet Accelerator
Onet barcamp 4 - Usługa w chmurze, Onet AcceleratorOnetIT
 
Onet barcamp 4 - Środowisko PaaS/SaaS w Onet, czyli jak zarządzamy 1k aplikacji.
Onet barcamp 4 - Środowisko PaaS/SaaS w Onet, czyli jak zarządzamy 1k aplikacji.Onet barcamp 4 - Środowisko PaaS/SaaS w Onet, czyli jak zarządzamy 1k aplikacji.
Onet barcamp 4 - Środowisko PaaS/SaaS w Onet, czyli jak zarządzamy 1k aplikacji.OnetIT
 
Onet barcamp 4 - Public Cloud - VMware Solution
Onet barcamp 4 - Public Cloud - VMware SolutionOnet barcamp 4 - Public Cloud - VMware Solution
Onet barcamp 4 - Public Cloud - VMware SolutionOnetIT
 
Onet barcamp 4 - Po co nam chmura
Onet barcamp 4 -  Po co nam chmuraOnet barcamp 4 -  Po co nam chmura
Onet barcamp 4 - Po co nam chmuraOnetIT
 
Onet barcamp 4 - DRP chmury
Onet barcamp 4 - DRP chmuryOnet barcamp 4 - DRP chmury
Onet barcamp 4 - DRP chmuryOnetIT
 
Onet barcamp 4 - Cloud Storage
Onet barcamp 4  - Cloud StorageOnet barcamp 4  - Cloud Storage
Onet barcamp 4 - Cloud StorageOnetIT
 
Barcamp Onet. Graphite i przyjaciele
Barcamp Onet. Graphite i przyjacieleBarcamp Onet. Graphite i przyjaciele
Barcamp Onet. Graphite i przyjacieleOnetIT
 
Barcamp Onet. Monitorowanie Chmury Wyzwania i wymagania
Barcamp Onet. Monitorowanie Chmury Wyzwania i wymaganiaBarcamp Onet. Monitorowanie Chmury Wyzwania i wymagania
Barcamp Onet. Monitorowanie Chmury Wyzwania i wymaganiaOnetIT
 
Barcamp Onet. Dlaczego DevOps gwarantuje dobry monitoring?
Barcamp Onet. Dlaczego DevOps gwarantuje dobry monitoring?Barcamp Onet. Dlaczego DevOps gwarantuje dobry monitoring?
Barcamp Onet. Dlaczego DevOps gwarantuje dobry monitoring?OnetIT
 
Barcamp Onet. Monitorowanie prędkości ładowania się stron internetowych
Barcamp Onet. Monitorowanie prędkości ładowania się stron internetowychBarcamp Onet. Monitorowanie prędkości ładowania się stron internetowych
Barcamp Onet. Monitorowanie prędkości ładowania się stron internetowychOnetIT
 
Barcamp Onet. Monitoring projektow agile
Barcamp Onet. Monitoring projektow agileBarcamp Onet. Monitoring projektow agile
Barcamp Onet. Monitoring projektow agileOnetIT
 
Noc informatyka
Noc informatykaNoc informatyka
Noc informatykaOnetIT
 

More from OnetIT (12)

Onet barcamp 4 - Usługa w chmurze, Onet Accelerator
Onet barcamp 4 - Usługa w chmurze, Onet AcceleratorOnet barcamp 4 - Usługa w chmurze, Onet Accelerator
Onet barcamp 4 - Usługa w chmurze, Onet Accelerator
 
Onet barcamp 4 - Środowisko PaaS/SaaS w Onet, czyli jak zarządzamy 1k aplikacji.
Onet barcamp 4 - Środowisko PaaS/SaaS w Onet, czyli jak zarządzamy 1k aplikacji.Onet barcamp 4 - Środowisko PaaS/SaaS w Onet, czyli jak zarządzamy 1k aplikacji.
Onet barcamp 4 - Środowisko PaaS/SaaS w Onet, czyli jak zarządzamy 1k aplikacji.
 
Onet barcamp 4 - Public Cloud - VMware Solution
Onet barcamp 4 - Public Cloud - VMware SolutionOnet barcamp 4 - Public Cloud - VMware Solution
Onet barcamp 4 - Public Cloud - VMware Solution
 
Onet barcamp 4 - Po co nam chmura
Onet barcamp 4 -  Po co nam chmuraOnet barcamp 4 -  Po co nam chmura
Onet barcamp 4 - Po co nam chmura
 
Onet barcamp 4 - DRP chmury
Onet barcamp 4 - DRP chmuryOnet barcamp 4 - DRP chmury
Onet barcamp 4 - DRP chmury
 
Onet barcamp 4 - Cloud Storage
Onet barcamp 4  - Cloud StorageOnet barcamp 4  - Cloud Storage
Onet barcamp 4 - Cloud Storage
 
Barcamp Onet. Graphite i przyjaciele
Barcamp Onet. Graphite i przyjacieleBarcamp Onet. Graphite i przyjaciele
Barcamp Onet. Graphite i przyjaciele
 
Barcamp Onet. Monitorowanie Chmury Wyzwania i wymagania
Barcamp Onet. Monitorowanie Chmury Wyzwania i wymaganiaBarcamp Onet. Monitorowanie Chmury Wyzwania i wymagania
Barcamp Onet. Monitorowanie Chmury Wyzwania i wymagania
 
Barcamp Onet. Dlaczego DevOps gwarantuje dobry monitoring?
Barcamp Onet. Dlaczego DevOps gwarantuje dobry monitoring?Barcamp Onet. Dlaczego DevOps gwarantuje dobry monitoring?
Barcamp Onet. Dlaczego DevOps gwarantuje dobry monitoring?
 
Barcamp Onet. Monitorowanie prędkości ładowania się stron internetowych
Barcamp Onet. Monitorowanie prędkości ładowania się stron internetowychBarcamp Onet. Monitorowanie prędkości ładowania się stron internetowych
Barcamp Onet. Monitorowanie prędkości ładowania się stron internetowych
 
Barcamp Onet. Monitoring projektow agile
Barcamp Onet. Monitoring projektow agileBarcamp Onet. Monitoring projektow agile
Barcamp Onet. Monitoring projektow agile
 
Noc informatyka
Noc informatykaNoc informatyka
Noc informatyka
 

Node.js w dużej skali