o que vai no front, o que vai no back?
esses dias me deparei com um certo questionamento enquanto desenvolvia um projeto de estudo, se trata de um gerenciador de finanças pessoais, bem simples, que de início possui somente a finalidade de registrar os seus gastos. acontece que eu precisava adicionar três abas para mostrar os gastos separados por tipo: a primeira aba mostra todos os gastos, a segunda mostra as que foram classificadas como fixo e a terceira mostra as que foram classificadas como variável.
a partir daí comecei a ter uma discussão interna: onde eu iria escrever essa lógica?
no início pensei em escrever no front, tendo em vista que, uma vez já feito a requisição no servidor e com os dados no cliente, a única coisa que eu precisaria fazer seria criar uma função que separasse os gastos de acordo com o tipo. mas aí começou a surgir as dúvidas, já que se tratava de uma regra de negócio, não seria melhor adicionar essa lógica no back? deixar o front com as manipulações de exibição? além disso, manipular elementos no DOM é bem complicado e se não for bem feito, pode gerar linhas e linhas de código. vale ressaltar também que precisamos levar em consideração variáveis como o público que vai usar o app e os dispositivos nas quais ele vai rodar, pois salvar os dados no cache do cliente seria um tiro no pé já que consumiria espaço e processamento do computador do usuário. o pensamento sempre deve ser em entregar uma solução performática e otimizada para os usuários, e ficar alocando espaço na memória do cliente talvez não seja a melhor opção.
obviamente, existe o outro lado em que encher o back de endpoints pode te causar uma dor de cabeça devido a perda de clareza, duplicação de código, escabilidade ruim, problemas de segurança e por aí vai. o bom é utilizar endpoints genéricos e parâmetros de query (algo que, inclusive, preciso corrigir no meu código). além disso, disparar várias requisições para o servidor pode ser um prejuízo financeiro dependendo do serviço utilizado (amazon, azure, google).
por isso é essencial ter uma visão holística do projeto e um planejamento bem estruturado, os primeiros passos são fundamentais para as decisões que serão tomadas posteriormente.
e você, o que acha disso? quais soluções você tomaria em um projeto de grande escala e uma de pequena escala? se faltou alguma coisa, algo para abordar, comenta aí e vamos trocar ideia!