← ← ← 9/3/2022, 12:14:53 AM | Posted by: Felippe Regazio
Neste post não pretendo dar dicas de ferramentas, são dicas que podem ser aplicadas em qualquer ferramenta/server/linguagem. Sem mais delongas, vamos ao assunto:
Procure não trazer informação que não será imediatamente útil no contexto (ou ao menos não tão logo). Se vc precisa trazer o payload de profile financeiro inteiro pra pegar os 4 primeiro digitos do cartão, crie uma rota /get-card-first-digits
Fique esperto/a se os payloads que vc envia no backend não enviando sujeira (dados inseriros pelo ORM/Framework/DB etc).
Limpe aqueles campos __parent, __active, __class e qualquer possivel lixo que ferramentas incluam no retorno (nem sempre isso acontece, mas acontece)
Se vc tem APIs que retornam JSON, utilize um GZIP no server pra comprimi-los (geralmente isso está configurado automaticamente, se não estiver adicione). Lembre-se: serviços de hosting cobram por numero de requests e por tamanho de payload.
Vamos supor que vc cria um snippet/embed que mostra mapas na tela. E toda vez que o user cria um desses vc salva esse snippet em formato string no DB e devolve via request depois.
A tecnica acima tem dois problemas:
Ou seja: se algo pode pode ser processado no front, não salve o resultado inteiro do processamento: salve os parametros, troque parametros via requests e reprocesse no front - te custará menos.
Outro ponto importante: Faça validações no backend (por segurança) e no frontend para economizar requests. A ideia é garantir ao máximo que uma request é feita apenas se todos os dados e requisitos estivem ok.
Pare de ter medo de cache. Configure um bom service-worker no front se vc usa SPA/PWA, aprenda a usar as headers de cache e politicas de cache da sua API. Pare de ficar desligando cache atoa, vc ta rasgando dinheiro. Não precisa correr, mas cuide disso.
Serviços cobram por tamanho de body trafegado via requests tbm. Muitas vezes um token (seja JWT ou de qualquer outra coisa) tem centenas de bytes. Prefira utilizar uma header propria (ou custom) pra isso: Bearer Tokens, X-API-Token, etc
Se são dados estáticos que necessitam filtro + paginação: traga-os sempre filtrados do backend. A regre deve ser
Filtrar no front significa quase sempre enviar dado inutil
Se vc precisa mudar o shape de retornos de requests, otimizar politicas de cache, segurança etc mas seu front conversa com uma API grande e dificil de refatorar, crie um BFF.
Sugestão de leitura: Post - Vamos falar de BFF Patten
Essa nem sempre é uma boa, deve ser analisada com muito cuidado, implica em estrategia, politica de segurança e privacidade, etc etc. Massss por vezes terceirizar o serviço pesado pode ser uma boa (e mais barato). Tem que analisar com cuidado.
Se vc precisa verificar dados em tempo real, trazer grandes montantes de dados ou compor remotamente um retorno de algo, ficar fazendo trocentas requests por min (polling) é má ideia e custa caro em varios contextos.
Para o contexto acima pode caber um estudo das tecnicas apresentadas no titulo e quem sabe até mesmo algumas outras relacionadas a esse tipo de dado.
As dicas que apresentei não são pra serem aplicadas cegamente. São só um norte para uma ANALISE. Muitas vezes uma otimização custa caro pro mantenimento e diminui pouco o custo, transferindo esse mesmo custo pra mantenimento de equipe. Analise com cuidado :)