Transcript
Page 1: Node.js - Devo adotar na minha empresa?

node.jsJavaScript no servidor

Pablo D. Souza SantosRectius - Tecnologia e Informação

Page 2: Node.js - Devo adotar na minha empresa?

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.

Page 3: Node.js - Devo adotar na minha empresa?

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.

Page 4: Node.js - Devo adotar na minha empresa?

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.

Page 5: Node.js - Devo adotar na minha empresa?

Como escalar com node.js

- Escalando verticalmente

- Escalando horizontalmente

- Escalando com proxy reverso

Estratégias

Page 6: Node.js - Devo adotar na minha empresa?

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

Page 7: Node.js - Devo adotar na minha empresa?

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');

Page 8: Node.js - Devo adotar na minha empresa?

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.

Page 9: Node.js - Devo adotar na minha empresa?

Fim.

Pablo D. Souza SantosRectius - Tecnologia e Informação


Top Related