SlideShare a Scribd company logo
1 of 93
Download to read offline
lapidando o
jcemer.com
twitter.com/jcemer
porto alegre
Globo Play é o produto
de vídeos da TV Globo
O projetoGlobo Play
Mobile first
Projeto
Desktop
2007 2008 2009 2010 2011 2012 2013 2014 2015
Mobile
Mobile revolution
*Usuários em milhares

fonte: Comscore
2k*
Desktop
12AM 7AM 10AM 5PM 8PM 12AM
Uso dos dispositivos

ao longo do dia
fonte: Comscore
Mobile
Uso de mobile web em
relação a mobile nativo
2013
1.8x
16k* x 9k
*Unique visitors em milhares
1.7x
28k x 16k
2014
2.1x
43k x 20k
2015
“It should be accessible from
any kind of hardware that can
connect to the internet:
stationary or mobile, small
screen or large
Sir Tim Berners Lee
Graceful degradation
Graceful degradation
Progressive enhancement
Experiencia fluida
Projeto
“Queremos sair do paradigma
de páginas e alcançar uma
experiência apoiada em
camadas
Product Owner
Definir o fluxo de navegação
no produto utilizando
JavaScript
Ter liberdade para gerar
diferentes empacotamentos
e praticar testes A/B
Server render
Projeto
Fugir das várias requisições
para compor a primeira
página
Utilizar o mesmo código
para o back-end e front-end
da aplicação
Não prejudicar o SEO do
produto
Cliente
Servidor
APP
API

de dados
Tecnologiasutilizadas
A correta escolha de
tecnologias faz parte de bons
resultados
Req
HTML
Click
JSON
Gene
Add
JSON
Click
Animate
class
ue
rate
Request
st1.
2.
3.
4.
5.
6.
7.
8.
9.
Req HTML
Click
JSON
Gene
Add
JSON
Click
class
ue
rate
Req
uest
st
As tecnologias foram
definidas após uma série de
experimentos
React
CSS
SVG
HTML
MapperSmith
jQuery
JavaScript
Web APIs
React Router
React
Tecnologias
O DOM não é performático
quando aplicamos
modificações a revelia
“A solução é escrever código
como se recriasse o DOM toda
vez que o estado muda
Time do Virtual DOM
var newTree = render(data)
var patches = diff(tree, newTree)
rootNode = patch(rootNode, patches)
tree = newTree
Componentes de
software encapsulam uma
série de funcionalidades
relacionadas
Componentes podem ser
compostos para formar um
sistema mais complexo
React permite encapsular,
compor e reusar código na
plataforma Web
Componentes do React
mantêm estado e recebem
propriedades dos seus
ancestrais
Set state Dirty Re render
MapperSmith
Tecnologias
Internet
Rede interna
Cliente
Servidor
APP
API

de dados
Lightweight, isomorphic,
dependency-free, REST client
mapper for JavaScript
https://github.com/tulios/mappersmith
var manifest = {

host: 'http://my.api.com',
resources: {
Book: {
all: {path: '/books.json'},
byId: {path: '/books/{id}.json'}
},
Photo: {
byCategory: {path: '/photos/{category}.json'}
}
}
}
Internet
Rede interna
API

de dados
$.ajax
require('http')
Mappersmith cached
gateway permite utilizar
LocalStorage e Redis para
economizar requisições
https://github.com/tulios/mappersmith-cached-gateway
Servicosconsumidos
O Globo Play é a
consolidação do trabalho de
várias equipes da globo.com
Acervo de vídeos e programas
API de vídeos
Localização do usuário e
informações sobre o sinal de ao vivo
API de live
Identificação do usuário
Serviço de login
Comentários
Recomendação de

conteúdo
Destaques editoriais
Área administrativa
Elastic Search
Acervo de vídeos e programas
para busca
Player com suporte a publicidade e
integração com diversas APIs
Player de vídeo
Desafiosenfrentados
1Organizar código em
componentes
“A container does data
fetching and then renders its
corresponding sub-
component. That’s it.
Jason Bonta
https://medium.com/@dan_abramov/smart-and-dumb-
components-7ca2f9a7c7d0
Componentes puros
dependem apenas de
propriedades e estado para
renderizar
O escopo de responsabilidade
dos componentes é
constantemente revisto
2Compreender o ciclo de
vida dos componentes
http://busypeoples.github.io/post/react-component-lifecycle
Inicialização
Alteração do estado
Alteração de propriedades
Os componentes são
evoluídos ao longo do
desenvolvimento
3Entregar a melhor
experiência para todos
os dispositivos
Maior que 1200px
Até 1024px Até 768px
Media Queries são utilizadas
no CSS e JavaScript para
garantir a melhor experiência
4Utilizar apenas plugins
de interface compatíveis
com React
React headroom
React slick
React smartbanner
React swipeable
O ecossistema do React é
emergente e é preciso ficar
antenado para adotar novas
bibliotecas
5Testar o código dos
componentes
Experimentamos Jasmine,
Karma, Jest, Sinon, Rewire...
Jest é utilizado para os
testes, mas é lento e tem uma
filosofia controversa
Mocha + expect +
shallow render juntos
parecem uma ótima
alternativa
https://blog.algolia.com/how-we-unit-test-react-
components-using-expect-jsx
6Gerenciar estados
globais da aplicação
Serviços com auxílio de
mixins compartilham estado
entre componentes
7Integrar com serviços
externos
Cada serviço externo precisa
ser analisado e integrado a
aplicação
8Lidar com a imaturidade
das bibliotecas
Algumas adequações
precisam ser feitas no código
do produto
9Evoluir as tecnologias
utilizadas
Novas versões do React e
outras dependências
surgiram ao longo do tempo
de desenvolvimento
Migramos para a última
versão do React
recentemente
É necessário viabilizar a
evolução do React Router e
outras dependências
Mixins estão com os dias
contados, é preciso dar
atenção a arquitetura Flux e
ao Redux
...
Ruby on Rails
Bluegreen deploy
New Relic
Storage de assets
Webpack
Novos desafios surgem a
todo momento e este é o
maior barato da nossa
profissão
Resultadodo projeto
“Se o nível de mudança
interno está aquém do
externo, o colapso é
iminente
Jack Welch
Obrigadoapostem na web
@jcemer

More Related Content

What's hot

Netbeans Slides Fy2009 Portugues
Netbeans Slides Fy2009 PortuguesNetbeans Slides Fy2009 Portugues
Netbeans Slides Fy2009 Portugues
Rodrigo Peleias
 

What's hot (20)

Progressive Web Apps e o futuro do desenvolvimento Web na Plataforma .NET
Progressive Web Apps e o futuro do desenvolvimento Web na Plataforma .NETProgressive Web Apps e o futuro do desenvolvimento Web na Plataforma .NET
Progressive Web Apps e o futuro do desenvolvimento Web na Plataforma .NET
 
JavaScript e o perfil do desenvolvedor front end das atualidades mais atuais
JavaScript e o perfil do desenvolvedor front end das atualidades mais atuaisJavaScript e o perfil do desenvolvedor front end das atualidades mais atuais
JavaScript e o perfil do desenvolvedor front end das atualidades mais atuais
 
Aplicações Híbridas para Dispositivos Móveis com AngularJS e PhoneGap
Aplicações Híbridas para Dispositivos Móveis com AngularJS e PhoneGapAplicações Híbridas para Dispositivos Móveis com AngularJS e PhoneGap
Aplicações Híbridas para Dispositivos Móveis com AngularJS e PhoneGap
 
Curso: Desenvolvimento de aplicativos híbridos (dia 2)
Curso: Desenvolvimento de aplicativos híbridos (dia 2)Curso: Desenvolvimento de aplicativos híbridos (dia 2)
Curso: Desenvolvimento de aplicativos híbridos (dia 2)
 
ASP .NET CORE, Angular 2, e Typescript com Scaffolding Yeoman | Seminário
ASP .NET CORE, Angular 2, e Typescript com Scaffolding Yeoman  | Seminário ASP .NET CORE, Angular 2, e Typescript com Scaffolding Yeoman  | Seminário
ASP .NET CORE, Angular 2, e Typescript com Scaffolding Yeoman | Seminário
 
O Papel do desenvolvedor Front End
O Papel do desenvolvedor Front EndO Papel do desenvolvedor Front End
O Papel do desenvolvedor Front End
 
SPA com CSharp
SPA com CSharpSPA com CSharp
SPA com CSharp
 
O que você precisa saber para se tornar um dev front-end
O que você precisa saber para se tornar um dev front-endO que você precisa saber para se tornar um dev front-end
O que você precisa saber para se tornar um dev front-end
 
Web Tools Pt B R
Web Tools Pt  B RWeb Tools Pt  B R
Web Tools Pt B R
 
Guga Alves apresenta Gutenberg fase 2 e 3
Guga Alves apresenta Gutenberg fase 2 e 3Guga Alves apresenta Gutenberg fase 2 e 3
Guga Alves apresenta Gutenberg fase 2 e 3
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
 
Netbeans Slides Fy2009 Portugues
Netbeans Slides Fy2009 PortuguesNetbeans Slides Fy2009 Portugues
Netbeans Slides Fy2009 Portugues
 
Phonegap
PhonegapPhonegap
Phonegap
 
Primeiros passos para estruturar uma equipe front-end
Primeiros passos para estruturar uma equipe front-endPrimeiros passos para estruturar uma equipe front-end
Primeiros passos para estruturar uma equipe front-end
 
Desenvolvendo uma App multiplataforma compartilhando 90% do código
Desenvolvendo uma App multiplataforma compartilhando 90% do códigoDesenvolvendo uma App multiplataforma compartilhando 90% do código
Desenvolvendo uma App multiplataforma compartilhando 90% do código
 
Desenvolvendo APPs Com Angular.JS + Cordova
Desenvolvendo APPs Com Angular.JS �+ CordovaDesenvolvendo APPs Com Angular.JS �+ Cordova
Desenvolvendo APPs Com Angular.JS + Cordova
 
Iniciando com .NET no Visual studio 2013
Iniciando com .NET no Visual studio 2013Iniciando com .NET no Visual studio 2013
Iniciando com .NET no Visual studio 2013
 
Win302 daniel semedo_10 motivos para utilizar apache cordova (1)
Win302 daniel semedo_10 motivos para utilizar apache cordova (1)Win302 daniel semedo_10 motivos para utilizar apache cordova (1)
Win302 daniel semedo_10 motivos para utilizar apache cordova (1)
 
Você não precisa de uma sopa de letrinhas para criar web apps
Você não precisa de uma sopa de letrinhas para criar web appsVocê não precisa de uma sopa de letrinhas para criar web apps
Você não precisa de uma sopa de letrinhas para criar web apps
 
PhoneGap - Desenvolvimento mobile multiplataforma - SECCOMP 2014
PhoneGap - Desenvolvimento mobile multiplataforma - SECCOMP 2014PhoneGap - Desenvolvimento mobile multiplataforma - SECCOMP 2014
PhoneGap - Desenvolvimento mobile multiplataforma - SECCOMP 2014
 

Similar to Lapidando o Globo Play

Introdução ao silverlight
Introdução ao silverlightIntrodução ao silverlight
Introdução ao silverlight
Felipe Pocchini
 
Como integrar qualidade aos seus aplicativos através de testes
Como integrar qualidade aos seus aplicativos através de testesComo integrar qualidade aos seus aplicativos através de testes
Como integrar qualidade aos seus aplicativos através de testes
Motorola Mobility - MOTODEV
 
Construindo aplicações ricas com Silverlight
Construindo aplicações ricas com SilverlightConstruindo aplicações ricas com Silverlight
Construindo aplicações ricas com Silverlight
Felipe Pocchini
 

Similar to Lapidando o Globo Play (20)

MVPConf - Azure Functions
MVPConf - Azure FunctionsMVPConf - Azure Functions
MVPConf - Azure Functions
 
Entregando inovação de forma contínua com maior agilidade
Entregando inovação de forma contínua com maior agilidadeEntregando inovação de forma contínua com maior agilidade
Entregando inovação de forma contínua com maior agilidade
 
Apresentação de minha Monografia do curso de Sistema e Mídias Digitais
Apresentação de minha Monografia do curso de Sistema e Mídias DigitaisApresentação de minha Monografia do curso de Sistema e Mídias Digitais
Apresentação de minha Monografia do curso de Sistema e Mídias Digitais
 
Uma breve introdução de play framework
Uma breve introdução de play frameworkUma breve introdução de play framework
Uma breve introdução de play framework
 
Aplicativos hibridos-com-ionic-voce-tambem-pode-comecar-a-desenvolver-agora-t...
Aplicativos hibridos-com-ionic-voce-tambem-pode-comecar-a-desenvolver-agora-t...Aplicativos hibridos-com-ionic-voce-tambem-pode-comecar-a-desenvolver-agora-t...
Aplicativos hibridos-com-ionic-voce-tambem-pode-comecar-a-desenvolver-agora-t...
 
Introdução ao silverlight
Introdução ao silverlightIntrodução ao silverlight
Introdução ao silverlight
 
IBM Mobile Platform: Desenvolvimento de Aplicações Mobile
IBM Mobile Platform: Desenvolvimento de Aplicações MobileIBM Mobile Platform: Desenvolvimento de Aplicações Mobile
IBM Mobile Platform: Desenvolvimento de Aplicações Mobile
 
Como integrar qualidade aos seus aplicativos através de testes
Como integrar qualidade aos seus aplicativos através de testesComo integrar qualidade aos seus aplicativos através de testes
Como integrar qualidade aos seus aplicativos através de testes
 
O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin
O uso de PWA e o futuro do desenvolvimento mobile com React Native e KotlinO uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin
O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin
 
Curso Básico Android - Aula 01
Curso Básico Android - Aula 01Curso Básico Android - Aula 01
Curso Básico Android - Aula 01
 
Construindo aplicações ricas com Silverlight
Construindo aplicações ricas com SilverlightConstruindo aplicações ricas com Silverlight
Construindo aplicações ricas com Silverlight
 
Sb35
Sb35Sb35
Sb35
 
O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin -...
O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin -...O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin -...
O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin -...
 
Worklight exemplo
Worklight exemploWorklight exemplo
Worklight exemplo
 
Automatizando uma app Híbrida
Automatizando uma app HíbridaAutomatizando uma app Híbrida
Automatizando uma app Híbrida
 
Keynote Visual Studio Summit 2016
Keynote Visual Studio Summit 2016Keynote Visual Studio Summit 2016
Keynote Visual Studio Summit 2016
 
Webinar: Introdução à Distribuição Contínua na AWS
Webinar: Introdução à Distribuição Contínua na AWSWebinar: Introdução à Distribuição Contínua na AWS
Webinar: Introdução à Distribuição Contínua na AWS
 
Microsoft Edge (Teched 2015)
Microsoft Edge (Teched 2015)Microsoft Edge (Teched 2015)
Microsoft Edge (Teched 2015)
 
Desenvolvimento HTML5 para Smartphones e Tablets BlackBerry
Desenvolvimento HTML5 para Smartphones e Tablets BlackBerryDesenvolvimento HTML5 para Smartphones e Tablets BlackBerry
Desenvolvimento HTML5 para Smartphones e Tablets BlackBerry
 
Rio Info 2010 - Oficina - Oficina Papel Devigner Novidades HTML5 - Ricardo Pa...
Rio Info 2010 - Oficina - Oficina Papel Devigner Novidades HTML5 - Ricardo Pa...Rio Info 2010 - Oficina - Oficina Papel Devigner Novidades HTML5 - Ricardo Pa...
Rio Info 2010 - Oficina - Oficina Papel Devigner Novidades HTML5 - Ricardo Pa...
 

Recently uploaded

Recently uploaded (8)

Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 

Lapidando o Globo Play