js moderno - do coder ao shareholder

73
JS Moderno Do coder ao shareholder

Upload: luiz-filho

Post on 19-Nov-2014

988 views

Category:

Technology


1 download

DESCRIPTION

Palestra do 3º Join Community. 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.

TRANSCRIPT

Page 1: JS Moderno - Do coder ao shareholder

JS ModernoDo coder ao shareholder

Page 2: JS Moderno - Do coder ao shareholder

linkedin.com/in/luizgonzaga

@luizmarelo

Page 3: JS Moderno - Do coder ao shareholder
Page 4: JS Moderno - Do coder ao shareholder

Disclaimer★ “There are no silver bullets"

Page 5: JS Moderno - Do coder ao shareholder
Page 6: JS Moderno - Do coder ao shareholder

Derpina Derp

Page 7: JS Moderno - Do coder ao shareholder

Derpina

Líder de Projeto… Arquiteto…Programador…

Derp

Page 8: JS Moderno - Do coder ao shareholder

CEO…Gerente…Líder de Projeto…

Derpina

Líder de Projeto… Arquiteto…Programador…

Derp

Page 9: JS Moderno - Do coder ao shareholder

CEO…Gerente…Líder de Projeto…

Derpina

Líder de Projeto… Arquiteto…Programador…

DerpCoder

Page 10: JS Moderno - Do coder ao shareholder

CEO…Gerente…Líder de Projeto…

Derpina

Líder de Projeto… Arquiteto…Programador…

DerpSha

reholde

r

Coder

Page 11: JS Moderno - Do coder ao shareholder

Era uma vez…

Page 12: JS Moderno - Do coder ao shareholder

Era uma vez…★1995:

Brendan Eich @ Netscape: Mocha ➛ Livescript ➛ Javascript

Page 13: JS Moderno - Do coder ao shareholder

Era uma vez…★1995:

Brendan Eich @ Netscape: Mocha ➛ Livescript ➛ Javascript

★1996:JavaScript clonado no IE 3.0: “JScript”

Page 14: JS Moderno - Do coder ao shareholder

ES.next / “Harmony”

“ES4” E4X

“ES4”

ECMA International Technical Committee 39 (TC39)

ECMAScript

Page 15: JS Moderno - Do coder ao shareholder

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

Page 16: JS Moderno - Do coder ao shareholder

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…

Page 17: JS Moderno - Do coder ao shareholder
Page 18: JS Moderno - Do coder ao shareholder

Implementações ES

V8 SpiderMonkey Chakra Webkit

Page 19: JS Moderno - Do coder ao shareholder

Implementações ES

V8 SpiderMonkey Chakra Webkit

Page 20: JS Moderno - Do coder ao shareholder
Page 21: JS Moderno - Do coder ao shareholder
Page 22: JS Moderno - Do coder ao shareholder

Back && Front

Page 23: JS Moderno - Do coder ao shareholder

Back && Front★Com um mínimo (ou nenhum) esforço, podemos reutilizar

código entre servidor e cliente

Page 24: JS Moderno - Do coder ao shareholder

Back && Front★Com um mínimo (ou nenhum) esforço, podemos reutilizar

código entre servidor e cliente

★Bibliotecas compartilhadas (templates, validação, http…)

Page 25: JS Moderno - Do coder ao shareholder

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

Page 26: JS Moderno - Do coder ao shareholder

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…)

Page 27: JS Moderno - Do coder ao shareholder

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…)

Page 28: JS Moderno - Do coder ao shareholder

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 ]!

?

Page 29: JS Moderno - Do coder ao shareholder

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

Page 30: JS Moderno - Do coder ao shareholder

JS: Reboot

Page 31: JS Moderno - Do coder ao shareholder

JS: Reboot★Aplicações web || responsive mobile [Backbone, Angular, React,

Dust…]

Page 32: JS Moderno - Do coder ao shareholder

JS: Reboot★Aplicações web || responsive mobile [Backbone, Angular, React,

Dust…]

★Aplicações mobile [Cordova / PhoneGap, Kirin, Titanium, iOS/OSX#WebViewJavascriptBridge…]

Page 33: JS Moderno - Do coder ao shareholder

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…]

Page 34: JS Moderno - Do coder ao shareholder

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…]

Page 35: JS Moderno - Do coder ao shareholder

JS! Por quê?

Page 36: JS Moderno - Do coder ao shareholder

JS! Por quê?★ “Já está lá”

★Baixo risco

★Escreva código e aplicações uma vez

★Conjunto macro de conhecimento único

Page 37: JS Moderno - Do coder ao shareholder

MediumCases

Page 38: JS Moderno - Do coder ao shareholder
Page 39: JS Moderno - Do coder ao shareholder

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

Page 40: JS Moderno - Do coder ao shareholder

★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

Page 41: JS Moderno - Do coder ao shareholder

★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)

Page 42: JS Moderno - Do coder ao shareholder

★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

Page 43: JS Moderno - Do coder ao shareholder
Page 44: JS Moderno - Do coder ao shareholder

★ “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”

Page 45: JS Moderno - Do coder ao shareholder

★ “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

Page 46: JS Moderno - Do coder ao shareholder

★ “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

Page 47: JS Moderno - Do coder ao shareholder

★ “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

Page 48: JS Moderno - Do coder ao shareholder

★ “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, MobileEscalabilidade, Performance

Page 49: JS Moderno - Do coder ao shareholder

★ “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 LandauSoftware Engineer, Mobile Web

Page 50: JS Moderno - Do coder ao shareholder

★ “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 LandauSoftware Engineer, Mobile Web

Flexibilidade

Page 51: JS Moderno - Do coder ao shareholder

★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

Page 52: JS Moderno - Do coder ao shareholder

★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

Page 53: JS Moderno - Do coder ao shareholder

★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!

Page 54: JS Moderno - Do coder ao shareholder

★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

Page 55: JS Moderno - Do coder ao shareholder

★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”

Page 56: JS Moderno - Do coder ao shareholder

★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

Page 57: JS Moderno - Do coder ao shareholder

Ecossistema

Page 58: JS Moderno - Do coder ao shareholder

Ecossistema

Page 59: JS Moderno - Do coder ao shareholder

NPM

Page 60: JS Moderno - Do coder ao shareholder

NPM★Node Package Manager

Page 61: JS Moderno - Do coder ao shareholder

NPM★Node Package Manager

★Similar ao Ruby Gems, Maven…

Page 62: JS Moderno - Do coder ao shareholder

NPM★Node Package Manager

★Similar ao Ruby Gems, Maven…

★ Integração com GitHub

Page 63: JS Moderno - Do coder ao shareholder

NPM★Node Package Manager

★Similar ao Ruby Gems, Maven…

★ Integração com GitHub

★Facilidade em criar/manter pacotes

Page 64: JS Moderno - Do coder ao shareholder

NPM★Node Package Manager

★Similar ao Ruby Gems, Maven…

★ Integração com GitHub

★Facilidade em criar/manter pacotes

★Maior engajamento / fortalecimento da comunidade

Page 65: JS Moderno - Do coder ao shareholder

Testes★Mocha

★Sinon

★Buster

★Jasmine

★QUnit

★Chai

★Karma

★PhantomJS

Page 66: JS Moderno - Do coder ao shareholder

Automatizadores

Page 67: JS Moderno - Do coder ao shareholder

Automatizadores★Gulp, Grunt, Broccoli…

Page 68: JS Moderno - Do coder ao shareholder

Automatizadores★Gulp, Grunt, Broccoli…

★Similares de outros ecossistemas: Makefile, Rakefile, Ant, Maven…

Page 69: JS Moderno - Do coder ao shareholder

Automatizadores★Gulp, Grunt, Broccoli…

★Similares de outros ecossistemas: Makefile, Rakefile, Ant, Maven…

★Configurações declarativas (Grunt) ou JS puro (Gulp)

Page 70: JS Moderno - Do coder ao shareholder

Integração Contínua★Travis

★Jenkins

★Strider

★…

Page 71: JS Moderno - Do coder ao shareholder

Plataformas★Nodejitsu

★Heroku

★Azure

★Amazon EC2

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

Page 72: JS Moderno - Do coder ao shareholder

Links & Perguntas★bitly.com/bundles/luizmarelo/2

★gojs.org

Page 73: JS Moderno - Do coder ao shareholder

linkedin.com/in/luizgonzaga

@luizmarelo

Obrigado!