SlideShare uma empresa Scribd logo
1 de 57
NodeJS
Nos primórdios...
    ...ok, nem tanto assim
Nos primórdios...
                               ...ok, nem tanto assim


- Servidores Web com Apache.
Nos primórdios...
                               ...ok, nem tanto assim


- Servidores Web com Apache.

- Uma Thread para cada conexão.
Nos primórdios...
                               ...ok, nem tanto assim


- Servidores Web com Apache.

- Uma Thread para cada conexão.

- Requisição de E/S Bloqueante (latência).
O Problema
O Problema
- Uma thread usando 2mb de RAM
O Problema
- Uma thread usando 2mb de RAM


- 2MB x 3.000 conexões silmutâneas = 6GB
O Problema
- Uma thread usando 2mb de RAM


- 2MB x 3.000 conexões silmutâneas = 6GB


- Sites com grande número de requisições simultâneas? Tá bom....
Solução
Solução
- Possibilidades:
Solução
- Possibilidades:

  - Escalar verticalmente
Solução
- Possibilidades:

  - Escalar verticalmente

  - Escalar horizontalmente
Solução
- Possibilidades:

  - Escalar verticalmente

  - Escalar horizontalmente

  - Desenvolver em outra linguagem de programação mais rápida
Solução
- Possibilidades:

  - Escalar verticalmente

  - Escalar horizontalmente

  - Desenvolver em outra linguagem de programação mais rápida
Solução
- Possibilidades:

  - Escalar verticalmente

  - Escalar horizontalmente

  - Desenvolver em outra linguagem de programação mais rápida
Solução
- Possibilidades:

  - Escalar verticalmente

  - Escalar horizontalmente

  - Desenvolver em outra linguagem de programação mais rápida
Solução
- Possibilidades:

  - Escalar verticalmente

  - Escalar horizontalmente

  - Desenvolver em outra linguagem de programação mais rápida

  - Nenhum dos ítens acima.
Solução
- Possibilidades:

  - Escalar verticalmente

  - Escalar horizontalmente

  - Desenvolver em outra linguagem de programação mais rápida

  - Nenhum dos ítens acima.
Novos paradigmas
Novos paradigmas
- Requisições de E/S não bloqueantes;
Novos paradigmas
- Requisições de E/S não bloqueantes;

- Chega de multiplas threads, basta uma (single thread).
Novos paradigmas
- Requisições de E/S não bloqueantes;

- Chega de multiplas threads, basta uma (single thread).

- E/S Assíncronas.
Novos paradigmas
- Requisições de E/S não bloqueantes;

- Chega de multiplas threads, basta uma (single thread).

- E/S Assíncronas.

- Multiplexação.
Ok, mas quem implementa tudo isso?
Ok, mas quem implementa tudo isso?


           NodeJS
O que é NodeJS?
O que é NodeJS?
- Criado por Ryan Dahl em 2009
O que é NodeJS?
- Criado por Ryan Dahl em 2009


- Plataforma de fácil desenvolvimento para aplicações de rede altamente escaláveis;
O que é NodeJS?
- Criado por Ryan Dahl em 2009


- Plataforma de fácil desenvolvimento para aplicações de rede altamente escaláveis;


- Desenvolvimento em Javascript no lado do servidor;
O que é NodeJS?
- Criado por Ryan Dahl em 2009


- Plataforma de fácil desenvolvimento para aplicações de rede altamente escaláveis;


- Desenvolvimento em Javascript no lado do servidor;



        Ok, mas o que isso significa na prática?
Arquitetura
Arquitetura
- Escrito em C/C++ e Javascript;
Arquitetura
- Escrito em C/C++ e Javascript;


- Baseado em Event Loop (epoll) utilizando libev;
Arquitetura
- Escrito em C/C++ e Javascript;


- Baseado em Event Loop (epoll) utilizando libev;


- Desenvolvido sobre a Javascript Engine V8(Google);
Exemplo de Código
- Servidor HTTP

 var http = require('http');

 http.createServer(function (req, res) {

  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end("Hello World!");

 }).listen(8080, "127.0.0.1");

 console.log('Server running at http://127.0.0.1:8080/');
Módulos
Módulos
- NPM (Node Package Manager, escrito em Javascript)
Módulos
- NPM (Node Package Manager, escrito em Javascript)

- Banco de dados (Mysql, CouchDB, MongoDB, Redis...)
Módulos
- NPM (Node Package Manager, escrito em Javascript)

- Banco de dados (Mysql, CouchDB, MongoDB, Redis...)

- WebSocket (socket.io)
Módulos
- NPM (Node Package Manager, escrito em Javascript)

- Banco de dados (Mysql, CouchDB, MongoDB, Redis...)

- WebSocket (socket.io)

- Frameworks (expressjs, jade...)
Módulos
- NPM (Node Package Manager, escrito em Javascript)

- Banco de dados (Mysql, CouchDB, MongoDB, Redis...)

- WebSocket (socket.io)

- Frameworks (expressjs, jade...)


- Testes (vowsjs, expresso...)
Módulos
- NPM (Node Package Manager, escrito em Javascript)

- Banco de dados (Mysql, CouchDB, MongoDB, Redis...)

- WebSocket (socket.io)

- Frameworks (expressjs, jade...)


- Testes (vowsjs, expresso...)

- NPM é nativo a partir da versão 0.6.3
Módulos
Quando usar?
Quando usar?
- Servidor de arquivos estáticos;
Quando usar?
- Servidor de arquivos estáticos;

- Serviço TCP;
Quando usar?
- Servidor de arquivos estáticos;

- Serviço TCP;

- File Watcher;
Quando usar?
- Servidor de arquivos estáticos;

- Serviço TCP;

- File Watcher;

- Serviço WEB com muitas requisições por segundo;
Quando usar?
- Servidor de arquivos estáticos;

- Serviço TCP;

- File Watcher;

- Serviço WEB com muitas requisições por segundo;

- Criação de Sites;
Quando usar?
- Servidor de arquivos estáticos;

- Serviço TCP;

- File Watcher;

- Serviço WEB com muitas requisições por segundo;

- Criação de Sites;

- entre outros...
Posso substituir todas as minhas
  aplicações web por NodeJS?
Posso substituir todas as minhas
  aplicações web por NodeJS?


  Pode, mas não aconselho... ao menos por enquanto.
Referências
- http://nodejs.org/

- http://akitaonrails.com/2010/03/16/brincando-com-node-js-tornado-and-thin

- http://en.wikipedia.org/wiki/Event_loop

- http://stackoverflow.com/questions/4093185/whats-the-difference-between-
epoll-poll-threadpool

- http://npmjs.org/

- http://code.google.com/p/v8/
Obrigado pela atenção! =)

          FIM

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

Node.js - Devo adotar na minha empresa?
Node.js - Devo adotar na minha empresa?Node.js - Devo adotar na minha empresa?
Node.js - Devo adotar na minha empresa?
 
Node.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasNode.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo Branas
 
Por que Node JS?
Por que Node JS?Por que Node JS?
Por que Node JS?
 
Conhecendo o Nodejs
Conhecendo o NodejsConhecendo o Nodejs
Conhecendo o Nodejs
 
Node.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizarNode.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizar
 
Javascript nos dias de hoje
Javascript nos dias de hojeJavascript nos dias de hoje
Javascript nos dias de hoje
 
Light Talk: Introdução sobre Node.js
Light Talk: Introdução sobre Node.jsLight Talk: Introdução sobre Node.js
Light Talk: Introdução sobre Node.js
 
MongoDB: Prós, Contras e Showcases.
MongoDB: Prós, Contras e Showcases.MongoDB: Prós, Contras e Showcases.
MongoDB: Prós, Contras e Showcases.
 
Javascript por debaixo dos panos
Javascript por debaixo dos panosJavascript por debaixo dos panos
Javascript por debaixo dos panos
 
Node.js for Noobs
Node.js for NoobsNode.js for Noobs
Node.js for Noobs
 
Nodejs justdigital
Nodejs justdigitalNodejs justdigital
Nodejs justdigital
 
Hangout Tempo Real Eventos - Nodejs - Os Primeiros Passos
Hangout  Tempo Real Eventos - Nodejs - Os Primeiros PassosHangout  Tempo Real Eventos - Nodejs - Os Primeiros Passos
Hangout Tempo Real Eventos - Nodejs - Os Primeiros Passos
 
NodeJS Under the Hood - Concurrency and Multithreading
NodeJS Under the Hood - Concurrency and MultithreadingNodeJS Under the Hood - Concurrency and Multithreading
NodeJS Under the Hood - Concurrency and Multithreading
 
Conhecendo mundo Node.js
Conhecendo mundo Node.jsConhecendo mundo Node.js
Conhecendo mundo Node.js
 
Apresentação
ApresentaçãoApresentação
Apresentação
 
Node.js Sorocaba - meetup #1
Node.js Sorocaba - meetup #1Node.js Sorocaba - meetup #1
Node.js Sorocaba - meetup #1
 
Node não é filme de Terror
Node não é filme de TerrorNode não é filme de Terror
Node não é filme de Terror
 
Testes com javascript
Testes com javascriptTestes com javascript
Testes com javascript
 
Node.js
Node.jsNode.js
Node.js
 
PHP + Node.js
PHP + Node.jsPHP + Node.js
PHP + Node.js
 

Destaque

Curso SEO Avancado - Digitalks
Curso SEO Avancado - DigitalksCurso SEO Avancado - Digitalks
Curso SEO Avancado - Digitalks
Ricardo T. Dias
 
Como empreender em... você!
Como empreender em... você!Como empreender em... você!
Como empreender em... você!
Zeno Rocha
 

Destaque (20)

Desenvolvimento Front-end Orientado a Componentes
Desenvolvimento Front-end Orientado a ComponentesDesenvolvimento Front-end Orientado a Componentes
Desenvolvimento Front-end Orientado a Componentes
 
Light Talk sobre JavaScript Funcional
Light Talk sobre JavaScript FuncionalLight Talk sobre JavaScript Funcional
Light Talk sobre JavaScript Funcional
 
Programacao funcional
Programacao funcionalProgramacao funcional
Programacao funcional
 
O poder do Docker (7 Masters)
O poder do Docker (7 Masters)O poder do Docker (7 Masters)
O poder do Docker (7 Masters)
 
Automatize suas tarefas: conheça o GulpJS.
Automatize suas tarefas: conheça o GulpJS.Automatize suas tarefas: conheça o GulpJS.
Automatize suas tarefas: conheça o GulpJS.
 
Um futuro chamado Web Components
Um futuro chamado Web ComponentsUm futuro chamado Web Components
Um futuro chamado Web Components
 
SEO para font-end
SEO para font-endSEO para font-end
SEO para font-end
 
Sigle Page Application - A nova Web
Sigle Page Application - A nova WebSigle Page Application - A nova Web
Sigle Page Application - A nova Web
 
Zeno rocha - HTML5 APIs para Mobile
Zeno rocha - HTML5 APIs para MobileZeno rocha - HTML5 APIs para Mobile
Zeno rocha - HTML5 APIs para Mobile
 
Como Perder Peso (no browser)
Como Perder Peso (no browser)Como Perder Peso (no browser)
Como Perder Peso (no browser)
 
Iniciando com Yeoman, Grunt e Bower
Iniciando com Yeoman, Grunt e BowerIniciando com Yeoman, Grunt e Bower
Iniciando com Yeoman, Grunt e Bower
 
Curso SEO Avancado - Digitalks
Curso SEO Avancado - DigitalksCurso SEO Avancado - Digitalks
Curso SEO Avancado - Digitalks
 
Como empreender em... você!
Como empreender em... você!Como empreender em... você!
Como empreender em... você!
 
O futuro dos WebApps com AngularJS 2.0
O futuro dos WebApps com AngularJS 2.0O futuro dos WebApps com AngularJS 2.0
O futuro dos WebApps com AngularJS 2.0
 
Oficina docker
Oficina dockerOficina docker
Oficina docker
 
Os mitos do desenvolvimento front-end
Os mitos do desenvolvimento front-endOs mitos do desenvolvimento front-end
Os mitos do desenvolvimento front-end
 
Layouts Responsivos
Layouts ResponsivosLayouts Responsivos
Layouts Responsivos
 
Future of Web Development
Future of Web DevelopmentFuture of Web Development
Future of Web Development
 
Yeoman
YeomanYeoman
Yeoman
 
Google Material Design - Conceito, aplicações, código e web components
Google Material Design - Conceito, aplicações, código e web componentsGoogle Material Design - Conceito, aplicações, código e web components
Google Material Design - Conceito, aplicações, código e web components
 

Semelhante a Uma visão rápida sobre Nodejs

Desenvolvimento em .Net - Introducao A Framework
Desenvolvimento em .Net - Introducao A FrameworkDesenvolvimento em .Net - Introducao A Framework
Desenvolvimento em .Net - Introducao A Framework
Vitor Silva
 
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.jsJava script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Vinicius Reis
 
Tdc 2013 eric lemes - integracoes entre sistemas-2
Tdc 2013   eric lemes - integracoes entre sistemas-2Tdc 2013   eric lemes - integracoes entre sistemas-2
Tdc 2013 eric lemes - integracoes entre sistemas-2
Eric Lemes
 

Semelhante a Uma visão rápida sobre Nodejs (20)

Node.JS - Campus Party Brasil 2011
Node.JS - Campus Party Brasil 2011Node.JS - Campus Party Brasil 2011
Node.JS - Campus Party Brasil 2011
 
Desenvolvimento em .Net - Introducao A Framework
Desenvolvimento em .Net - Introducao A FrameworkDesenvolvimento em .Net - Introducao A Framework
Desenvolvimento em .Net - Introducao A Framework
 
Secomp 2011 - Node.JS - Introdução
Secomp 2011 - Node.JS - IntroduçãoSecomp 2011 - Node.JS - Introdução
Secomp 2011 - Node.JS - Introdução
 
ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014
 
Node.js no Pagar.me
Node.js no Pagar.meNode.js no Pagar.me
Node.js no Pagar.me
 
RubyMasters 2011 - Beyond Ruby with NodeJS
RubyMasters 2011 - Beyond Ruby with NodeJSRubyMasters 2011 - Beyond Ruby with NodeJS
RubyMasters 2011 - Beyond Ruby with NodeJS
 
Debug de cabo a rabo
Debug de cabo a raboDebug de cabo a rabo
Debug de cabo a rabo
 
Beyond Ruby with NodeJS - RubyConf Brasil 2010
Beyond Ruby with NodeJS - RubyConf Brasil 2010Beyond Ruby with NodeJS - RubyConf Brasil 2010
Beyond Ruby with NodeJS - RubyConf Brasil 2010
 
NoSQL + Node.js
NoSQL + Node.jsNoSQL + Node.js
NoSQL + Node.js
 
O bom, o mau, o vilão... e o node.js
O bom, o mau, o vilão... e o node.jsO bom, o mau, o vilão... e o node.js
O bom, o mau, o vilão... e o node.js
 
Criando Webservice REST com NodeJS, NoSQL & Docker
Criando Webservice REST com NodeJS, NoSQL & DockerCriando Webservice REST com NodeJS, NoSQL & Docker
Criando Webservice REST com NodeJS, NoSQL & Docker
 
Desenvolvimento Web com Software Livre
Desenvolvimento Web com Software LivreDesenvolvimento Web com Software Livre
Desenvolvimento Web com Software Livre
 
Introdução á linguagem Ruby com aplicativo em Rails
Introdução á linguagem Ruby com aplicativo em RailsIntrodução á linguagem Ruby com aplicativo em Rails
Introdução á linguagem Ruby com aplicativo em Rails
 
Ruby on Rails for beginners 2.0
Ruby on Rails for beginners 2.0Ruby on Rails for beginners 2.0
Ruby on Rails for beginners 2.0
 
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.jsJava script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
 
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 RailsEsta 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
 
TDC2018SP | Trilha Node.js - Melhores praticas de desempenho utilizando Node....
TDC2018SP | Trilha Node.js - Melhores praticas de desempenho utilizando Node....TDC2018SP | Trilha Node.js - Melhores praticas de desempenho utilizando Node....
TDC2018SP | Trilha Node.js - Melhores praticas de desempenho utilizando Node....
 
Tdc 2013 eric lemes - integracoes entre sistemas-2
Tdc 2013   eric lemes - integracoes entre sistemas-2Tdc 2013   eric lemes - integracoes entre sistemas-2
Tdc 2013 eric lemes - integracoes entre sistemas-2
 
TDC2015 - Internet das Coisas - OpenDevice
TDC2015 - Internet das Coisas - OpenDeviceTDC2015 - Internet das Coisas - OpenDevice
TDC2015 - Internet das Coisas - OpenDevice
 
Web Seminário sobre Varnish+Nginx+Apache
Web Seminário sobre Varnish+Nginx+ApacheWeb Seminário sobre Varnish+Nginx+Apache
Web Seminário sobre Varnish+Nginx+Apache
 

Último

Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
Natalia Granato
 

Último (6)

Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 

Uma visão rápida sobre Nodejs

Notas do Editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n