Upload
caio-cutrim
View
72
Download
4
Embed Size (px)
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;