node.js
JavaScript no servidor
Pablo D. Souza Santos
Rectius - Tecnologia e Informação
Apresentação
O node.js é um interpretador de código JavaScript que
funciona no lado servidor.
Seu objetivo é ajudar programadores na criação de aplicações
de alta escalabilidade (como um servidor web), com códigos
capazes de manipular dezenas de milhares de conexões
simultâneas, numa única máquina física.
O node.js é baseado no interpretador Google V8 JavaScript
Engine (a mesma tecnologia do Google Chrome).
Foi criado por Ryan Dahl em 2009, e seu desenvolvimento é
mantido pela empresa Joyent.
O que é node.js
"O objetivo do Node é permitir uma maneira simples de desenvolver programas de rede
que precisem escalar."
- Ambiente de execução e bibliotecas para rodar JavaScript, independente de qualquer
navegador.
- Open Source e Multiplataforma: Linux, Windows, Mac, etc.
- É um framework para aplicações de rede de alta performance, otimizado para
ambientes com concorrência.
- É uma ferramenta de linha de comando.
- Foi desenvolvido 40% em JS e 60% em C++.
- O desenvolvimento com Node é feito com JavaScript, mas não da mesma forma como
fazemos no lado cliente.
Arquitetura do node.js
- Node.js opera em single-thread e usa o modelo
de I/O não bloqueante e baseado em eventos.
- Cliente envia uma requisição HTTP para o
servidor node.JS.
- O loop de eventos da thread principal registra um
callback, encaminha o trabalho para um pool de
threads e imediatamente retorna para escutar a
próxima conexão.
- As threads do pool executam as tarefas de longa
duração de forma assíncrona e paralelizada. Ao
finalizar uma tarefa, a resposta é enviada para a
thread principal via callback.
- O loop de eventos retorna o resultado para o
cliente.
Como escalar com node.js
- Escalando verticalmente
- Escalando horizontalmente
- Escalando com proxy reverso
Estratégias
Quando utilizar o node.js
- Se você precisa desenvolver uma API REST.
- Se você precisa criar serviços baseados em
real-time.
- Se você precisa gerenciar um alto nível de
concorrência com baixa utilização de CPU.
- Se sua equipe tem facilidade com
desenvolvimento JavaScript, porque eles
poderão escrever o lado cliente e o lado
servidor com a mesma linguagem.
Testes de performance:
https://code.google.com/p/node-js-vs-
apache-php-benchmark/wiki/Tests
Onde utilizar o node.js
- Você pode criar um servidor web com
apenas 4 linhas de código.
- Da mesma forma, você também pode criar
um servidor TCP.
- Essas poucas linhas permitem gerenciar
até 10.000 requisições por segundo.
- Também é possível criar:
- Servidores DNS
- Servidores de arquivos estáticos
- Aplicações real-time
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello Worldn') }).listen(1337, '127.0.0.1');
var net = require('net');
var server = net.createServer(function (socket) {
socket.write('Echo serverrn');
socket.pipe(socket) }).listen(1337, '127.0.0.1');
Vale a pena utilizar o node.js ?
- Para aplicações que não requerem um uso intensivo de
CPU, é possível escrever Javascript em todas as camadas,
inclusive no nível do banco de dados utilizando soluções de
banco de dados não relacionais, como o MongoDB.
- I/O assíncrono favorece a criação de ambientes com alta
escalabilidade e concorrência.
- Node.js foi criado para resolver o problema de
escalabilidade e concorrência, portanto é ideal para criação
de soluções com grande quantidade de usuários conectados
consumindo web services.
PRÓS CONTRAS
- Para aplicações que requerem conexão com banco de
dados relacionais, Node.js não é a melhor opção.
- Aplicações que exigem um alto processamento de CPU
anulam todos os benefícios do modelo de I/O não
bloqueante, uma vez que todas as novas conexões ficarão
bloqueadas enquanto a thread está ocupada com o
processamento.
- Por ser uma tecnologia relativamente nova e em constante
atualização , o futuro é incerto e por isso sua adoção envolve
um risco para o negócio.
Fim.
Pablo D. Souza Santos
Rectius - Tecnologia e Informação

Node.js - Devo adotar na minha empresa?

  • 1.
    node.js JavaScript no servidor PabloD. Souza Santos Rectius - Tecnologia e Informação
  • 2.
    Apresentação O node.js éum interpretador de código JavaScript que funciona no lado servidor. Seu objetivo é ajudar programadores na criação de aplicações de alta escalabilidade (como um servidor web), com códigos capazes de manipular dezenas de milhares de conexões simultâneas, numa única máquina física. O node.js é baseado no interpretador Google V8 JavaScript Engine (a mesma tecnologia do Google Chrome). Foi criado por Ryan Dahl em 2009, e seu desenvolvimento é mantido pela empresa Joyent.
  • 3.
    O que énode.js "O objetivo do Node é permitir uma maneira simples de desenvolver programas de rede que precisem escalar." - Ambiente de execução e bibliotecas para rodar JavaScript, independente de qualquer navegador. - Open Source e Multiplataforma: Linux, Windows, Mac, etc. - É um framework para aplicações de rede de alta performance, otimizado para ambientes com concorrência. - É uma ferramenta de linha de comando. - Foi desenvolvido 40% em JS e 60% em C++. - O desenvolvimento com Node é feito com JavaScript, mas não da mesma forma como fazemos no lado cliente.
  • 4.
    Arquitetura do node.js -Node.js opera em single-thread e usa o modelo de I/O não bloqueante e baseado em eventos. - Cliente envia uma requisição HTTP para o servidor node.JS. - O loop de eventos da thread principal registra um callback, encaminha o trabalho para um pool de threads e imediatamente retorna para escutar a próxima conexão. - As threads do pool executam as tarefas de longa duração de forma assíncrona e paralelizada. Ao finalizar uma tarefa, a resposta é enviada para a thread principal via callback. - O loop de eventos retorna o resultado para o cliente.
  • 5.
    Como escalar comnode.js - Escalando verticalmente - Escalando horizontalmente - Escalando com proxy reverso Estratégias
  • 6.
    Quando utilizar onode.js - Se você precisa desenvolver uma API REST. - Se você precisa criar serviços baseados em real-time. - Se você precisa gerenciar um alto nível de concorrência com baixa utilização de CPU. - Se sua equipe tem facilidade com desenvolvimento JavaScript, porque eles poderão escrever o lado cliente e o lado servidor com a mesma linguagem. Testes de performance: https://code.google.com/p/node-js-vs- apache-php-benchmark/wiki/Tests
  • 7.
    Onde utilizar onode.js - Você pode criar um servidor web com apenas 4 linhas de código. - Da mesma forma, você também pode criar um servidor TCP. - Essas poucas linhas permitem gerenciar até 10.000 requisições por segundo. - Também é possível criar: - Servidores DNS - Servidores de arquivos estáticos - Aplicações real-time var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello Worldn') }).listen(1337, '127.0.0.1'); var net = require('net'); var server = net.createServer(function (socket) { socket.write('Echo serverrn'); socket.pipe(socket) }).listen(1337, '127.0.0.1');
  • 8.
    Vale a penautilizar o node.js ? - Para aplicações que não requerem um uso intensivo de CPU, é possível escrever Javascript em todas as camadas, inclusive no nível do banco de dados utilizando soluções de banco de dados não relacionais, como o MongoDB. - I/O assíncrono favorece a criação de ambientes com alta escalabilidade e concorrência. - Node.js foi criado para resolver o problema de escalabilidade e concorrência, portanto é ideal para criação de soluções com grande quantidade de usuários conectados consumindo web services. PRÓS CONTRAS - Para aplicações que requerem conexão com banco de dados relacionais, Node.js não é a melhor opção. - Aplicações que exigem um alto processamento de CPU anulam todos os benefícios do modelo de I/O não bloqueante, uma vez que todas as novas conexões ficarão bloqueadas enquanto a thread está ocupada com o processamento. - Por ser uma tecnologia relativamente nova e em constante atualização , o futuro é incerto e por isso sua adoção envolve um risco para o negócio.
  • 9.
    Fim. Pablo D. SouzaSantos Rectius - Tecnologia e Informação