41
O Bom, o Mau, o Vilão... E o

O bom, o mau, o vilão... e o node.js

Embed Size (px)

Citation preview

Page 1: O bom, o mau, o vilão... e o node.js

O Bom, o Mau, o Vilão... E o

Page 2: O bom, o mau, o vilão... e o node.js

Agenda

• About me

• Node.js

• Instalação

• Hands On

• Most Wanted

Page 3: O bom, o mau, o vilão... e o node.js

About me

[email protected]

@npaz

pt.linkedin.com/in/nunopaz

Page 4: O bom, o mau, o vilão... e o node.js

About me

Há bola hoje?

Page 5: O bom, o mau, o vilão... e o node.js

Node.js

Page 6: O bom, o mau, o vilão... e o node.js

Objectivo

Page 7: O bom, o mau, o vilão... e o node.js

NODE.js ?

• Ambiente de execução construida sobre “V8 Javascript Engine”

• Paradigma “Event-driven”

• Ryan Dahl

• Opensource

• Cross - platform

Node standard library

V8Thread

pool (libeio)

Eventloop

(libev)

Page 8: O bom, o mau, o vilão... e o node.js

Custo I/O

AcessoCiclos de

processador

Cache L1 3

Cache L2 14

RAM 250

Disco 41 000 000

Rede 240 000 000

http://goo.gl/ZmO7x

Page 9: O bom, o mau, o vilão... e o node.js

Waiting

Encaminhamento dopedido

Query DB ProcessamentoDos resultados

log Envio da resposta

Page 10: O bom, o mau, o vilão... e o node.js

Threads/Processos

• Podemos ter quatro pedidos concorrentes

Page 11: O bom, o mau, o vilão... e o node.js

Funcionamento

Page 12: O bom, o mau, o vilão... e o node.js

O BOM, o mau e o vilão

• Objetivo

• E concorrência com este modelo?

Page 13: O bom, o mau, o vilão... e o node.js

Estado

Page 14: O bom, o mau, o vilão... e o node.js

Em pRODUÇÃO

http://goo.gl/ONfP9B

Page 15: O bom, o mau, o vilão... e o node.js

INstalação

Page 16: O bom, o mau, o vilão... e o node.js

Instalação

Page 17: O bom, o mau, o vilão... e o node.js

Instalaçãocd /opt/

wget http://nodejs.org/dist/v0.8.18/node-v0.8.18-linux-

x64.tar.gz

tar xvzpf node-v0.8.18-linux-x64.tar.gz

ln -s /opt/node-v0.8.18-linux-x64 /opt/node-latest-stable

Page 18: O bom, o mau, o vilão... e o node.js

InstalaçãoBackup do ficheiro /etc/profilecp -Ra /etc/profile /etc/profile.bckp

Adicionamos o caminho dos binários do nodeecho "PATH=$PATH:/opt/node-latest-stable/bin" >> /etc/profile

Adicionamos o caminho das bibliotecas do nodeecho "LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/node-latest-stable/lib" >> /etc/profile

Expor os binários e as bibiotecas ao SOecho "export PATH LD_LIBRARY_PATH" >> /etc/profile

Restart

Page 19: O bom, o mau, o vilão... e o node.js

Hands on

Page 20: O bom, o mau, o vilão... e o node.js

Basic Server

var http = require('http');

http.createServer(function (req, res) {

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

res.end('Hello ISCTE');

}).listen(1337);

console.log('Server running at

http://127.0.0.1:1337/');

Page 21: O bom, o mau, o vilão... e o node.js

Blocking Vs NON-BLOCKing code

Page 22: O bom, o mau, o vilão... e o node.js

Cluster MODE

http://goo.gl/r61IHP

Page 23: O bom, o mau, o vilão... e o node.js

Load Balancer

http://goo.gl/QLcBAe

Page 24: O bom, o mau, o vilão... e o node.js

Debug

Page 25: O bom, o mau, o vilão... e o node.js

Most wanted

Page 26: O bom, o mau, o vilão... e o node.js

Instalação de novos componentes

https://www.npmjs.com/

Page 27: O bom, o mau, o vilão... e o node.js

Instalação de novos componentes

• Comandos base:• npm install <PACKAGE>

• npm install –g <PACKAGE>

• Boas práticas:• npm init

• npm install <PACKAGE> --save

Page 28: O bom, o mau, o vilão... e o node.js

Socket.io“WebSocket é uma tecnologia que permite a comunicação bidirecional por canais full-duplex sobre um único socket Transmission Control Protocol (TCP)”

http://pt.wikipedia.org/wiki/WebSocket

Page 29: O bom, o mau, o vilão... e o node.js

Socket.io

1 2 3

4 5 6

7 8 9

Page 30: O bom, o mau, o vilão... e o node.js

Express

• Web framework

• Framework inpirada na framework Sinatra (Ruby)

• Conjunto de recursos já integrado (logger, routing,etc....)

packages people 'npm install' a lot

Page 31: O bom, o mau, o vilão... e o node.js

Express

var express = require('express')

var app = express()

app.get('/', function (req, res) {

res.send('Hello ISCTE')

})

app.listen(1337)

Page 32: O bom, o mau, o vilão... e o node.js

Colors

var colors = require('colors');

console.log('hello'.green); // outputs green text

console.log('i like cake and pies'.underline.red) // outputs red underlined text

console.log('inverse the color'.inverse); // inverses the color

console.log('OMG Rainbows!'.rainbow); // rainbow

console.log('Run the trap'.trap); // Drops the bass

most depended-upon packages

Page 33: O bom, o mau, o vilão... e o node.js

Hapi.js

• Framework para construção de serviços REST

Page 34: O bom, o mau, o vilão... e o node.js

Logs

• Winston

Biblioteca para logging multi transporte

Permite extender o “transporte” dos logs

packages people 'npm install' a lot

Page 35: O bom, o mau, o vilão... e o node.js

Forever

• Gestor de processos de aplicações

forever start simple-server.js

forever restartall

forever logs

forever list

forever stop 0

Page 36: O bom, o mau, o vilão... e o node.js

PM2

• Gestor de processos de aplicações

pm2 start app.js

packages people 'npm install' a lot

Page 37: O bom, o mau, o vilão... e o node.js

PM2

• Gestor de processos de aplicações

pm2 start <app_name|id|all>

pm2 restart <app_name|id|all>

pm2 delete <app_name|id|all>

packages people 'npm install' a lot

Page 38: O bom, o mau, o vilão... e o node.js

PM2

• Gestor de processos de aplicações

pm2 describe 0

packages people 'npm install' a lot

Page 39: O bom, o mau, o vilão... e o node.js

NOSQL

Page 40: O bom, o mau, o vilão... e o node.js

Questões?

Page 41: O bom, o mau, o vilão... e o node.js

Obrigado