Uma visão rápida sobre Nodejs

1,396 views

Published on

Uma breve visão sobre NodeJS e qual são suas motivações para o uso.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,396
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
29
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Uma visão rápida sobre Nodejs

    1. 1. NodeJS
    2. 2. Nos primórdios... ...ok, nem tanto assim
    3. 3. Nos primórdios... ...ok, nem tanto assim- Servidores Web com Apache.
    4. 4. Nos primórdios... ...ok, nem tanto assim- Servidores Web com Apache.- Uma Thread para cada conexão.
    5. 5. 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).
    6. 6. O Problema
    7. 7. O Problema- Uma thread usando 2mb de RAM
    8. 8. O Problema- Uma thread usando 2mb de RAM- 2MB x 3.000 conexões silmutâneas = 6GB
    9. 9. 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....
    10. 10. Solução
    11. 11. Solução- Possibilidades:
    12. 12. Solução- Possibilidades: - Escalar verticalmente
    13. 13. Solução- Possibilidades: - Escalar verticalmente - Escalar horizontalmente
    14. 14. Solução- Possibilidades: - Escalar verticalmente - Escalar horizontalmente - Desenvolver em outra linguagem de programação mais rápida
    15. 15. Solução- Possibilidades: - Escalar verticalmente - Escalar horizontalmente - Desenvolver em outra linguagem de programação mais rápida
    16. 16. Solução- Possibilidades: - Escalar verticalmente - Escalar horizontalmente - Desenvolver em outra linguagem de programação mais rápida
    17. 17. Solução- Possibilidades: - Escalar verticalmente - Escalar horizontalmente - Desenvolver em outra linguagem de programação mais rápida
    18. 18. Solução- Possibilidades: - Escalar verticalmente - Escalar horizontalmente - Desenvolver em outra linguagem de programação mais rápida - Nenhum dos ítens acima.
    19. 19. Solução- Possibilidades: - Escalar verticalmente - Escalar horizontalmente - Desenvolver em outra linguagem de programação mais rápida - Nenhum dos ítens acima.
    20. 20. Novos paradigmas
    21. 21. Novos paradigmas- Requisições de E/S não bloqueantes;
    22. 22. Novos paradigmas- Requisições de E/S não bloqueantes;- Chega de multiplas threads, basta uma (single thread).
    23. 23. Novos paradigmas- Requisições de E/S não bloqueantes;- Chega de multiplas threads, basta uma (single thread).- E/S Assíncronas.
    24. 24. Novos paradigmas- Requisições de E/S não bloqueantes;- Chega de multiplas threads, basta uma (single thread).- E/S Assíncronas.- Multiplexação.
    25. 25. Ok, mas quem implementa tudo isso?
    26. 26. Ok, mas quem implementa tudo isso? NodeJS
    27. 27. O que é NodeJS?
    28. 28. O que é NodeJS?- Criado por Ryan Dahl em 2009
    29. 29. O que é NodeJS?- Criado por Ryan Dahl em 2009- Plataforma de fácil desenvolvimento para aplicações de rede altamente escaláveis;
    30. 30. 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;
    31. 31. 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?
    32. 32. Arquitetura
    33. 33. Arquitetura- Escrito em C/C++ e Javascript;
    34. 34. Arquitetura- Escrito em C/C++ e Javascript;- Baseado em Event Loop (epoll) utilizando libev;
    35. 35. Arquitetura- Escrito em C/C++ e Javascript;- Baseado em Event Loop (epoll) utilizando libev;- Desenvolvido sobre a Javascript Engine V8(Google);
    36. 36. 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/);
    37. 37. Módulos
    38. 38. Módulos- NPM (Node Package Manager, escrito em Javascript)
    39. 39. Módulos- NPM (Node Package Manager, escrito em Javascript)- Banco de dados (Mysql, CouchDB, MongoDB, Redis...)
    40. 40. Módulos- NPM (Node Package Manager, escrito em Javascript)- Banco de dados (Mysql, CouchDB, MongoDB, Redis...)- WebSocket (socket.io)
    41. 41. Módulos- NPM (Node Package Manager, escrito em Javascript)- Banco de dados (Mysql, CouchDB, MongoDB, Redis...)- WebSocket (socket.io)- Frameworks (expressjs, jade...)
    42. 42. 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...)
    43. 43. 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
    44. 44. Módulos
    45. 45. Quando usar?
    46. 46. Quando usar?- Servidor de arquivos estáticos;
    47. 47. Quando usar?- Servidor de arquivos estáticos;- Serviço TCP;
    48. 48. Quando usar?- Servidor de arquivos estáticos;- Serviço TCP;- File Watcher;
    49. 49. Quando usar?- Servidor de arquivos estáticos;- Serviço TCP;- File Watcher;- Serviço WEB com muitas requisições por segundo;
    50. 50. 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;
    51. 51. 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...
    52. 52. Posso substituir todas as minhas aplicações web por NodeJS?
    53. 53. Posso substituir todas as minhas aplicações web por NodeJS? Pode, mas não aconselho... ao menos por enquanto.
    54. 54. 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/
    55. 55. Obrigado pela atenção! =) FIM

    ×