Upgrade to Pro — share decks privately, control downloads, hide ads and more …

JS Moderno, do coder ao ShareHolder

JS Moderno, do coder ao ShareHolder

Palestra: "JS Moderno, do coder ao shareholder".
Palestrante: Luiz Gonzaga dos Santos Filho
Filmagem: https://www.youtube.com/watch?v=TDU-SX20L_I

Uma visão geral e desmitificação do que é o Javascript, seus novos ares, o que é Node.js, seus diferenciais e como grandes empresas já veem no Javascript um grande investimento.

More Decks by Luiz Gonzaga dos Santos Filho

Other Decks in Programming

Transcript

  1. Era uma vez… ★ 1995:
 Brendan Eich @ Netscape: Mocha

    ➛ Livescript ➛ Javascript ★ 1996:
 JavaScript clonado no IE 3.0: “JScript”
  2. Espiando o ES 6 ★ Sintaxe + concisa e expressiva

    ★ Modules e Sand-boxing ★ Declaração de "Classe" ★ Iterators e generators ★ Promessas ★ Interpolação de String ★ Objetos e arrays binários ★ Hash Maps e Sets "fracos" ★ Mais Math e String built-in ★ Melhor suporte Unicode
  3. Moral da História ★ JS foi mesmo criado “na tora”

    ★ Passou e vem passando por um longo processo de aperfeiçoamento (ES x.x) ★ Mas, mesmo assim, é uma linguagem cada vez melhor e ubíqua ★ E hoje, grandes nomes contribuem para torná-la excelente…
  4. Back && Front ★ Com um mínimo (ou nenhum) esforço,

    podemos reutilizar código entre servidor e cliente
  5. Back && Front ★ Com um mínimo (ou nenhum) esforço,

    podemos reutilizar código entre servidor e cliente ★ Bibliotecas compartilhadas (templates, validação, http…)
  6. Back && Front ★ Com um mínimo (ou nenhum) esforço,

    podemos reutilizar código entre servidor e cliente ★ Bibliotecas compartilhadas (templates, validação, http…) ★ Pré-renderizar um template ou mesmo uma árvore DOM no servidor
  7. Back && Front ★ Com um mínimo (ou nenhum) esforço,

    podemos reutilizar código entre servidor e cliente ★ Bibliotecas compartilhadas (templates, validação, http…) ★ Pré-renderizar um template ou mesmo uma árvore DOM no servidor ★ Navegadores headless (Testes, relatórios, screenshots…)
  8. Back && Front ★ Com um mínimo (ou nenhum) esforço,

    podemos reutilizar código entre servidor e cliente ★ Bibliotecas compartilhadas (templates, validação, http…) ★ Pré-renderizar um template ou mesmo uma árvore DOM no servidor ★ Navegadores headless (Testes, relatórios, screenshots…)
  9. 1 [! 2 {! 3 "age": 25,! 4 "_id": "53838b29a868960200000001",!

    5 "__v": 0,! 6 "name": {! 7 "first": "John",! 8 "last": "Doe"! 9 }! 10 },! 11 {! 12 "age": 65,! 13 "_id": "53838b29a868960200000002",! 14 "__v": 0,! 15 "name": {! 16 "first": "Jane",! 17 "last": "Doe"! 18 }! 19 },! 20 {! 21 "age": 45,! 22 "_id": "53838b29a868960200000003",! 23 "__v": 0,! 24 "name": {! 25 "first": "Alice",! 26 "last": "Smith"! 27 }! 28 }! 29 ]! ?
  10. 15+ anos ★ Legado de tecnologias EE ★ “Muitas organizações

    vem se encontrando de mãos atadas, restringidas e de fato impedidas na sua habilidade de inovar” Joe McCann - COO @ Node Firm
  11. JS: Reboot ★ Aplicações web || responsive mobile [Backbone, Angular,

    React, Dust…] ★ Aplicações mobile [Cordova / PhoneGap, Kirin, Titanium, iOS/ OSX#WebViewJavascriptBridge…]
  12. JS: Reboot ★ Aplicações web || responsive mobile [Backbone, Angular,

    React, Dust…] ★ Aplicações mobile [Cordova / PhoneGap, Kirin, Titanium, iOS/ OSX#WebViewJavascriptBridge…] ★ Aplicações desktop [node-webkit, DeskShell, ChromeApps, Prism, Adobe AIR…]
  13. JS: Reboot ★ Aplicações web || responsive mobile [Backbone, Angular,

    React, Dust…] ★ Aplicações mobile [Cordova / PhoneGap, Kirin, Titanium, iOS/ OSX#WebViewJavascriptBridge…] ★ Aplicações desktop [node-webkit, DeskShell, ChromeApps, Prism, Adobe AIR…] ★ Projetos em hardware [Espruino, Tessel, Arduino…]
  14. JS! Por quê? ★ “Já está lá” ★ Baixo risco

    ★ Escreva código e aplicações uma vez ★ Conjunto macro de conhecimento único
  15. ★ Construiu uma versão em node de uma aplicação em

    java na metade do tempo com menos desenvolvedores
  16. ★ Construiu uma versão em node de uma aplicação em

    java na metade do tempo com menos desenvolvedores ★ A versão em node do app dobrou o número de req/sec
  17. ★ Construiu uma versão em node de uma aplicação em

    java na metade do tempo com menos desenvolvedores ★ A versão em node do app dobrou o número de req/sec ★ Tempo de resposta caiu 35% (200ms)
  18. ★ Construiu uma versão em node de uma aplicação em

    java na metade do tempo com menos desenvolvedores ★ A versão em node do app dobrou o número de req/sec ★ Tempo de resposta caiu 35% (200ms) ★ De 1 a 12 apps em 6 meses
  19. ★ “Velocidade foi o ponto fundamental na mudança do PayPal

    para Node. Percebemos que habilitamos um enorme avanço em nosso workflow, nos permitindo iterar mais rápido e inovar mais”
  20. ★ “Velocidade foi o ponto fundamental na mudança do PayPal

    para Node. Percebemos que habilitamos um enorme avanço em nosso workflow, nos permitindo iterar mais rápido e inovar mais” ★ “PayPal tem uma história de tecnologias enterprise tais como Java e C++. Desde que adotamos Node, inúmeros engenheiros da empresa me contaram como estão energizados por seus trabalhos novamente e animados por estarem adotando uma tecnologia “moderna" para construir nosso futuro. Isso é bom de se ouvir” Jeff Harrel, Director of UI Engineering
  21. ★ “Velocidade foi o ponto fundamental na mudança do PayPal

    para Node. Percebemos que habilitamos um enorme avanço em nosso workflow, nos permitindo iterar mais rápido e inovar mais” ★ “PayPal tem uma história de tecnologias enterprise tais como Java e C++. Desde que adotamos Node, inúmeros engenheiros da empresa me contaram como estão energizados por seus trabalhos novamente e animados por estarem adotando uma tecnologia “moderna" para construir nosso futuro. Isso é bom de se ouvir” Jeff Harrel, Director of UI Engineering Economia, Produtividade, Inovação Motivação do desenvolvedor
  22. ★ “Todo o nosso stack mobile é construído completamente com

    Node. Uma razão foi escalabilidade. A segunda é que o Node nos mostrou enormes ganhos de performance” Kiran Prasad 
 Director of Engineering, Mobile
  23. ★ “Todo o nosso stack mobile é construído completamente com

    Node. Uma razão foi escalabilidade. A segunda é que o Node nos mostrou enormes ganhos de performance” Kiran Prasad 
 Director of Engineering, Mobile Escalabilidade, Performance
  24. ★ “Uma organização de notícias deve ser responsiva, tanto para

    seus leitores quanto para um fluxo acelerado de informação. Node provê um nível de flexibilidade que não encontramos em nenhum outro lugar — e nos permite entregar apps performáticos que podem ser facilmente ajustados.” Trevor Landau
 Software Engineer, Mobile Web
  25. ★ “Uma organização de notícias deve ser responsiva, tanto para

    seus leitores quanto para um fluxo acelerado de informação. Node provê um nível de flexibilidade que não encontramos em nenhum outro lugar — e nos permite entregar apps performáticos que podem ser facilmente ajustados.” Trevor Landau
 Software Engineer, Mobile Web Flexibilidade
  26. ★ Servindo 50k req/min (há +8 meses atrás antes do

    lançamento em 48+ países) ★ Serviços Node agora estão aguentando a mesma quantidade de tráfego de antes mas com menos hardware ★ Tempos de carregamento de páginas caiu em 50% ★ Facilidade em implementar funcionalidades em grande amplitude e mudanças no projeto muito mais rapidamente
  27. ★ Servindo 50k req/min (há +8 meses atrás antes do

    lançamento em 48+ países) ★ Serviços Node agora estão aguentando a mesma quantidade de tráfego de antes mas com menos hardware ★ Tempos de carregamento de páginas caiu em 50% ★ Facilidade em implementar funcionalidades em grande amplitude e mudanças no projeto muito mais rapidamente Economia, Produtividade, Inovação
  28. ★ 55% de todo tráfego na Black Friday foi para

    os servidores Node. Sequer um servidor Node caiu. ★ Em plena Black Friday e a utilização de CPU pairou em torno dos 1%. Os desenvolvedores estavam entediados!
  29. ★ 55% de todo tráfego na Black Friday foi para

    os servidores Node. Sequer um servidor Node caiu. ★ Em plena Black Friday e a utilização de CPU pairou em torno dos 1%. Os desenvolvedores estavam entediados! Economia, Motivação do desenvolvedor
  30. ★ Em média, serviços Node manejam cerca de 2M req/min

    ★ Yahoo tem cerca de 200 devs para Node ★ 500 módulos internos, 800 externos ★ “Maior ganho: velocidade e facilidade de desenvolvimento”
  31. ★ Em média, serviços Node manejam cerca de 2M req/min

    ★ Yahoo tem cerca de 200 devs para Node ★ 500 módulos internos, 800 externos ★ “Maior ganho: velocidade e facilidade de desenvolvimento” Produtividade
  32. NPM

  33. NPM ★ Node Package Manager ★ Similar ao Ruby Gems,

    Maven… ★ Integração com GitHub
  34. NPM ★ Node Package Manager ★ Similar ao Ruby Gems,

    Maven… ★ Integração com GitHub ★ Facilidade em criar/manter pacotes
  35. NPM ★ Node Package Manager ★ Similar ao Ruby Gems,

    Maven… ★ Integração com GitHub ★ Facilidade em criar/manter pacotes ★ Maior engajamento / fortalecimento da comunidade
  36. Testes ★ Mocha ★ Sinon ★ Buster ★ Jasmine ★

    QUnit ★ Chai ★ Karma ★ PhantomJS
  37. Automatizadores ★ Gulp, Grunt, Broccoli… ★ Similares de outros ecossistemas:

    Makefile, Rakefile, Ant, Maven… ★ Configurações declarativas (Grunt) ou JS puro (Gulp)
  38. Plataformas ★ Nodejitsu ★ Heroku ★ Azure ★ Amazon EC2

    ★ + várias (https://github.com/joyent/node/wiki/node-hosting)