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
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
運用エージェントは "作る" から "育てる" へ - 記憶と自己進化の3層設計パターン / self-evolving-agents-three-layer-agent-design
gawa
12
3.6k
TSKaigi Night Talks 2026_TypeScriptでサプライチェーンの整合性を型に閉じ込める
geekplus_tech
0
340
The ROI of Quarkus for Spring Boot Applications
hollycummins
0
110
ローカルLLMでどこまでコードが書けるか -拡張版 / How much code can be written on a local LLM Extended
kishida
10
3.5k
TAKTでAI駆動開発の品質を設計する
j5ik2o
6
1.2k
Composerを使ったサプライチェーン攻撃の様子を眺めてみる #phpstudy
o0h
PRO
2
240
「AIで開発し、AIを届ける」をEvalでつなぐ 〜AIネイティブに始めるプロダクト開発の実践〜 / Connecting "Develop with AI, deliver AI" with Eval
rkaga
4
5k
依存関係から依存物へ―Dependencyという言葉の歴史をひも解く
j_lee
0
110
Semantic Version 単位で戦略を柔軟に変えて、パッケージアップデートを自動化する
daitasu
0
220
Javaの型とAI時代に型が大事な理由 / java types and type in AI era
kishida
2
130
肥大化するレガシーコードに立ち向かうためのインターフェース分離と依存の逆転 / JJUG CCC 2026 Spring
hirokunimaeta
0
540
正しくソフトウェアを作る、前提を疑うための認知の視点 / doubt-premise
minodriven
21
6.5k
Featured
See All Featured
Paper Plane
katiecoart
PRO
1
51k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
410
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
How GitHub (no longer) Works
holman
316
150k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
160
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
270
Measuring & Analyzing Core Web Vitals
bluesmoon
9
860
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.4k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
160
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]