18

An introduction to Node.js and Sails.js at Meet.js Katowice (in polish)

Embed Size (px)

DESCRIPTION

slajdy do prezentacji przygotowane specjalnie na meet.js Katowice

Citation preview

Page 1: An introduction to Node.js and Sails.js at Meet.js Katowice (in polish)
Page 2: An introduction to Node.js and Sails.js at Meet.js Katowice (in polish)

AN INTRODUCTION TO NODE.JS+ SAILS.JS QUICK DEMO

Meet.js Katowice – 5 lutego 2014 – Kamil PrzeoRskiwww.facebook.com/groups/nodejsPL

Page 3: An introduction to Node.js and Sails.js at Meet.js Katowice (in polish)

słowo wstępu

• teoria node.js• korzyści• wyzwania / problemy• popyt / podaż – potencjalne możliwości kariery :-)• przykłady i najlepsze zastosowania node.js• krótkie demo sails.js• przyszłość node.js ( dyskusja :-)

Page 4: An introduction to Node.js and Sails.js at Meet.js Katowice (in polish)

wydajność I/O

300,000,000

225,000,000

150,000,000

75,000,000

0 3

L1

14

L2

250

RAM DISK NETWORK

41,000,000

240,000,000

OPERATION CPU CYCLES

Source: Ryan Dahl's 2008.11.08 presentation on Node.js

Page 5: An introduction to Node.js and Sails.js at Meet.js Katowice (in polish)

waiting ...

ROUTE REQUEST QUERY DB OR WEB SERVICE PROCESS RESULT WRITE TO LOG FILE FORMAL RESPONSE

OPERACJE I/O ZAJMUJĄ O WIELE WIĘCEJ CZASU NIŻ INNE OPERACJE W TWOJEJ APLIKACJI

STANDARDOWE APLIKACJE POSIADAJĄCE OPERACJE I/O CZEKAJĄ PRZEZ WIĘKSZOŚĆ CZASU

Source: Ryan Dahl's 2008.11.08 presentation on Node.js

Page 6: An introduction to Node.js and Sails.js at Meet.js Katowice (in polish)

skalowalnie przy użyciu wątków

OBSŁUGA WĄTKÓW PRZEZSYSTEM OS JEST “DROGA”

ALOKACJA PAMIĘCI, “CONTEXT SWITCHING”I CZEKANIE NA WYKONANIE SIĘ OPERACJI I/O

SZTUCZNE OGRANICZENIE ILOŚCI JEDNOCZESNYCH POŁĄCZEŃ

THREAD 1

THREAD 2

THREAD 3

THREAD 4

Source: Ryan Dahl's 2008.11.08 presentation on Node.js

Page 7: An introduction to Node.js and Sails.js at Meet.js Katowice (in polish)

skalowalnie przy użyciu “Event Loop”

JEDEN WĄTEK W CAŁEJ APLIKACJI DELEGUJE OPERACJE I/OMECHANIZMOWI “THREADPOOL”

Source: Ryan Dahl's 2008.11.08 presentation on Node.js

PROCESS 1

NETWORK FILESYSTEM

Thread Pool and Async I/I APIs

Page 8: An introduction to Node.js and Sails.js at Meet.js Katowice (in polish)

filesystem

network

process

other

event loop

EVENTLOOP

eventqueue

NODE.JS KORZYSTAZ BIBLIOTEKI LIBEV DO OBSŁUGIMECHANIZMU EVENT-LOOP

PO WYKONANIU SIĘ OPERACJI I/O,ZA POMOCĄ MECHANIZMU “CALLBACK”WYNIK ZOSTAJE PRZEKAZANY SPOWROTEMDO GŁÓWNEGO WĄTKU APLIKACJI

Source: Ryan Dahl's 2008.11.08 presentation on Node.js

thread pool

Page 9: An introduction to Node.js and Sails.js at Meet.js Katowice (in polish)

platforma

• V8 JAVASCRIPT VIRTUAL MACHINE

• LIBEIO (THREAD POOL)

• LIBEV (EVENT LOOP)

Java Script NODE STANDARD LIBRARY

NODE BINDINGS

C V8 ThreadPool(libeio)

EventLoop(livev)

Page 10: An introduction to Node.js and Sails.js at Meet.js Katowice (in polish)

filesystem

network

process

other

problemy i wyzwania

EVENTLOOP

eventqueueNIESTABILNE MODUŁY API

TRUDNY W DEBUGOWANIU

MAŁO DOŚWIADCZONYCH SPECJALISTÓWNA RYNKU JEST DODATKOWYM RYZYKIEMDLA FIRM CHCĄCYCH UŻYWAĆ NODE.JSW CELACH KOMERCYJNYCH

0:2

Source: Ryan Dahl's 2008.11.08 presentation on Node.js

thread pool

Page 11: An introduction to Node.js and Sails.js at Meet.js Katowice (in polish)

popularność

12,000

9,000

6,000

3,000

0

1,000

2,000

4,000

5,000

7,000

8,000

10,000

11,000

Jan ’12Jan ’06 Jan ’07 Jan ’08 Jan ’09 Jan ’10 Jan ’11 Jan ’13

PONAD 1000 OSÓBONLINE NA IRC'U NODE.JS

OGROMNY WZROST ZAINTERESOWANIA W OSTATNICH 3 LATACH

O WIELE WIĘKSZY POPYT NIŻ PODAŻ W WIĘKSZYCH HUB'ACH TECHNOLOGICZNYCH (NP. LONDYN, SAN FRANCISCO)

Job trends from indeed.com

NODES PHP JAVA PYTHON RUBY .NET

Page 12: An introduction to Node.js and Sails.js at Meet.js Katowice (in polish)

popularność_2

60000

30000

0

10000

20000

40000

50000

70000

80000

Jul 2013Jul 2010 Jan 2011 Jul 2011 Jan 2012 Jul 2012 Jan 2013 Jan 2014

ILOŚĆ MODUŁÓW ZWIĘKSZASIĘ DRAMATYCZNIE (ŻÓŁTALINIA)

POPULARNOŚĆ NODE.JS W RASBERRY PI ( INTERNET OF THINGS )

NIESTETY JAKOŚĆ MODUŁÓWMA WIELE DO ŻYCZENIA ( POTRZEBA CZASU )

Module counts

Rubygems.org PyPl php nuget Node.js

Page 13: An introduction to Node.js and Sails.js at Meet.js Katowice (in polish)

PayPal: Node.js vs. Java

800

600

400

200

01 5 10 15

1600

1400

1200

1000

1800

8

6

4

2

0

14

12

10

2000

Java application

Page

s/se

c

Acco

unt

resp

onse

tim

e (m

s)

800

600

400

200

01 5 10 15

1400

1200

1000

25

20

15

10

5

0

30

25

20

Node.js application

Page

s/se

c

Pages/sec /home /wallet /activity

Page 14: An introduction to Node.js and Sails.js at Meet.js Katowice (in polish)

PayPal: Node.js vs. Java

PAYPAL'S “ACCOUNT OVERVIEW”

“BUILT ALMOST TWICE AS FAST WITHFEWER PEOPLE”

“WRITTEN IN 33% FEWER LINES OF CODE”

“CONSTRUCTED WITH 40% FEWER FILES”

Page 15: An introduction to Node.js and Sails.js at Meet.js Katowice (in polish)

estimote ( Kraków,PL )

SZUKAJĄ LUDZI DO BUDOWANIA ICHAPI W NODE.JS

ZNALEZIENIE KOGOŚ Z 3 LETNIM DOŚWIADCZENIEMW NODE.JS JEST NAPRAWDĘ HARDDD W POLSCE... :-)

Page 16: An introduction to Node.js and Sails.js at Meet.js Katowice (in polish)

sails.js

“MVC PATTERN” WZOROWANYNA ROR'ZE

WSPIERA BUDOWANIEAPLIKACJI RESTOWYCH

SZYBKIE DEMO

Page 17: An introduction to Node.js and Sails.js at Meet.js Katowice (in polish)

Dziękuję :-)

Reach me at [email protected]

Meet.js Katowice – 5 lutego 2014 – Kamil PrzeoRskiwww.facebook.com/groups/nodejsPL

Page 18: An introduction to Node.js and Sails.js at Meet.js Katowice (in polish)