Grupo:
Bruno Brito
Thiago Lima
A Web Hoje
Usuários
A Web Hoje
Linguagens   WebServers
A Web Hoje
Arquitetura
•Síncrona                    Precisa melhorar!!

•Uma thread por request
• Requisições bloqueantes.
A Web Hoje
Estudo de caso
   Como manter conectado 10,20,30 mil usuários simultâneos ?
Arquitetura Atual
   • 30 mil threads no servidor
   • Escalar horizontalmente e verticalmente



                                Achou o problema ?
A Web Hoje
Patterns para atender muitos requests
 • Finalize os requests o mais rápido possível.
Patterns para atender alta concorrência
 • Evite threads, use event loop.
                                    Twisted - python
                                       ruby

      Escutei Node.js ?         Tambem fazem isso!
                                               Ok!
Um pouso
sobre Node.js
Google V8
JavaScrípt
  Engine
O que é
Node.js?
Qual o objetivo
      do
  Node.js?
O objetivo declarado
       do Node é :
Fornecer uma maneira fácil de criar programas
de rede escaláveis
O que Node.js soluciona?
O que Node.js utiliza?
•Javascript do lado servidor 
•Paradigma orientado a eventos
•Paradigma de Call Back
Arquitetura
        • Thread Pool – pilha de request ;
        • Event Loop – Thread consumidora.



          MonoThread
Fluxo                            Processo




                                                         Requisição
                      Requisição
Requisição

                                           Thread Pool
                              Event Loop
     Resposta
                                                            Req 3
                Resposta                   Req1
                                                            Req2

                                      Req2                  Req1
Instalação
Linux
• apt-get install node
• yum install node

Windows
• node-v0.6.3.msi Windows installer
NPM
      Node Package Manager
Instala os pacotes necessários do projeto,
parecido com as gens do ruby.

 instalação: curl http://npmjs.org/install.sh | sh
Demostração
Hello World!
var http = require('http'); http.createServer(function (req, res) {

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

}).listen(1337, "127.0.0.1"); 
Fim!!
Duvidas??

Node slide