SlideShare uma empresa Scribd logo
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

Mais conteúdo relacionado

Mais procurados

Node.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoNode.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançado
Eduardo Bohrer
 
Por que Node JS?
Por que Node JS?Por que Node JS?
Por que Node JS?
Austin Felipe Santos
 
NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.
Filipe Morelli
 
Node.js, Uma breve introdução
Node.js, Uma breve introduçãoNode.js, Uma breve introdução
Node.js, Uma breve introdução
Pablo Feijó
 
Node js - Javascript Server Side
Node js - Javascript Server SideNode js - Javascript Server Side
Node js - Javascript Server Side
Gustavo Corrêa Alves
 
Conhecendo mundo Node.js
Conhecendo mundo Node.jsConhecendo mundo Node.js
Conhecendo mundo Node.js
Caio Ribeiro Pereira
 
Node.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasNode.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo Branas
Rodrigo Branas
 
Introdução ao NodeJS
Introdução ao NodeJSIntrodução ao NodeJS
Introdução ao NodeJS
Giovanni Bassi
 
Light Talk: Introdução sobre Node.js
Light Talk: Introdução sobre Node.jsLight Talk: Introdução sobre Node.js
Light Talk: Introdução sobre Node.js
Caio Ribeiro Pereira
 
Conhecendo o Nodejs
Conhecendo o NodejsConhecendo o Nodejs
Conhecendo o Nodejs
Caio Cutrim
 
Introdução à Node.js + MongoDB
Introdução à Node.js + MongoDBIntrodução à Node.js + MongoDB
Introdução à Node.js + MongoDB
Luiz Duarte
 
Node.js for Noobs
Node.js for NoobsNode.js for Noobs
Node.js for Noobs
Caio Ribeiro Pereira
 
PHP + Node.js
PHP + Node.jsPHP + Node.js
PHP + Node.js
Patrick Kaminski
 
Apresentação
ApresentaçãoApresentação
Apresentação
Marcelo de castro
 
Node.js
Node.jsNode.js
Node.js
luizhse
 
Performance Web com ASP.NET MVC
Performance Web com ASP.NET MVCPerformance Web com ASP.NET MVC
Performance Web com ASP.NET MVC
Rodolfo Fadino Junior
 
Boas práticas de API Design
Boas práticas de API DesignBoas práticas de API Design
Boas práticas de API Design
Caio Ribeiro Pereira
 
NodeJS
NodeJSNodeJS
NodeJS
Renato Sousa
 
Minicurso Ruby e Rails (RailsMG UNA)
Minicurso Ruby e Rails (RailsMG UNA)Minicurso Ruby e Rails (RailsMG UNA)
Minicurso Ruby e Rails (RailsMG UNA)
Daniel Lopes
 
Nodejs justdigital
Nodejs justdigitalNodejs justdigital
Nodejs justdigital
Just Digital
 

Mais procurados (20)

Node.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoNode.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançado
 
Por que Node JS?
Por que Node JS?Por que Node JS?
Por que Node JS?
 
NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.
 
Node.js, Uma breve introdução
Node.js, Uma breve introduçãoNode.js, Uma breve introdução
Node.js, Uma breve introdução
 
Node js - Javascript Server Side
Node js - Javascript Server SideNode js - Javascript Server Side
Node js - Javascript Server Side
 
Conhecendo mundo Node.js
Conhecendo mundo Node.jsConhecendo mundo Node.js
Conhecendo mundo Node.js
 
Node.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasNode.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo Branas
 
Introdução ao NodeJS
Introdução ao NodeJSIntrodução ao NodeJS
Introdução ao NodeJS
 
Light Talk: Introdução sobre Node.js
Light Talk: Introdução sobre Node.jsLight Talk: Introdução sobre Node.js
Light Talk: Introdução sobre Node.js
 
Conhecendo o Nodejs
Conhecendo o NodejsConhecendo o Nodejs
Conhecendo o Nodejs
 
Introdução à Node.js + MongoDB
Introdução à Node.js + MongoDBIntrodução à Node.js + MongoDB
Introdução à Node.js + MongoDB
 
Node.js for Noobs
Node.js for NoobsNode.js for Noobs
Node.js for Noobs
 
PHP + Node.js
PHP + Node.jsPHP + Node.js
PHP + Node.js
 
Apresentação
ApresentaçãoApresentação
Apresentação
 
Node.js
Node.jsNode.js
Node.js
 
Performance Web com ASP.NET MVC
Performance Web com ASP.NET MVCPerformance Web com ASP.NET MVC
Performance Web com ASP.NET MVC
 
Boas práticas de API Design
Boas práticas de API DesignBoas práticas de API Design
Boas práticas de API Design
 
NodeJS
NodeJSNodeJS
NodeJS
 
Minicurso Ruby e Rails (RailsMG UNA)
Minicurso Ruby e Rails (RailsMG UNA)Minicurso Ruby e Rails (RailsMG UNA)
Minicurso Ruby e Rails (RailsMG UNA)
 
Nodejs justdigital
Nodejs justdigitalNodejs justdigital
Nodejs justdigital
 

Destaque

Porque você deve aprender VIm hoje.
Porque você deve aprender VIm hoje.Porque você deve aprender VIm hoje.
Porque você deve aprender VIm hoje.
Pedro Franceschi
 
Fazendo mágica com ElasticSearch
Fazendo mágica com ElasticSearchFazendo mágica com ElasticSearch
Fazendo mágica com ElasticSearch
Pedro Franceschi
 
Alto desempenho e escalabilidade em aplicações web utilizando banco de dados ...
Alto desempenho e escalabilidade em aplicações web utilizando banco de dados ...Alto desempenho e escalabilidade em aplicações web utilizando banco de dados ...
Alto desempenho e escalabilidade em aplicações web utilizando banco de dados ...
Vagner Santana
 
Arquitetura do Framework Spring
Arquitetura do Framework SpringArquitetura do Framework Spring
Arquitetura do Framework Spring
Alexsandro Oliveira
 
Node.js no Pagar.me
Node.js no Pagar.meNode.js no Pagar.me
Node.js no Pagar.me
Pedro Franceschi
 
Desbancando mitos sobre PHP e o futuro da linguagem
Desbancando mitos sobre PHP e o futuro da linguagemDesbancando mitos sobre PHP e o futuro da linguagem
Desbancando mitos sobre PHP e o futuro da linguagem
Pedro Chaves
 
After the LAMP, it's time to get MEAN
After the LAMP, it's time to get MEANAfter the LAMP, it's time to get MEAN
After the LAMP, it's time to get MEAN
Jeff Fox
 
The Business Case for Node.js
The Business Case for Node.jsThe Business Case for Node.js
The Business Case for Node.js
Joe McCann
 
Banco de Dados Não Relacionais vs Banco de Dados Relacionais
Banco de Dados Não Relacionais vs Banco de Dados RelacionaisBanco de Dados Não Relacionais vs Banco de Dados Relacionais
Banco de Dados Não Relacionais vs Banco de Dados Relacionais
alexculpado
 
Anatomía de Hígado
Anatomía de HígadoAnatomía de Hígado
Anatomía de Hígado
Zaret Baron Alcantar
 
Hepatocitos 1
Hepatocitos 1Hepatocitos 1
Hepatocitos 1
Rosario Garcia
 
Introducao aos Bancos de Dados Não-relacionais
Introducao aos Bancos de Dados Não-relacionaisIntroducao aos Bancos de Dados Não-relacionais
Introducao aos Bancos de Dados Não-relacionais
Mauricio De Diana
 
Anatomia sistema-porta
Anatomia sistema-portaAnatomia sistema-porta
Anatomia sistema-porta
katherine price
 
Node Foundation Membership Overview 20160907
Node Foundation Membership Overview 20160907Node Foundation Membership Overview 20160907
Node Foundation Membership Overview 20160907
NodejsFoundation
 
The Enterprise Case for Node.js
The Enterprise Case for Node.jsThe Enterprise Case for Node.js
The Enterprise Case for Node.js
NodejsFoundation
 
Secure Your REST API (The Right Way)
Secure Your REST API (The Right Way)Secure Your REST API (The Right Way)
Secure Your REST API (The Right Way)
Stormpath
 

Destaque (16)

Porque você deve aprender VIm hoje.
Porque você deve aprender VIm hoje.Porque você deve aprender VIm hoje.
Porque você deve aprender VIm hoje.
 
Fazendo mágica com ElasticSearch
Fazendo mágica com ElasticSearchFazendo mágica com ElasticSearch
Fazendo mágica com ElasticSearch
 
Alto desempenho e escalabilidade em aplicações web utilizando banco de dados ...
Alto desempenho e escalabilidade em aplicações web utilizando banco de dados ...Alto desempenho e escalabilidade em aplicações web utilizando banco de dados ...
Alto desempenho e escalabilidade em aplicações web utilizando banco de dados ...
 
Arquitetura do Framework Spring
Arquitetura do Framework SpringArquitetura do Framework Spring
Arquitetura do Framework Spring
 
Node.js no Pagar.me
Node.js no Pagar.meNode.js no Pagar.me
Node.js no Pagar.me
 
Desbancando mitos sobre PHP e o futuro da linguagem
Desbancando mitos sobre PHP e o futuro da linguagemDesbancando mitos sobre PHP e o futuro da linguagem
Desbancando mitos sobre PHP e o futuro da linguagem
 
After the LAMP, it's time to get MEAN
After the LAMP, it's time to get MEANAfter the LAMP, it's time to get MEAN
After the LAMP, it's time to get MEAN
 
The Business Case for Node.js
The Business Case for Node.jsThe Business Case for Node.js
The Business Case for Node.js
 
Banco de Dados Não Relacionais vs Banco de Dados Relacionais
Banco de Dados Não Relacionais vs Banco de Dados RelacionaisBanco de Dados Não Relacionais vs Banco de Dados Relacionais
Banco de Dados Não Relacionais vs Banco de Dados Relacionais
 
Anatomía de Hígado
Anatomía de HígadoAnatomía de Hígado
Anatomía de Hígado
 
Hepatocitos 1
Hepatocitos 1Hepatocitos 1
Hepatocitos 1
 
Introducao aos Bancos de Dados Não-relacionais
Introducao aos Bancos de Dados Não-relacionaisIntroducao aos Bancos de Dados Não-relacionais
Introducao aos Bancos de Dados Não-relacionais
 
Anatomia sistema-porta
Anatomia sistema-portaAnatomia sistema-porta
Anatomia sistema-porta
 
Node Foundation Membership Overview 20160907
Node Foundation Membership Overview 20160907Node Foundation Membership Overview 20160907
Node Foundation Membership Overview 20160907
 
The Enterprise Case for Node.js
The Enterprise Case for Node.jsThe Enterprise Case for Node.js
The Enterprise Case for Node.js
 
Secure Your REST API (The Right Way)
Secure Your REST API (The Right Way)Secure Your REST API (The Right Way)
Secure Your REST API (The Right Way)
 

Semelhante a Node.js - Devo adotar na minha empresa?

Hangout Tempo Real Eventos - Nodejs - Os Primeiros Passos
Hangout  Tempo Real Eventos - Nodejs - Os Primeiros PassosHangout  Tempo Real Eventos - Nodejs - Os Primeiros Passos
Hangout Tempo Real Eventos - Nodejs - Os Primeiros Passos
Jackson F. de A. Mafra
 
Desenvolvimento em .Net - Introducao A Framework
Desenvolvimento em .Net - Introducao A FrameworkDesenvolvimento em .Net - Introducao A Framework
Desenvolvimento em .Net - Introducao A Framework
Vitor Silva
 
NoSQL + Node.js
NoSQL + Node.jsNoSQL + Node.js
NoSQL + Node.js
Henrique Gogó
 
Programação para Web II: NodeJS
Programação para Web II:  NodeJSProgramação para Web II:  NodeJS
Programação para Web II: NodeJS
Alex Camargo
 
Minicurso Node-RED.pdf
Minicurso Node-RED.pdfMinicurso Node-RED.pdf
Minicurso Node-RED.pdf
LuizGuilherme949739
 
Aula09 - Java Script
Aula09 - Java ScriptAula09 - Java Script
Aula09 - Java Script
Jorge Ávila Miranda
 
Aplicações Realtime em Android | Fisl 15 | GuMobileRS
Aplicações Realtime em Android | Fisl 15 | GuMobileRSAplicações Realtime em Android | Fisl 15 | GuMobileRS
Aplicações Realtime em Android | Fisl 15 | GuMobileRS
Jackson F. de A. Mafra
 
Primeiros passos no Vue.js
Primeiros passos no Vue.jsPrimeiros passos no Vue.js
Primeiros passos no Vue.js
Joel Rodrigues
 
Sessao3
Sessao3Sessao3
Sessao3
Nelson Sousa
 
Desenvolvimento Web Avançado usando PHP
Desenvolvimento Web Avançado usando PHPDesenvolvimento Web Avançado usando PHP
Desenvolvimento Web Avançado usando PHP
elliando dias
 
.NET 2015, ASP.NET 5, C# 6 e tudo mais
.NET 2015, ASP.NET 5, C# 6 e tudo mais.NET 2015, ASP.NET 5, C# 6 e tudo mais
.NET 2015, ASP.NET 5, C# 6 e tudo mais
akamud
 
Desenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosDesenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São Carlos
Rodolfo Fadino Junior
 
Introdução ao Nodejs
Introdução ao NodejsIntrodução ao Nodejs
Introdução ao Nodejs
Márcio Silvestroni
 
2006 - ASP.NET.ppt
2006 - ASP.NET.ppt2006 - ASP.NET.ppt
2006 - ASP.NET.ppt
Ricardo Guerra Freitas
 
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015  Porto Alegre - Interfaces ricas com Rails e React.JSTDC2015  Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
Rodrigo Urubatan
 
Precisamos falar sobre MERN stack
Precisamos falar sobre MERN stackPrecisamos falar sobre MERN stack
Precisamos falar sobre MERN stack
Sidney Roberto
 
Palestra de Asp.Net 5 no TDC floripa e DotnetFloripa
Palestra de Asp.Net 5 no TDC floripa e DotnetFloripaPalestra de Asp.Net 5 no TDC floripa e DotnetFloripa
Palestra de Asp.Net 5 no TDC floripa e DotnetFloripa
Renato Haddad
 
Front end architecture
Front end architectureFront end architecture
Front end architecture
Rafael Salerno de Oliveira
 
ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014
Giovanni Bassi
 
Introdução sobre desenvolvimento web
Introdução sobre desenvolvimento webIntrodução sobre desenvolvimento web
Introdução sobre desenvolvimento web
Rodrigo Rodrigues
 

Semelhante a Node.js - Devo adotar na minha empresa? (20)

Hangout Tempo Real Eventos - Nodejs - Os Primeiros Passos
Hangout  Tempo Real Eventos - Nodejs - Os Primeiros PassosHangout  Tempo Real Eventos - Nodejs - Os Primeiros Passos
Hangout Tempo Real Eventos - Nodejs - Os Primeiros Passos
 
Desenvolvimento em .Net - Introducao A Framework
Desenvolvimento em .Net - Introducao A FrameworkDesenvolvimento em .Net - Introducao A Framework
Desenvolvimento em .Net - Introducao A Framework
 
NoSQL + Node.js
NoSQL + Node.jsNoSQL + Node.js
NoSQL + Node.js
 
Programação para Web II: NodeJS
Programação para Web II:  NodeJSProgramação para Web II:  NodeJS
Programação para Web II: NodeJS
 
Minicurso Node-RED.pdf
Minicurso Node-RED.pdfMinicurso Node-RED.pdf
Minicurso Node-RED.pdf
 
Aula09 - Java Script
Aula09 - Java ScriptAula09 - Java Script
Aula09 - Java Script
 
Aplicações Realtime em Android | Fisl 15 | GuMobileRS
Aplicações Realtime em Android | Fisl 15 | GuMobileRSAplicações Realtime em Android | Fisl 15 | GuMobileRS
Aplicações Realtime em Android | Fisl 15 | GuMobileRS
 
Primeiros passos no Vue.js
Primeiros passos no Vue.jsPrimeiros passos no Vue.js
Primeiros passos no Vue.js
 
Sessao3
Sessao3Sessao3
Sessao3
 
Desenvolvimento Web Avançado usando PHP
Desenvolvimento Web Avançado usando PHPDesenvolvimento Web Avançado usando PHP
Desenvolvimento Web Avançado usando PHP
 
.NET 2015, ASP.NET 5, C# 6 e tudo mais
.NET 2015, ASP.NET 5, C# 6 e tudo mais.NET 2015, ASP.NET 5, C# 6 e tudo mais
.NET 2015, ASP.NET 5, C# 6 e tudo mais
 
Desenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosDesenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São Carlos
 
Introdução ao Nodejs
Introdução ao NodejsIntrodução ao Nodejs
Introdução ao Nodejs
 
2006 - ASP.NET.ppt
2006 - ASP.NET.ppt2006 - ASP.NET.ppt
2006 - ASP.NET.ppt
 
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015  Porto Alegre - Interfaces ricas com Rails e React.JSTDC2015  Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
 
Precisamos falar sobre MERN stack
Precisamos falar sobre MERN stackPrecisamos falar sobre MERN stack
Precisamos falar sobre MERN stack
 
Palestra de Asp.Net 5 no TDC floripa e DotnetFloripa
Palestra de Asp.Net 5 no TDC floripa e DotnetFloripaPalestra de Asp.Net 5 no TDC floripa e DotnetFloripa
Palestra de Asp.Net 5 no TDC floripa e DotnetFloripa
 
Front end architecture
Front end architectureFront end architecture
Front end architecture
 
ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014
 
Introdução sobre desenvolvimento web
Introdução sobre desenvolvimento webIntrodução sobre desenvolvimento web
Introdução sobre desenvolvimento web
 

Node.js - Devo adotar na minha empresa?

  • 1. node.js JavaScript no servidor Pablo D. 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 com node.js - Escalando verticalmente - Escalando horizontalmente - Escalando com proxy reverso Estratégias
  • 6. 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
  • 7. 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');
  • 8. 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.
  • 9. Fim. Pablo D. Souza Santos Rectius - Tecnologia e Informação