Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Uma introdução em perfomance de Aplicações Web ...
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Cadu Ribeiro
January 05, 2023
Programming
55
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Uma introdução em perfomance de Aplicações Web para impactar positivamente a vida de seus usuários
Cadu Ribeiro
January 05, 2023
More Decks by Cadu Ribeiro
See All by Cadu Ribeiro
DevContainers: Facilitando o Setup de ambientes de desenvolvimento
duduribeiro
0
52
Testes Automatizados para Web - Uma Introdução
duduribeiro
0
79
Vim inside VSCode
duduribeiro
0
39
Continuous Delivery - On the real world
duduribeiro
0
120
An Introduction to Automated Web Testing
duduribeiro
3
89
Continuous Delivery
duduribeiro
0
72
Agility Through Continuous Delivery
duduribeiro
0
61
Hello Ruby
duduribeiro
2
95
Other Decks in Programming
See All in Programming
さぁV100、メモリをお食べ・・・
nilpe
0
140
エージェンティックRAGにAWSで入門しよう!
har1101
8
1.4k
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
0
220
These Five Tricks Can Make Your Apps Greener, Cheaper, & Nicer
hollycummins
0
280
Composerを使ったサプライチェーン攻撃の様子を眺めてみる #phpstudy
o0h
PRO
2
240
The NotImplementedError Problem in Ruby
koic
1
730
決定論的オーケストレーションの設計と実装 / Design and Implementation of Deterministic Orchestration
nrslib
3
1.3k
Go1.27で導入されるジェネリクスメソッドでできること
mackee
0
110
並列実装の現場、2ヶ月間実務でAIを使い倒したAIもPCも私も限界が近い
ming_ayami
0
130
軽量Java基盤の設計 DIコンテナに頼らない、長期保守と1秒起動の実現 JJUG CCC 2026 Spring
macha64
0
500
「なぜそう決めたのか」を残し続ける仕組み ― Notion AI カスタムエージェント × Slack連携による設計判断の自動記録 - NIKKEI Tech Talk #47
niftycorp
PRO
0
140
AI時代のUIはどこへ行く?その2!
yusukebe
21
7.1k
Featured
See All Featured
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
200
Code Review Best Practice
trishagee
74
20k
SEO for Brand Visibility & Recognition
aleyda
0
4.6k
ラッコキーワード サービス紹介資料
rakko
1
3.6M
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.5k
Bash Introduction
62gerente
615
220k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.3k
Building AI with AI
inesmontani
PRO
1
1.1k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Faster Mobile Websites
deanohume
310
31k
Transcript
Uma introdução em perfomance de Aplicações Web para impactar positivamente
a vida de seus usuários Cadu Ribeiro
None
Cadu Ribeiro @duduribeiro
Cadu Ribeiro https://cadu.dev @duduribeiro
https://opensanca.com.br
http: / / meetup.com/pt-BR/opensanca/
None
None
📸
Quais problemas uma aplicação lenta pode trazer?
None
None
47% Dos usuarios esperam que o site carregue em até
2 segundos Robert B. Miller, “Response Time in Man–Computer Conversational Transactions,” 1968.
Tempo é Dinheiro!
-1% em vendas A cada 100ms no tempo de carregamento
do website Fonte
+2% em vendas A cada 1 seg reduzido no tempo
de carregamento do website Fonte
Importância da performance
Empatia
58% dos brasileiros têm acesso à internet apenas pelo celular
Fonte: Pesquisa Sobre o Uso das Tecnologias de Informação e Comunicação nos Domicílios Brasileiros 2019 - CGI.br
Famílias de baixa renda tem banda larga móvel como principal
forma de conexão Fonte: Pesquisa Sobre o Uso das Tecnologias de Informação e Comunicação nos Domicílios Brasileiros 2019 - CGI.br
None
None
Melhores resultados
53% Dos usuários abandonam o site se ele demora mais
que 3 segundos para carregar Fonte
O que podemos fazer? Bora otimizar a aplicação?
80 / 20
80% da lentidão vem de 20% do código
80% do uso de memória vem de 20% do código
80% da carga do site vem de 20% dos usuários
None
Eu não vou otimizar nada na minha aplicação até as
minhas métricas pedirem
Não tente adivinhar
Monitore! Melhore se necessário
Use alguma ferramenta de APM para te auxiliar * APM:
Application Performance Monitor
None
None
None
Use alguma ferramenta de RUM * RUM: Real User Monitoring
None
None
None
RUM APM vs
APM
APM
APM
RUM
Problemas comuns?
Latência e RTT
Latência
Latência
Latência
RTT
RTT
RTT
RTT
RTT
RTT
Nova Iorque -> Sydney +/- 16.000 km
53 milissegundos Na velocidade da luz
Nova Iorque Sydney
80 milissegundos Nova Iorque Sydney
Nova Iorque Sydney
Nova Iorque Sydney 160 milissegundos
200~300 milissegundos
Coloque seus servidores o mais perto possível dos seus usuários
Mas 200ms é muito rápido!
None
https://meusite.com.br/
https://meusite.com.br/
https://meusite.com.br/
https://meusite.com.br/
https://meusite.com.br/
None
Parsing
Recursos externos
None
Códigos JavaScript
Códigos JavaScript Códigos CSS
None
None
None
None
None
None
None
None
…. 15x
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
https://www.linkedin.com/pulse/why-does-your-browser-limit-number-concurrent-ishwar-rimal/
Utilize menos arquivos para seus recursos
{ <script src="application.js"> </ script>
{ <link rel="stylesheet" media="all" href="application.js"> </ link>
None
Troque imagens simples por SVG
None
None
None
None
None
Postergue o carregamento dos scripts
None
None
Fonte <script src=“application.js”> </ script>
Fonte <script async src=“application.js”> </ script>
Fonte <script defer src=“application.js”> </ script>
None
Use async e defer sempre que possível
Coloque os recursos perto do usuário com CDNs
Sem CDN Servidor
https://meusite.com.br/ Sem CDN Servidor
https://meusite.com.br/ application.js Sem CDN Servidor
https://meusite.com.br/ application.js application.css Sem CDN Servidor
Com CDN Servidor CDN
https://meusite.com.br/ Com CDN Servidor CDN
https://meusite.com.br/ application.js Com CDN Servidor CDN
https://meusite.com.br/ application.js application.css Com CDN Servidor CDN
None
None
None
Com CDN Servidor CDN
https://meusite.com.br/ Com CDN Servidor CDN
https://meusite.com.br/ application.js Com CDN Servidor CDN
https://meusite.com.br/ application.js application.css Com CDN Servidor CDN
None
Use CDN para entregar seus assets
Arquivos grandes
None
None
Comprima seus assets com gzip no servidor ou na CDN
Case
None
None
None
None
None
12 servidores (dynos) 3 app servers c/ 3 threads
6300 usuários
6300 usuários no período de 1 hora
None
None
3000 RPM +/- no pico
App instances = Avg reqs/sec * Avg response time /
sec
App instances = 50 * 5 = 250
Servers = 250 / 9 = ~ 27 *9
= instâncias / server
Servers = 250 / 9 = ~ 27 *9
= instâncias / server
Migração para um banco melhor!
Conclusão
None
None
None
Não existe bala de prata
None
Sua empresa pode estar perdendo dinheiro
Coloque seus servidores o mais perto possível dos seus usuários
Utilize menos arquivos para seus recursos
Troque imagens simples por SVG
Use async e defer sempre que possível
Comprima seus assets com gzip no servidor ou na CDN
None
Cadu Ribeiro
Cadu Ribeiro https://cadu.dev
Cadu Ribeiro https://cadu.dev
[email protected]