Desafios do backend (qual sua responsabilidade?)
Imagine uma aplicação web que tem como framework de frontend o Next.js. Além disso, este aplicativo precisa ter um banco de dados para lidar com usuários e algumas outras coisas. Porém, o desafio vem a seguir:
Esta aplicação irá lidar com muitos dados, manipulação e cálculos físicos. Eu queria saber se o backend que lidaria com essa parte dos dados. Por exemplo, o usuário define alguns valores em um formulário e clica em "Gerar gráfico". Então, esses dados devem ir pra algum serviço para ser gerado um dataframe completo com os dados gerados por um cálculo. Essa responsabilidade deveria ser do framework backend?
Pergunto isso pois a minha empresa tem muito mais dev javascript e queríamos construir este app com o Next.js no back (ou Express), mas vejo que esse tipo de manipulação de dados e geração de gráficos tem muito mais suporte no Python e os engenheiros da empresa sabem programar com bibliotecas com Pandas, etc. Qual seria a abordagem ideal? Teria como criar um serviço a parte só para esses dados que conversaria com o backend e o frontend?
Acredito que essa reponsabilidade de reendenizar o gráfico deve ser totalmente do client (Front-end), o Back-end somente recebe a requisição como por exemplo um http://api/v1.0/generate-graph
e retorna a lista de dados que deve ser reendenizada no gráfico.
Exemplo:
[
{ "nome": "Categoria A", "valor": 25 },
{ "nome": "Categoria B", "valor": 40 },
{ "nome": "Categoria C", "valor": 15 },
{ "nome": "Categoria D", "valor": 30 }
]
Pelo menos eu faria isso, afim de não sobrecarregar a api com tarefas que claramente podem se executadas pelo front-end.
Nesse caso não poderia ser utilizado APIs para manipular os dados enviados através do formulário? Por exemplo, daria para enviar os dados do formulário para uma API em Python ou alguma outra linguagem backend que manipule os dados e retorne as informações necessárias para que o frontend gere o gráfico, assim os dados poderiam ser manipulados em python e retornados para o frontend que você utiliza.
Vamos por partes...
Parte 1: Se a origem dos dados vem dos engenheiros que programam em Python com Pandas e cálculos em C++, está claro que vai ter que ter Python e C++. Esssa parte é bem tranquila, pois é bem fácil o Python usar bibliotecas compiladas em C++. Então dá para pegar o resultados dos cálculos e trazer para o Python.
Parte 2: Tendo as funções que retornam os resultados dos cálculos em Python, é preciso exportar de alguma forma essa informação, então algum dev vai ter que fazer um app em Python expondo os resultados. Se for via API, pode ser com FastAPI, por exemplo. É bem fácil também.
Aqui uma dica: Como você mesmo falou, o Python tem bastante bibliotecas para manipulação de dados e geração de gráficos, portando essa API já pode retornar o HTML pronto do gráfico.
Parte 3: Aqui é uma decisão estratégica da empresa. A empresa tem que decidir se quer: 1 - Desenvolver um backend em Javascript/Typescript, já que é o que os devs sabem mais, e consumir os dados da API Python, acessar banco de dados e todo o resto. Essa opção eliminaria a necessidade de treinar todos os devs em Python. Um só já daria conta de fazer a API Python. ou 2 - Treinar seus devs e desenvolver todo backend em Python, já que uma parte precisa ser em Python. Essa opção eliminaria a necessidade de manter 2 aplicações separadas.