GDG Conf Node JS sem segredos

Preview:

Citation preview

Hello, world!

Caio Cutrim:Entusiasta nodejs, programador web ou full-stack developer.Fundador do nodejsma, tive meu primeiro contato com programação web em 2007 quando saiu do antigo ensino-médio.Auto didata, técnico em informática e músico nas horas vagas.

http://facebook.com/nodejsma http://github.com/caiocutrim http://facebook.com/caio.cutrim.3 http://twitter.com/CaioCutrim1989

Ponto de vista, o problema das arquiteturas bloqueantes

Custo alto para manter, Bloqueiam a execução do código quando fazem I/O ( por exemplo.:

leitura em disco, query em data-base, envio de email e etc ) ex.:python, java, php, ruby e .net

Assíncrono x Síncrono

ram

Ciclos de CPU

3

14

250

41.000.000

240.000.000

Cache l1

Cache l2

RAM

Disco

Rede

Ponto de vista, o problema das arquiteturas bloqueantes

E o Twisted(python) e o Event Machine(ruby)?

O problema das arquiteturas bloqueantes

E o Twisted(python) e o Event Machine(ruby)? Requer conhecimento específico do framework e de suas bibliotecas. Limitação de uso de bibliotecas assíncronas construídas especificamente

para o Event Machine. O uso de bibliotecas bloqueantes no event-machine não habilita o

servidor de escalar da melhor forma, porque o event-loop vai está bloqueando constantemente, isso impede temporariamente os processos de eventos de I/O.

Alternativa

Trabalhar com multi-threading pattern Requer investimento para escalar verticalmente, gerando

custo adicionais de hardware para manter o sistema.

O que é o

O que é o nodejs?

Event-drive I/O framework para o v8 JavaScript engine do Google Chrome.

Base filosófica.

'Non-block I/O' (Entrada/Saída não bloqueante),Multiprotocolo (HTTP, DNS, TLS e etc...),'Streaming everything', fácil manipulação de dados binário com a abstração da classe Buffer.Single thread, incialmente não é possível trabalhar em multi-threading com o node (uma instância, uma thread), a não ser que você use clusters(node core module, que permite a criação de processos filhos que compartilham toda as portas do servidor).

Demonstração

Event loop

Event-emitter + event-listener Command-line REPL(READ,EVAL,PRINT,

LOOP [LER, AVALIAR, IMPRIMIR, 'LOOP']);

Event loop

Arquitetura(modelo-simples)

Runtime

Server

Javascript

NODEJS {

internet

Assíncrono x Síncrono

=> Event emitter pattern para simplificar o Event-drive programming style;=> Callback pattern;

Assíncrono x Síncrono

=>Demonstração callback Hell

Assíncrono x Síncrono

Promisses

Promisses

Principais frameworks e ferramentas de teste

Express.js, Jasmine Karma(ambiente de teste com feedback instantâneo e

Integração descomplicada com Jenkis, Travis ou Semaphore)

Deploy

Heroku, Openshift, Modules, Digital Ocean e etc...

Node package manager

Instalar dependênica de terceiros (third-part) Gerenciar verções do node Gerenciar dependências locais e globais.

Workshop

https://www.sympla.com.br/hands-on-nodejs---aprenda-a-usar-nodejs-na-pratica__32096

Será dia 06 de junho no Cafufa de 9h às 18h do básico ao deploy!

Os 10 primeiros inscritos receberão 40% de desconto, cupon promocional: MAJSGROUP

process.exit(1);//Muito obrigado!

Referências:

Professional Nodejs, autor: Manuel Kiessling Palestra Javascript com google v8 no servidor, autor : Luciano

Ramalho (web desde 1994, programador desde 1982) Node doc : http://node.org/ Node br : http://nodebr.com/ Aplicações web real-time com nodejs, autor: Caio Ribeiro MEAN-FULL-STACK, autor: Flávio Almeida;