4. wydajność I/O
OPERATION CPU CYCLES
300,000,000
240,000,000
225,000,000
150,000,000
75,000,000
41,000,000
3
14
250
L1
0
L2
RAM
Source: Ryan Dahl's 2008.11.08 presentation on Node.js
DISK
NETWORK
5. waiting ...
ROUTE REQUEST
QUERY DB OR WEB SERVICE
OPERACJE I/O ZAJMUJĄ O WIELE
WIĘCEJ CZASU NIŻ INNE OPERACJE
W TWOJEJ APLIKACJI
PROCESS RESULT
WRITE TO LOG FILE
STANDARDOWE APLIKACJE POSIADAJĄCE
OPERACJE I/O CZEKAJĄ PRZEZ WIĘKSZOŚĆ
CZASU
FORMAL RESPONSE
Source: Ryan Dahl's 2008.11.08
presentation on Node.js
6. skalowalnie przy użyciu wątków
THREAD 1
THREAD 2
THREAD 3
THREAD 4
Source: Ryan Dahl's 2008.11.08 presentation on Node.js
OBSŁUGA WĄTKÓW PRZEZ
SYSTEM OS JEST “DROGA”
ALOKACJA PAMIĘCI, “CONTEXT SWITCHING”
I CZEKANIE NA WYKONANIE SIĘ OPERACJI
I/O
SZTUCZNE OGRANICZENIE ILOŚCI
JEDNOCZESNYCH POŁĄCZEO
7. skalowalnie przy użyciu “Event Loop”
PROCESS 1
NETWORK
FILESYSTEM
Thread Pool and Async I/I APIs
JEDEN WĄTEK W CAŁEJ APLIKACJI
DELEGUJE OPERACJE I/O
MECHANIZMOWI “THREADPOOL”
Source: Ryan Dahl's 2008.11.08
presentation on Node.js
8. event loop
thread pool
event
queue
NODE.JS KORZYSTA
Z BIBLIOTEKI LIBEV DO OBSŁUGI
MECHANIZMU EVENT-LOOP
filesystem
EVENT
LOOP
network
process
other
PO WYKONANIU SIĘ OPERACJI I/O,
ZA POMOCĄ MECHANIZMU “CALLBACK”
WYNIK ZOSTAJE PRZEKAZANY SPOWROTEM
DO GŁÓWNEGO WĄTKU APLIKACJI
Source: Ryan Dahl's 2008.11.08 presentation on Node.js
10. problemy i wyzwania
thread pool
NIESTABILNE MODUŁY API
TRUDNY W DEBUGOWANIU
event
queue
filesystem
EVENT
LOOP
network
process
other
MAŁO DOŚWIADCZONYCH SPECJALISTÓW
NA RYNKU JEST DODATKOWYM RYZYKIEM
DLA FIRM CHCĄCYCH UŻYWAD NODE.JS
W CELACH KOMERCYJNYCH
0:2
Source: Ryan Dahl's 2008.11.08 presentation on Node.js
11. popularność
Job trends from indeed.com
NODES
PHP
JAVA
PYTHON
RUBY
.NET
12,000
11,000
10,000
9,000
8,000
7,000
6,000
5,000
4,000
3,000
2,000
1,000
0
Jan ’06
Jan ’07
PONAD 1000 OSÓB
ONLINE NA IRC'U NODE.JS
Jan ’08
Jan ’09
Jan ’10
OGROMNY WZROST
ZAINTERESOWANIA W OSTATNICH 3
LATACH
Jan ’11
Jan ’12
Jan ’13
O WIELE WIĘKSZY POPYT NIŻ PODAŻ W
WIĘKSZYCH HUB'ACH TECHNOLOGICZNYCH
(NP. LONDYN, SAN FRANCISCO)
14. PayPal: Node.js vs. Java
PAYPAL'S “ACCOUNT OVERVIEW”
“BUILT ALMOST TWICE AS FAST WITH
FEWER PEOPLE”
“WRITTEN IN 33% FEWER LINES OF CODE”
“CONSTRUCTED WITH 40% FEWER FILES”
15. estimote ( Kraków,PL )
SZUKAJĄ LUDZI DO BUDOWANIA ICH
API W NODE.JS
ZNALEZIENIE KOGOŚ Z 3 LETNIM DOŚWIADCZENIEM
W NODE.JS JEST NAPRAWDĘ HARDDD W POLSCE... :-)