20. A anatomia de uma API
Começa assim
Termina assim
“Ajeita ali só”
21. Maiores causas de problemas
- Muito processamento desnecessário
- Má codificação
- Conteúdo estático
- Uso indevido do Node
- Aumento de tráfego repentino
22. Maiores causas de problemas
- Muito processamento desnecessário
- Má codificação
- Conteúdo estático
- Uso indevido do Node
- Aumento de tráfego repentino (Event Loop)
23. Maiores causas de problemas
- Muito processamento desnecessário
- Má codificação
- Conteúdo estático
- Uso indevido do Node
- Aumento de tráfego repentino (C10K)
27. Se der, cacheia, senão,
também
● Cachear arquivos estáticos
● Cachear chamadas de API
○ Por rota
○ Por hash de IP
● Cachear retornos de DB
● Cachear arquivos gerados por SSR
● Pode ser implementado via Infra (NGINX)
ou via código (Ex: Catbox-redis)
40. Você FAZ
diferença
- Código mais leve roda
melhor
- Tomar cuidado com
consumo de memória
- Evitar funções complexas
(principalmente loops)
- Regra das 80 colunas
- Use menos libs
47. Voltando às
origens
- Execução paralela de todos
os caminhos possíveis
(cuidado!)
- Consome menos memória
- Menos complexidade
- Menos linhas de código
- Repetição de keywords
- Dinâmico
56. Se der, cacheia, senão,
também²
- Cachear arquivos estáticos
- Cachear chamadas de API
- Por rota
- Por hash
- Cachear retornos de DB
- Cachear arquivos gerados por SSR
- Pode ser implementado via Infra (NGINX) ou via
código (Ex: Catbox-redis)
58. Será que vale?
Processamento muito intenso do
lado do servidor
Bom para páginas pequenas
Distribua o processamento no
cliente
É uma boa prática dependendo
do caso
63. Use mais o V8!
Não use Lodash
Não use Lodash
Não use Lodash
Não
use
Lodash
NãouseLodash
NãouseLodash
Não use Underscore
Não use Underscore
Não
use
Underscore
Não
use
Underscore
Não use jQuery
Não
use
jQuery
NãousejQuery
NãouseUnderscore
Não
use
jQuery
70. O que é um e o que é outro?
Worker
- Sempre ativo na máquina
- Roda por eventos disparados de
fora
- Consome mais memória (fica
ligado direto)
- Mais propenso a memory leak
Job
- Fica inativo
- Roda apenas em horários ou
intervalos determinados
(CronJob)
- Consome memória em picos
72. Yes, we have GC
- Node tem um garbage
collector
- Funciona após 1.4Gb de
memória ocupada (Heap
Limit do V8)
- Dividido em Old Space e
New Space (???)
https://blog.risingstack.com/finding-a-memory-leak-in-node-js/
73. Garbage Collection in depth
Deletamos um obj. GC Roda
Perdeu Root = Memória não usada
New Space Old Space
74. Garbage Collection in depth
Deletamos um obj. GC Roda
Perdeu Root = Memória não usada
New Space Old Space
MUITO CUIDADO