Suche senden
Hochladen
Node.JS - Campus Party Brasil 2011
•
16 gefällt mir
•
4,146 views
Emerson Macedo
Folgen
Apresentação de Node.JS feita na Campus Party 2011.
Weniger lesen
Mehr lesen
Technologie
Melden
Teilen
Melden
Teilen
1 von 210
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
JavaScript: agora é sério
JavaScript: agora é sério
Luciano Ramalho
Curso javascript básico
Curso javascript básico
Vinicius Dacal Lopes
JavaScript for Beginners
JavaScript for Beginners
SAPO Sessions
Desvendando a linguagem JavaScript
Desvendando a linguagem JavaScript
Rodrigo Branas
JavaScript - Expressões Regulares
JavaScript - Expressões Regulares
Rodrigo Branas
Introdução a JavaScript
Introdução a JavaScript
Bruno Catão
tmn - Introdução ao JavaScript
tmn - Introdução ao JavaScript
Claudio Gamboa
Introdução ao JavaScript
Introdução ao JavaScript
Carlos Roberto Gomes Junior
Empfohlen
JavaScript: agora é sério
JavaScript: agora é sério
Luciano Ramalho
Curso javascript básico
Curso javascript básico
Vinicius Dacal Lopes
JavaScript for Beginners
JavaScript for Beginners
SAPO Sessions
Desvendando a linguagem JavaScript
Desvendando a linguagem JavaScript
Rodrigo Branas
JavaScript - Expressões Regulares
JavaScript - Expressões Regulares
Rodrigo Branas
Introdução a JavaScript
Introdução a JavaScript
Bruno Catão
tmn - Introdução ao JavaScript
tmn - Introdução ao JavaScript
Claudio Gamboa
Introdução ao JavaScript
Introdução ao JavaScript
Carlos Roberto Gomes Junior
TDC 2011 Goiânia: Evolução da linguagem de programação JavaScript
TDC 2011 Goiânia: Evolução da linguagem de programação JavaScript
Rogério Moraes de Carvalho
Introdução a Linguagem de Programação Ruby
Introdução a Linguagem de Programação Ruby
Diego Rubin
Palestra Ruby
Palestra Ruby
Cássio Marques
Aprender Javascript e jQuery (UFCD
Aprender Javascript e jQuery (UFCD
Afonso Gomes
1.introducao java
1.introducao java
Kievnny Mendonca
Python - Programando em alto nível
Python - Programando em alto nível
Igor Sobreira
O futuro do elephante: as promessas do php para 2019
O futuro do elephante: as promessas do php para 2019
Cassio Santos
Criando sua própria linguagem de programação
Criando sua própria linguagem de programação
ronaldoferraz
M5-Desenvolvimento-Paginas-Web
M5-Desenvolvimento-Paginas-Web
diogoa21
Delphi Conference 2012 - Programação Baseado em Regras com RTTI
Delphi Conference 2012 - Programação Baseado em Regras com RTTI
Mario Guedes
Manual-de-php
Manual-de-php
diogoa21
Como Construir um Compilador cap-1
Como Construir um Compilador cap-1
Maellson Marques
Curso básico de Algoritmos com Python
Curso básico de Algoritmos com Python
Giancarlo Silva
Curso PHP UNIFACS 2014.1 – 1a Aula
Curso PHP UNIFACS 2014.1 – 1a Aula
Jonata Weber
Delphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-Thread
Delphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-Thread
Mario Guedes
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
ismaelstahelin
De Zero à Web com Python e Django
De Zero à Web com Python e Django
Osvaldo Santana Neto
Python - Introdução
Python - Introdução
fabiocerqueira
Introdução a Linguagem de Programação Python
Introdução a Linguagem de Programação Python
Flávio Ribeiro
Frameworks PHP
Frameworks PHP
Augusto Pascutti
Nodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis ter
Emerson Macedo
Secomp 2011 - Node.JS - Introdução
Secomp 2011 - Node.JS - Introdução
Emerson Macedo
Weitere ähnliche Inhalte
Was ist angesagt?
TDC 2011 Goiânia: Evolução da linguagem de programação JavaScript
TDC 2011 Goiânia: Evolução da linguagem de programação JavaScript
Rogério Moraes de Carvalho
Introdução a Linguagem de Programação Ruby
Introdução a Linguagem de Programação Ruby
Diego Rubin
Palestra Ruby
Palestra Ruby
Cássio Marques
Aprender Javascript e jQuery (UFCD
Aprender Javascript e jQuery (UFCD
Afonso Gomes
1.introducao java
1.introducao java
Kievnny Mendonca
Python - Programando em alto nível
Python - Programando em alto nível
Igor Sobreira
O futuro do elephante: as promessas do php para 2019
O futuro do elephante: as promessas do php para 2019
Cassio Santos
Criando sua própria linguagem de programação
Criando sua própria linguagem de programação
ronaldoferraz
M5-Desenvolvimento-Paginas-Web
M5-Desenvolvimento-Paginas-Web
diogoa21
Delphi Conference 2012 - Programação Baseado em Regras com RTTI
Delphi Conference 2012 - Programação Baseado em Regras com RTTI
Mario Guedes
Manual-de-php
Manual-de-php
diogoa21
Como Construir um Compilador cap-1
Como Construir um Compilador cap-1
Maellson Marques
Curso básico de Algoritmos com Python
Curso básico de Algoritmos com Python
Giancarlo Silva
Curso PHP UNIFACS 2014.1 – 1a Aula
Curso PHP UNIFACS 2014.1 – 1a Aula
Jonata Weber
Delphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-Thread
Delphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-Thread
Mario Guedes
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
ismaelstahelin
De Zero à Web com Python e Django
De Zero à Web com Python e Django
Osvaldo Santana Neto
Python - Introdução
Python - Introdução
fabiocerqueira
Introdução a Linguagem de Programação Python
Introdução a Linguagem de Programação Python
Flávio Ribeiro
Frameworks PHP
Frameworks PHP
Augusto Pascutti
Was ist angesagt?
(20)
TDC 2011 Goiânia: Evolução da linguagem de programação JavaScript
TDC 2011 Goiânia: Evolução da linguagem de programação JavaScript
Introdução a Linguagem de Programação Ruby
Introdução a Linguagem de Programação Ruby
Palestra Ruby
Palestra Ruby
Aprender Javascript e jQuery (UFCD
Aprender Javascript e jQuery (UFCD
1.introducao java
1.introducao java
Python - Programando em alto nível
Python - Programando em alto nível
O futuro do elephante: as promessas do php para 2019
O futuro do elephante: as promessas do php para 2019
Criando sua própria linguagem de programação
Criando sua própria linguagem de programação
M5-Desenvolvimento-Paginas-Web
M5-Desenvolvimento-Paginas-Web
Delphi Conference 2012 - Programação Baseado em Regras com RTTI
Delphi Conference 2012 - Programação Baseado em Regras com RTTI
Manual-de-php
Manual-de-php
Como Construir um Compilador cap-1
Como Construir um Compilador cap-1
Curso básico de Algoritmos com Python
Curso básico de Algoritmos com Python
Curso PHP UNIFACS 2014.1 – 1a Aula
Curso PHP UNIFACS 2014.1 – 1a Aula
Delphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-Thread
Delphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-Thread
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
De Zero à Web com Python e Django
De Zero à Web com Python e Django
Python - Introdução
Python - Introdução
Introdução a Linguagem de Programação Python
Introdução a Linguagem de Programação Python
Frameworks PHP
Frameworks PHP
Ähnlich wie Node.JS - Campus Party Brasil 2011
Nodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis ter
Emerson Macedo
Secomp 2011 - Node.JS - Introdução
Secomp 2011 - Node.JS - Introdução
Emerson Macedo
RubyMasters 2011 - Beyond Ruby with NodeJS
RubyMasters 2011 - Beyond Ruby with NodeJS
Emerson Macedo
Beyond Ruby with NodeJS - RubyConf Brasil 2010
Beyond Ruby with NodeJS - RubyConf Brasil 2010
Emerson Macedo
Node.js no Pagar.me
Node.js no Pagar.me
Pedro Franceschi
O bom, o mau, o vilão... e o node.js
O bom, o mau, o vilão... e o node.js
Nuno Paz
Uma visão rápida sobre Nodejs
Uma visão rápida sobre Nodejs
Rafael Soares
Web Sphere
Web Sphere
Fabricio Carvalho
Desenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e Servlets
Igo Coelho
TDC2015 - Internet das Coisas - OpenDevice
TDC2015 - Internet das Coisas - OpenDevice
Ricardo Rufino
Criando Webservice REST com NodeJS, NoSQL & Docker
Criando Webservice REST com NodeJS, NoSQL & Docker
Giovanni Kenji Shiroma
Node.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizar
Filipe Falcão
Rest workshop
Rest workshop
Diogo Gomes
Navegando em um mar de siglas do mundo java
Navegando em um mar de siglas do mundo java
Andrei Tognolo
XPT Framework
XPT Framework
Alexsandro Pereira
Hangout Tempo Real Eventos - Nodejs - Os Primeiros Passos
Hangout Tempo Real Eventos - Nodejs - Os Primeiros Passos
Jackson F. de A. Mafra
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Alexandre Tarifa
Cakephp 2.0 - O que mudou
Cakephp 2.0 - O que mudou
Felipe Vargas Rigo
Rest, Gateway e Compiladores
Rest, Gateway e Compiladores
Rodrigo Senra
TDC2016POA | Trilha Infraestrutura - Produção nove vezes ao dia - Como um tim...
TDC2016POA | Trilha Infraestrutura - Produção nove vezes ao dia - Como um tim...
tdc-globalcode
Ähnlich wie Node.JS - Campus Party Brasil 2011
(20)
Nodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis ter
Secomp 2011 - Node.JS - Introdução
Secomp 2011 - Node.JS - Introdução
RubyMasters 2011 - Beyond Ruby with NodeJS
RubyMasters 2011 - Beyond Ruby with NodeJS
Beyond Ruby with NodeJS - RubyConf Brasil 2010
Beyond Ruby with NodeJS - RubyConf Brasil 2010
Node.js no Pagar.me
Node.js no Pagar.me
O bom, o mau, o vilão... e o node.js
O bom, o mau, o vilão... e o node.js
Uma visão rápida sobre Nodejs
Uma visão rápida sobre Nodejs
Web Sphere
Web Sphere
Desenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e Servlets
TDC2015 - Internet das Coisas - OpenDevice
TDC2015 - Internet das Coisas - OpenDevice
Criando Webservice REST com NodeJS, NoSQL & Docker
Criando Webservice REST com NodeJS, NoSQL & Docker
Node.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizar
Rest workshop
Rest workshop
Navegando em um mar de siglas do mundo java
Navegando em um mar de siglas do mundo java
XPT Framework
XPT Framework
Hangout Tempo Real Eventos - Nodejs - Os Primeiros Passos
Hangout Tempo Real Eventos - Nodejs - Os Primeiros Passos
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Cakephp 2.0 - O que mudou
Cakephp 2.0 - O que mudou
Rest, Gateway e Compiladores
Rest, Gateway e Compiladores
TDC2016POA | Trilha Infraestrutura - Produção nove vezes ao dia - Como um tim...
TDC2016POA | Trilha Infraestrutura - Produção nove vezes ao dia - Como um tim...
Mehr von Emerson Macedo
ElixirConf 2019 - 10M Monthly Ad Insertions with Phoenix and Broadway
ElixirConf 2019 - 10M Monthly Ad Insertions with Phoenix and Broadway
Emerson Macedo
The Conf 2019 - Elixir - Emerson Macedo
The Conf 2019 - Elixir - Emerson Macedo
Emerson Macedo
Wanna be a manager? Not today - QCon São Paulo 2019
Wanna be a manager? Not today - QCon São Paulo 2019
Emerson Macedo
TheConf 2018 - How does your app behave when everything goes wrong
TheConf 2018 - How does your app behave when everything goes wrong
Emerson Macedo
DevConf OpenSanca 2018 - How does your application behaves when everything go...
DevConf OpenSanca 2018 - How does your application behaves when everything go...
Emerson Macedo
How your app behaves when everything goes wrong - Ruby Conf BR 2017
How your app behaves when everything goes wrong - Ruby Conf BR 2017
Emerson Macedo
Beyond your daily coding - The Conf Brazil 2017 Keynote
Beyond your daily coding - The Conf Brazil 2017 Keynote
Emerson Macedo
CEJS 2016 - Please learn that shit
CEJS 2016 - Please learn that shit
Emerson Macedo
How Elixir helped us scale our Video User Profile Service for the Olympics
How Elixir helped us scale our Video User Profile Service for the Olympics
Emerson Macedo
QCon SP 2016 - Video Authorization: from chaos to 25ms response time
QCon SP 2016 - Video Authorization: from chaos to 25ms response time
Emerson Macedo
Qcon Rio 2015 - Microservices
Qcon Rio 2015 - Microservices
Emerson Macedo
Microservices Case: GloboTV e Globosat Play
Microservices Case: GloboTV e Globosat Play
Emerson Macedo
Jogos com NodeJS e Browser - QCON SP 2011
Jogos com NodeJS e Browser - QCON SP 2011
Emerson Macedo
Javascript Orientado a Objetos - Fisl12
Javascript Orientado a Objetos - Fisl12
Emerson Macedo
1 encontro Node.JS Brasil
1 encontro Node.JS Brasil
Emerson Macedo
BrazilJS - Node.JS Realtime Web Applications
BrazilJS - Node.JS Realtime Web Applications
Emerson Macedo
DevInRio 2010 - NodeJS
DevInRio 2010 - NodeJS
Emerson Macedo
Mehr von Emerson Macedo
(17)
ElixirConf 2019 - 10M Monthly Ad Insertions with Phoenix and Broadway
ElixirConf 2019 - 10M Monthly Ad Insertions with Phoenix and Broadway
The Conf 2019 - Elixir - Emerson Macedo
The Conf 2019 - Elixir - Emerson Macedo
Wanna be a manager? Not today - QCon São Paulo 2019
Wanna be a manager? Not today - QCon São Paulo 2019
TheConf 2018 - How does your app behave when everything goes wrong
TheConf 2018 - How does your app behave when everything goes wrong
DevConf OpenSanca 2018 - How does your application behaves when everything go...
DevConf OpenSanca 2018 - How does your application behaves when everything go...
How your app behaves when everything goes wrong - Ruby Conf BR 2017
How your app behaves when everything goes wrong - Ruby Conf BR 2017
Beyond your daily coding - The Conf Brazil 2017 Keynote
Beyond your daily coding - The Conf Brazil 2017 Keynote
CEJS 2016 - Please learn that shit
CEJS 2016 - Please learn that shit
How Elixir helped us scale our Video User Profile Service for the Olympics
How Elixir helped us scale our Video User Profile Service for the Olympics
QCon SP 2016 - Video Authorization: from chaos to 25ms response time
QCon SP 2016 - Video Authorization: from chaos to 25ms response time
Qcon Rio 2015 - Microservices
Qcon Rio 2015 - Microservices
Microservices Case: GloboTV e Globosat Play
Microservices Case: GloboTV e Globosat Play
Jogos com NodeJS e Browser - QCON SP 2011
Jogos com NodeJS e Browser - QCON SP 2011
Javascript Orientado a Objetos - Fisl12
Javascript Orientado a Objetos - Fisl12
1 encontro Node.JS Brasil
1 encontro Node.JS Brasil
BrazilJS - Node.JS Realtime Web Applications
BrazilJS - Node.JS Realtime Web Applications
DevInRio 2010 - NodeJS
DevInRio 2010 - NodeJS
Node.JS - Campus Party Brasil 2011
1.
Capus Party 2011
Emerson Macedo @emerleite http://nodecasts.org http://codificando.com http://groups.google.com/group/nodebr
2.
3.
#performance
4.
2000
5.
360 milhões de usuários
de internet em todo mundo
6.
7.
9,8 milhões de
usuários
8.
9,8 milhões de
usuários 4,8 milhões são ativos
9.
10.
2010
11.
~ 2 bilhões
de usuários de internet em todo mundo
12.
13.
68 milhões de
usuários
14.
68 milhões de
usuários 37 milhões são ativos
15.
16.
17.
2014
18.
~ 70% dos
adultos serão usuários regulares de redes sociais
19.
20.
21.
22.
Tecnologias atuais
23.
24.
25.
26.
27.
28.
Todas essas tecnologias
tem algo em comum
29.
PHP
1995
30.
PHP
1995 Java EE 1998
31.
PHP
1995 Java EE 1998 ASP.Net 2001
32.
PHP
1995 Java EE 1998 ASP.Net 2001 Ruby on Rails 2004
33.
PHP
1995 Java EE 1998 ASP.Net 2001 Ruby on Rails 2004 Django 2006
34.
Por que então
mais uma tecnologia ?
35.
Usuários de Internet
no Mundo (em milhões) 2.000 milhões 2000 1500 1000 500 360 milhões 0 2000 2010
36.
Usuários de Internet
no Brasil (em milhões) 70 milhões 70 52,5 35 17,5 10 milhões 0 2000 2010
37.
Mas já escalamos
muito bem nossos sites
38.
Estrutura física de servidores
para escalar
39.
Escalando na vertical
40.
Escalando na vertical
41.
Escalando na horizontal
42.
Escalando na horizontal
43.
Escalando na horizontal
44.
Escalando na horizontal
45.
46.
Escalando DB na
horizontal re ad ad re write write write
47.
Escalando DB na
horizontal Shard Shard Shard Shard Shard Shard Database Database Database Database Database Database
48.
49.
Arquitetura pra fazer
o software escalar
50.
Pattern para atender
muitos requests
51.
Pattern para atender
muitos requests Finalize a requisição o mais rápido possível
52.
HTTP GET
53.
54.
55.
56.
57.
58.
HTTP POST
59.
60.
61.
62.
63.
64.
Por que então
mais uma tecnologia ?
65.
66.
Escalando na horizontal
67.
Escalando na horizontal
68.
69.
70.
Evented, non-blocking I/O
Google V8 Engine
71.
Qual é o
problema das tecnologias atuais ?
72.
Como manter conectados 10,
20 ou 30 mil usuários simultâneos ?
73.
Nosso código costuma
ser escrito assim
74.
Nosso código costuma
ser escrito assim O que o software está fazendo enquanto a querie executa ?
75.
Na maioria dos
casos está travado esperando a resposta
76.
Rails ou Django
HTTPD Database
77.
Rails ou Django
HTTPD Database
78.
Rails ou Django
HTTPD Database
79.
Rails ou Django
RUNTIME PROCESS HTTPD Database
80.
Rails ou Django
RUNTIME BLOCK PROCESS HTTPD Database
81.
Rails ou Django
RUNTIME BLOCK PROCESS RUNTIME BLOCK PROCESS HTTPD Database RUNTIME BLOCK PROCESS RUNTIME PROCESS BLOCK
82.
83.
84.
Java
Servlet Container HTTPD Servlet Database
85.
Java
Servlet Container HTTPD Servlet Database
86.
Java
Servlet Container HTTPD Servlet Database
87.
Java
Servlet Container Thread HTTPD Servlet Database
88.
Java
Servlet Container Thread BLOCK HTTPD Servlet Database
89.
Java
Servlet Container Thread BLOCK Thread BLOCK Thread BLOCK HTTPD Servlet Database Thread BLOCK Thread BLOCK Thread BLOCK Thread BLOCK
90.
Apenas um processo abrindo
uma thread para cada request
91.
92.
93.
Produtividade do programador mais
que performance da tecnologia
94.
Apenas um processo abrindo
uma thread para cada request
95.
Parece bom mas
...
96.
Como manter conectados 10,
20 ou 30 mil usuários simultâneos ?
97.
Como manter conectados 10,
20 ou 30 mil usuários simultâneos ? 30 mil threads ?
98.
concurrency × reqs/sec
Apache vs NGINX concurrency × reqs/sec http://blog.webfaction.com/a-little-holiday-present http://blog.webfaction.com/a-little-holiday-present
99.
concurrency × reqs/sec
Apache vs NGINX concurrency × memory http://blog.webfaction.com/a-little-holiday-present http://blog.webfaction.com/a-little-holiday-present
100.
Apache cria uma thread
por request
101.
Troca de contexto entre
theads tem um custo
102.
Cada OS Thread cria
uma pilha de execução nova
103.
Pense bem antes
de usar uma thread por request quando precisar suportar alta concorrência
104.
Como manter conectados 10,
20 ou 30 mil usuários simultâneos ?
105.
106.
Pattern para atender
muitos requests Finalize a requisição o mais rápido possível
107.
Pattern para atender
alta concorrência
108.
Pattern para atender
alta concorrência Evite threads
109.
Pattern para atender
alta concorrência Evite threads Use um Event Loop
110.
Performance
!= Escalabilidade
111.
Performance
!= Escalabilidade mas ...
112.
Uma performance melhor ajuda
a escalar com menos recursos
113.
114.
115.
Precisamos fazer I/O
de outra maneira
116.
Latência de I/O
117.
Latência de I/O L1
3 ciclos
118.
Latência de I/O L1
3 ciclos L2 14 ciclos
119.
Latência de I/O
L1 3 ciclos L2 14 ciclos RAM 250 ciclos
120.
Latência de I/O
L1 3 ciclos L2 14 ciclos RAM 250 ciclos Disco 41.000.000 ciclos
121.
Latência de I/O
L1 3 ciclos L2 14 ciclos RAM 250 ciclos Disco 41.000.000 ciclos Rede 240.000.000 ciclos
122.
Latência de I/O
L1 3 ciclos L2 14 ciclos RAM 250 ciclos Disco 41.000.000 ciclos Rede 240.000.000 ciclos
123.
I/O não bloqueante
124.
I/O não bloqueante
L1 3 ciclos L2 14 ciclos RAM 250 ciclos
125.
I/O não bloqueante
L1 3 ciclos L2 14 ciclos RAM 250 ciclos I/O bloqueante
126.
I/O não bloqueante
L1 3 ciclos L2 14 ciclos RAM 250 ciclos I/O bloqueante Disco 41.000.000 ciclos Rede 240.000.000 ciclos
127.
Infraestrutura não bloqueante,
puramente baseada em eventos, para desenvolver software de alta concorrência
128.
Servidor TCP simples
em NodeJS O código acima faz com que a execução retorne imediatamente ao event loop
129.
Por que já
não faziamos dessa forma ?
130.
131.
POSIX Assync I/O
não suportado por todos os S.Os
132.
POSIX Assync I/O
não suportado por todos os S.Os libmysql_client não permite query async
133.
Filosofia do NodeJS
134.
Filosofia do NodeJS Todo
I/O deveria ser feito desta forma
135.
Para qualquer operação que
acesse o disco ou a rede deve existir um callback
136.
Arquitetura Javascript
Node standard library C Node Bindings thread event pool loop V8 (libeio) (libev)
137.
Pilha de execução
ev_loop() I/O em disco (bloqueante)
138.
Pilha de execução
socket_readdable(1) ev_loop() I/O em disco (bloqueante)
139.
Pilha de execução
http_parse(1) socket_readdable(1) ev_loop() I/O em disco (bloqueante)
140.
Pilha de execução
load(“index.html”) http_parse(1) socket_readdable(1) ev_loop() I/O em disco (bloqueante)
141.
Pilha de execução
http_parse(1) socket_readdable(1) ev_loop() I/O em disco (bloqueante)
142.
Pilha de execução
socket_readdable(1) ev_loop() I/O em disco (bloqueante)
143.
Pilha de execução
ev_loop() I/O em disco (bloqueante)
144.
Pilha de execução
ev_loop() I/O em RAM (não bloqueante)
145.
Pilha de execução
socket_readdable(2) ev_loop() I/O em RAM (não bloqueante)
146.
Pilha de execução
http_parse(2) socket_readdable(2) ev_loop() I/O em RAM (não bloqueante)
147.
Pilha de execução
http_respond(2) http_parse(2) socket_readdable(2) ev_loop() I/O em RAM (não bloqueante)
148.
Pilha de execução
http_parse(2) socket_readdable(2) ev_loop() I/O em RAM (não bloqueante)
149.
Pilha de execução
socket_readdable(2) ev_loop() I/O em RAM (não bloqueante)
150.
Pilha de execução
ev_loop() I/O em RAM (não bloqueante)
151.
Pilha de execução
ev_loop() Arquivo carregou do disco
152.
Pilha de execução
file_loaded() ev_loop() Arquivo carregou do disco
153.
Pilha de execução
http_respond(1) file_loaded() ev_loop() Arquivo carregou do disco
154.
Pilha de execução
file_loaded() ev_loop() Arquivo carregou do disco
155.
Pilha de execução
ev_loop() Arquivo carregou do disco
156.
Arquitetura Web
157.
Arquitetura Web
Nginx
158.
Arquitetura Web
Nginx Ruby Ruby Ruby Ruby Ruby or or or or or Python Python Python Python Python
159.
Arquitetura Web
Nginx Ruby Ruby Ruby Ruby Ruby or or or or or NodeJS Python Python Python Python Python
160.
Arquitetura Web
Nginx
161.
Arquitetura Web
Nginx NodeJS
162.
Arquitetura Web
NodeJS
163.
Arquitetura Web
NodeJS Quando NodeJS estiver bem maduro, a idéia de Ryan é que ele seja a porta de entrada. Será ?
164.
#simplicidade
165.
Produtividade do programador mais
que performance da tecnologia
166.
167.
168.
169.
170.
Don’t Repeat Yourself
171.
172.
173.
174.
175.
176.
177.
Configurações
Properties XML YAML
178.
Configurações
Properties XML YAML JSON Transporte
179.
Configurações
JSON
180.
Configurações
JSON
181.
Configurações
JSON Transporte
182.
Configurações Javascript Object Notation
Transporte
183.
Server Side Java
Ruby Python PHP
184.
Server Side Java
Ruby Python PHP Client Side JavaScript
185.
Server Side JavaScript
186.
Server Side JavaScript
187.
Server Side JavaScript Client
Side
188.
#ecossistema
189.
190.
191.
Sinatra detected !
192.
193.
Test driven development #vows
- http://vowsjs.org/
194.
Test driven development
195.
Test driven development #http://github.com/visionmedia/expresso/
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
#LIVE
209.
Obrigado !!!
Emerson Macedo @emerleite http://nodecasts.org http://codificando.com
210.
Referências http://www.internetworldstats.com/emarketing.htm http://en.wikipedia.org/wiki/Event_loop http://lse.sourceforge.net/io/aio.html http://code.google.com/p/v8/ http://opengroup.org/onlinepubs/007908775/xsh/select.html http://en.wikipedia.org/wiki/Thread_pool_pattern http://www.commonjs.org/specs/modules/1.0/ http://en.wikipedia.org/wiki/File_descriptor http://en.wikipedia.org/wiki/Reactor_pattern
Jetzt herunterladen