SlideShare uma empresa Scribd logo
1 de 68
Como desenvolver com um 
sistema com um front-end 
colossal? 
https://cdn3.iconfinder.com/data/icons/picons-social/ 
57/03-twitter-256.png 
Mozart Diniz 
@mozartdiniz 
mozartdiniz@sagaranatech.com
O que é um sistema 
com um front-end 
colossal?
Estamos falando de algo 
entorno de: 
68.202 Linhas de código 
544 Arquivos JavaScript 
4MB De arquivos minificados
Como se chega a 
isso?
Dia 1
• Interface amigável e sofisticada 
(nada de sistema web parecido 
com Desktop) 
A definição do layout das telas 
deve ser armazenada no banco 
Muitos maps 
Server como serviço REST
Interface amigável e sofisticada 
(nada de sistema web parecido com 
Desktop) 
https://cdn3.iconfinder.com/data/icons/musthave/256/Delete.png
A definição do layout das telas 
deve ser armazenada no banco 
fronhtttps://cdn3.iconfinder.com/data/icons/musthave/256/DSeletee.prnvger 
Trate de gerar seus 
próprios HTMLs
Bem, estamos em Janeiro de 
2012, que framework eu deveria 
escolher? 
Backbone.js Angular.js knockout.js Ember.js 
https://cdn3.iconfinder.com/data/icons/musthave/256/Delete.png
Ok, teremos que montar nosso HTML com 
JavaScript, as views do Backbone.js podem 
nos ajudar com isso!
Fornecia as abas, os 
pickers, draggable, 
sortable, tudo que 
precisamos! 
Fornecia um sistema 
de layout de grid para 
o formulário e vários 
componentes 
bonitinhos ;)
• Desenvolveu-se o framework 
Monet para gerar e administrar 
toda a interface. 
• Para as telas mais simples de 
cadastro criou-se um arquivo de 
crud com o model, o collection e 
os views do backbone. 
• Para as outras uma arquivo pra 
cada função. 
• Para cada widget visual ou 
fragmento componente do 
formulário uma template do 
backbone
• Para todos os outros problemas 
JQUERY! 
• Se precisarmos validar o formulário? 
jQuery! 
• Se precisarmos traduzir 
os textos? Roda um jQuery nele ai! 
• Eu preciso colocar umas coisas no 
mapa. Que tal um jQuery?
Nada pode dar errado!
Dia 240
45 Arquivos para as telas de crud. 
+ 27 Collections do backbone. 
+ 32 Models do backbone. 
+ 48 Arquivos de view. 
+ todas as libs que utilizamos! 
Mais de 180 arquivos de JavaScript
Demora uma vida pra 
carregar!
Os templates se tornaram 
uma praga! 
193 templates diferentes
templates
Memory Leaks
Limite de CSS
Impossível de testar o 
sistema tornou-se frágil!
Dia 390
Módulos 
Módulo
Módulos
Módulos
Evite o DOM 
Antes 
// esse código tem caráter meramente ilustrativo ;)
Evite o DOM 
Agora 
// esse código tem caráter meramente ilustrativo ;)
Isso é tão legal 
Que nós fizemos vários :D
Precisamos otimizar 
as coisas por aqui.
Mas antes, precisamos nos 
separar do server! 
Server 
Front-end Monet.js 
Java JS JS 
git submodule 
git submodule
• Minifica 
• Ofusca 
• Karma 
• Deploy
E a qualidade?
Ok, o código está lindo, 
mas ele funciona?
Teste unitário é ótimo, 
mas não resolve tudo.
Automatiza os 
testes de aceitação
Seus problemas acabaram! 
#SQN
A memória continua crescendo 
indefinidamente!
GC não limpa os nós que possuem 
listeners.
Performance importa!
[{coord}, {coord}, {coord}] 
• Calcula o ângulo 
• Pinta a seta 
• Adicionar os listeners 
• Adiciona ao mapa 
Mais de 2 mil vezes
A culpa deve ser do jQuery 
Trocar pelo FOR nativo! 
28x mais rápido.
Corta o suporte ao 
IE9 e faz com 
web workers! 
Worker() 
• Calcula o ângulo 
• Pinta a seta 
• Adicionar os 
listeners 
Adiciona ao 
mapa, um 
a um.
DOM não é thread safe
Reflows & Repaints a 
cada coordenada
Desenhe seu próprio SVG 
e só no fim, adicione ao mapa.
Mesmo minificado, 
ofuscado e zipado o 
sistema ainda demora 
muito para carregar!
Requisições Ajax 
Tiles de mapas 
Arquivos de imagens 
(layout) 
50 
36 
40
Agora sim :D
Dúvidas?
Estamos contratando! 
jobs@greenmile.com
Obrigado! 
@mozartdiniz

Mais conteúdo relacionado

Mais procurados

Uma visão rápida sobre Nodejs
Uma visão rápida sobre NodejsUma visão rápida sobre Nodejs
Uma visão rápida sobre NodejsRafael Soares
 
Esse cara é o grunt
Esse cara é o gruntEsse cara é o grunt
Esse cara é o gruntAlmir Filho
 
O que é nodejs, cases e vantagens
O que é nodejs, cases e vantagensO que é nodejs, cases e vantagens
O que é nodejs, cases e vantagensRodrigo Matheus
 
Lightning Talk: Webdev who?
Lightning Talk: Webdev who?Lightning Talk: Webdev who?
Lightning Talk: Webdev who?Leandro Nunes
 
MongoDB: Prós, Contras e Showcases.
MongoDB: Prós, Contras e Showcases.MongoDB: Prós, Contras e Showcases.
MongoDB: Prós, Contras e Showcases.Leonardo Quevedo
 
Mean Stack - Aplicações Web Modernas com MEAN
Mean Stack - Aplicações Web Modernas com MEANMean Stack - Aplicações Web Modernas com MEAN
Mean Stack - Aplicações Web Modernas com MEANJoão Gabriel Lima
 
Nodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terNodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terEmerson Macedo
 
MEAN Full Stack JavaScript - TaSafoConf 2015
MEAN Full Stack JavaScript - TaSafoConf 2015MEAN Full Stack JavaScript - TaSafoConf 2015
MEAN Full Stack JavaScript - TaSafoConf 2015Kaio Valente
 
Desenvolvimento Ágil com Ruby on Rails
Desenvolvimento Ágil com Ruby on RailsDesenvolvimento Ágil com Ruby on Rails
Desenvolvimento Ágil com Ruby on RailsRogerio Chaves
 

Mais procurados (14)

Uma visão rápida sobre Nodejs
Uma visão rápida sobre NodejsUma visão rápida sobre Nodejs
Uma visão rápida sobre Nodejs
 
Javascript nos dias de hoje
Javascript nos dias de hojeJavascript nos dias de hoje
Javascript nos dias de hoje
 
Groovy e Grails 2
Groovy e Grails 2Groovy e Grails 2
Groovy e Grails 2
 
Esse cara é o grunt
Esse cara é o gruntEsse cara é o grunt
Esse cara é o grunt
 
O que é nodejs, cases e vantagens
O que é nodejs, cases e vantagensO que é nodejs, cases e vantagens
O que é nodejs, cases e vantagens
 
Lightning Talk: Webdev who?
Lightning Talk: Webdev who?Lightning Talk: Webdev who?
Lightning Talk: Webdev who?
 
MongoDB: Prós, Contras e Showcases.
MongoDB: Prós, Contras e Showcases.MongoDB: Prós, Contras e Showcases.
MongoDB: Prós, Contras e Showcases.
 
Esse cara é o grunt
Esse cara é o gruntEsse cara é o grunt
Esse cara é o grunt
 
ASP.NET MVC Core
ASP.NET MVC CoreASP.NET MVC Core
ASP.NET MVC Core
 
Performance Web com ASP.NET MVC
Performance Web com ASP.NET MVCPerformance Web com ASP.NET MVC
Performance Web com ASP.NET MVC
 
Mean Stack - Aplicações Web Modernas com MEAN
Mean Stack - Aplicações Web Modernas com MEANMean Stack - Aplicações Web Modernas com MEAN
Mean Stack - Aplicações Web Modernas com MEAN
 
Nodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terNodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis ter
 
MEAN Full Stack JavaScript - TaSafoConf 2015
MEAN Full Stack JavaScript - TaSafoConf 2015MEAN Full Stack JavaScript - TaSafoConf 2015
MEAN Full Stack JavaScript - TaSafoConf 2015
 
Desenvolvimento Ágil com Ruby on Rails
Desenvolvimento Ágil com Ruby on RailsDesenvolvimento Ágil com Ruby on Rails
Desenvolvimento Ágil com Ruby on Rails
 

Semelhante a Como desenvolver com um sistema com um front-end colossal?

Pangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud PlatformPangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud PlatformAndré Paulovich
 
Planejamento de Capacidade - Técnicas e Ferramentas
Planejamento de Capacidade - Técnicas e FerramentasPlanejamento de Capacidade - Técnicas e Ferramentas
Planejamento de Capacidade - Técnicas e FerramentasRodrigo Campos
 
SonarQube
SonarQubeSonarQube
SonarQubeCDS
 
2019 - GUOB MeetUp - Journey to Cloud and DBA Career
2019 - GUOB MeetUp - Journey to Cloud and DBA Career2019 - GUOB MeetUp - Journey to Cloud and DBA Career
2019 - GUOB MeetUp - Journey to Cloud and DBA CareerMarcus Vinicius Miguel Pedro
 
Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.Valmir Justo
 
Migrations com Entity Framework Core
Migrations com Entity Framework CoreMigrations com Entity Framework Core
Migrations com Entity Framework CoreCaio Lorensetti
 
Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011Flávio Lisboa
 
Três anos de Scala em Produção: desafios, aprendizados e dores de cabeça
Três anos de Scala em Produção: desafios, aprendizados e dores de cabeçaTrês anos de Scala em Produção: desafios, aprendizados e dores de cabeça
Três anos de Scala em Produção: desafios, aprendizados e dores de cabeçaFelipe Hummel
 
Design Patterns on Rails
Design Patterns on RailsDesign Patterns on Rails
Design Patterns on Railstchandy
 
TDC 2017 - Borg até o Prometheus: Site Reliability Engineering
TDC 2017 - Borg até o Prometheus: Site Reliability EngineeringTDC 2017 - Borg até o Prometheus: Site Reliability Engineering
TDC 2017 - Borg até o Prometheus: Site Reliability EngineeringFelipe Klerk Signorini
 
Docker - minicurso utfpr 2017
Docker -  minicurso utfpr 2017Docker -  minicurso utfpr 2017
Docker - minicurso utfpr 2017Fabio Janiszevski
 
Primeiros passos com o framework Sencha Ext JS
Primeiros passos com o framework Sencha Ext JSPrimeiros passos com o framework Sencha Ext JS
Primeiros passos com o framework Sencha Ext JSWemerson Januario
 
Introdução ao Windows Azure - Sessão 1 (mais teórica)
Introdução ao Windows Azure - Sessão 1 (mais teórica)Introdução ao Windows Azure - Sessão 1 (mais teórica)
Introdução ao Windows Azure - Sessão 1 (mais teórica)Giovanni Bassi
 
Apresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvemApresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvemRodrigo Valerio
 
WordCampBH 2015 - O mínimo essencial para o bom desempenho do seu projeto em ...
WordCampBH 2015 - O mínimo essencial para o bom desempenho do seu projeto em ...WordCampBH 2015 - O mínimo essencial para o bom desempenho do seu projeto em ...
WordCampBH 2015 - O mínimo essencial para o bom desempenho do seu projeto em ...Sergio Costa
 
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...iMasters
 
Microsoft Edge (Teched 2015)
Microsoft Edge (Teched 2015)Microsoft Edge (Teched 2015)
Microsoft Edge (Teched 2015)Fabrício Catae
 

Semelhante a Como desenvolver com um sistema com um front-end colossal? (20)

Pangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud PlatformPangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud Platform
 
Planejamento de Capacidade - Técnicas e Ferramentas
Planejamento de Capacidade - Técnicas e FerramentasPlanejamento de Capacidade - Técnicas e Ferramentas
Planejamento de Capacidade - Técnicas e Ferramentas
 
SonarQube
SonarQubeSonarQube
SonarQube
 
2019 - GUOB MeetUp - Journey to Cloud and DBA Career
2019 - GUOB MeetUp - Journey to Cloud and DBA Career2019 - GUOB MeetUp - Journey to Cloud and DBA Career
2019 - GUOB MeetUp - Journey to Cloud and DBA Career
 
Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.
 
Internet sem drama
Internet sem dramaInternet sem drama
Internet sem drama
 
Migrations com Entity Framework Core
Migrations com Entity Framework CoreMigrations com Entity Framework Core
Migrations com Entity Framework Core
 
Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011
 
Ruby on Rails for beginners 2.0
Ruby on Rails for beginners 2.0Ruby on Rails for beginners 2.0
Ruby on Rails for beginners 2.0
 
Três anos de Scala em Produção: desafios, aprendizados e dores de cabeça
Três anos de Scala em Produção: desafios, aprendizados e dores de cabeçaTrês anos de Scala em Produção: desafios, aprendizados e dores de cabeça
Três anos de Scala em Produção: desafios, aprendizados e dores de cabeça
 
Design Patterns on Rails
Design Patterns on RailsDesign Patterns on Rails
Design Patterns on Rails
 
Introdução Play framework
Introdução Play frameworkIntrodução Play framework
Introdução Play framework
 
TDC 2017 - Borg até o Prometheus: Site Reliability Engineering
TDC 2017 - Borg até o Prometheus: Site Reliability EngineeringTDC 2017 - Borg até o Prometheus: Site Reliability Engineering
TDC 2017 - Borg até o Prometheus: Site Reliability Engineering
 
Docker - minicurso utfpr 2017
Docker -  minicurso utfpr 2017Docker -  minicurso utfpr 2017
Docker - minicurso utfpr 2017
 
Primeiros passos com o framework Sencha Ext JS
Primeiros passos com o framework Sencha Ext JSPrimeiros passos com o framework Sencha Ext JS
Primeiros passos com o framework Sencha Ext JS
 
Introdução ao Windows Azure - Sessão 1 (mais teórica)
Introdução ao Windows Azure - Sessão 1 (mais teórica)Introdução ao Windows Azure - Sessão 1 (mais teórica)
Introdução ao Windows Azure - Sessão 1 (mais teórica)
 
Apresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvemApresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvem
 
WordCampBH 2015 - O mínimo essencial para o bom desempenho do seu projeto em ...
WordCampBH 2015 - O mínimo essencial para o bom desempenho do seu projeto em ...WordCampBH 2015 - O mínimo essencial para o bom desempenho do seu projeto em ...
WordCampBH 2015 - O mínimo essencial para o bom desempenho do seu projeto em ...
 
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...
 
Microsoft Edge (Teched 2015)
Microsoft Edge (Teched 2015)Microsoft Edge (Teched 2015)
Microsoft Edge (Teched 2015)
 

Como desenvolver com um sistema com um front-end colossal?