Maiores causas de problemas - Muito processamento desnecessário - Má codificação - Conteúdo estático - Uso indevido do Node - Aumento de tráfego repentino
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)
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)
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)
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
Voltando às origens - Execução paralela de todos os caminhos possíveis (cuidado!) - Menos complexidade - Menos linhas de código - Repetição de keywords - Dinâmico
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 ● Service Workers ● Pode ser implementado via Infra (NGINX) ou via código (Ex: Catbox-redis)
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
Use mais o V8! Não use Lodash Não use Lodash Não use Lodash Não use Lodash Não use Lodash Não use Lodash 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ão use jQuery Não use Underscore Não use jQuery
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
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/