Download - Node.js - Devo adotar na minha empresa?
node.jsJavaScript no servidor
Pablo D. Souza SantosRectius - 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 World\n') }).listen(1337, '127.0.0.1');
var net = require('net');var server = net.createServer(function (socket) {socket.write('Echo server\r\n');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 SantosRectius - Tecnologia e Informação